Docker——创建本地镜像


所谓的容器实际上就是父镜像的基础上创建了一个可读写的文件系统层级,所有的修改操作都在这个文件层级上进行,而父镜像并未受影响。
创建本地镜像有两种不同的方式,commit和Dockerfile

创建容器

根据本地镜像创建一个容器在这里插入图片描述
命令解释:

我这里通过VirtualBox 设置了自动挂载我win的 D:\docker\dockerShare 详细可以查看Docker——VirtualBox设置Docker

  1. 首先执行 docker images 查看本地镜像。
  2. 根据本地镜像 nginx 创建一个名为 nginx 的容器,并启动。
  3. 将宿主机中的一个名为index.html的文件拷贝到容器中。
  4. 访问容器,发现改变已经生效。
  5. 接下来在重新创建一个容器,名为nginx2,并启动。
  6. 访问nginx2容器,发现其默认页面并未发生改变。

Commit创建本地镜像

根据刚刚创建的第一个容器,创建一个本地镜像,如下:
在这里插入图片描述

命令解释

  1. -m 是对创建该镜像的一个简单描述。
  2. -author 表示该镜像的作者。
  3. b1d04bcf4f74 表示创建镜像所依据容器的id。
  4. jacob_yu/nignx 表示仓库名, jacob_yu 是命名空间,nginx 是镜像名。
  5. v1 表示镜像的tag
  6. 创建完成后,通过 docker images 命令查看镜像可以看到刚刚创建的镜像
  7. 通过刚刚创建镜像运行容器,发现nginx默认首页已经更改。

Dockerfile创建镜像

Dockerfile就是一个普通的文本文件,其内包含了一条条指令,每条指令都会构建一层。先来看一个简单的例子。

  1. 创建一个Dockerfile 和 hello.html: touch Dockerfile
    在这里插入图片描述在这里插入图片描述
  2. 编辑Dockerfile: vi Dockerfile
    在这里插入图片描述
  3. cat Dockerfile
    在这里插入图片描述

命令解释

  1. FROM nginx 表示该镜像的构建,以已有的nginx镜像为基础,在该镜像基础上构建。
  2. MAINTAINER 用来声明创建镜像的作者信息以及邮箱信息
  3. RUN 指令用来修改镜像。该指令可以用来安装程序、安装库以及配置应用程序等,一个RUN指令会在当前镜像的基础上创建一个新的镜像层,接下来的指令将在这个新的镜像层上执行,RUN语句有两种不同的形式:shell和exec格式。本案例采用的是shell格式,shell格式就像linux命令一样,exec格式则是一个JSON数组,将命令放在数组中即可。在使用RUN命令时,适当的时候可以将多个RUN命令合并成一个,以避免创建镜像时创建过多的层。
  4. COPY语句则是将镜像上下文中的hello.html文件拷贝到镜像中。
  1. 文件创建完,执行如下命令进行构建:
    在这里插入图片描述

命令解释

  1. -t 用来指定镜像的命名空间,仓库名以及tag等信息
  2. 最后面的 . 是用来指定镜像构建的上下文

小贴士
Docker采用了C/S构架,分为Docker客户端(Docker可执行程序)与Docker守护进程,Docker客户端通过命令行和API形式与Docker守护进程通信,Docker守护进程则提供Docker服务。因此,我们操作的各种docker命令实际上都是由docker客户端发送到docker守护进程上去执行的。我们在构建一个镜像时,不可避免的需要将一些本地文件拷贝到镜像中去,例如上文提到的COPY命令,用户在构建镜像时需要制定构建镜像的上下文路径(前文中的 . ),docker build 获得这个路径后,会将改路径下的所有内容打包,然后上传给Docker引擎。

  1. 镜像构建成功后,可以通过 docker images 命令查看,如下:
    在这里插入图片描述
  2. 然后创建并启动容器,就可以看到之前的创建镜像时的默认index.html和copy的hello.html都生效了
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值