读书笔记-第一本Docker书:创建镜像

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改:

  1. 从已经创建的容器中更新镜像,并且提交这个镜像
  2. 使用 Dockerfile 指令来创建一个新的镜像

commit命令

使用镜像来创建一个容器$ docker run -t -i ubuntu:15.10 /bin/bash
在运行的容器内使用 apt-get update 命令进行更新。在完成操作之后,输入 exit 命令来退出这个容器。此时 ID 为 e218edb10161 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。

$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2

各个参数说明:
-m: 提交的描述信息 -a: 指定镜像作者
e218edb10161:容器 ID runoob/ubuntu:v2: 指定要创建的目标镜像名
我们可以使用 docker images 命令来查看我们的新镜像 runoob/ubuntu:v2:
在这里插入图片描述
使用我们的新镜像 runoob/ubuntu 来启动一个容器 $ docker run -t -i runoob/ubuntu:v2 /bin/bash

build命令

使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
在这里插入图片描述
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
在这里插入图片描述
参数说明:-t :指定要创建的目标镜像名 . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec
在这里插入图片描述
使用新的镜像来创建容器 docker run -t -i runoob/centos:6.7 /bin/bash

Dockerfile使用基本的基于DSL(Domain Specific Language)语法的指令来构建一个Docker镜像。每条指令都会创建一个新的镜像层并对镜像进行提交。Docker大体上按照如下流程执行Dockerfile中的指令。

  • Docker从基础镜像运行一个容器
  • 执行一条指令,对容器做出修改
  • 执行类似docker commit的操作,提交一个新的镜像层
  • Docker再基于刚提交的镜像运行一个新容器
  • 执行Dockerfile中的下一条指令,直到所有指令都执行完毕
    Dockerfile支持注释,以#开头的行都被认为是注释。每个Dockerfile的第一条指令必须是FROM。FROM指令指定一个已经存在的镜像,后续指令都将基于该镜像进行,这个镜像被称为基础镜像(base image)。MAINTAINER指令会告诉Docker该镜像的作者是谁,以及作者的电子邮件地址。RUN指令会在当前镜像中运行指定的命令,每条RUN指令会创建一个新的镜像层,如果该指令执行成功,就会将此镜像层提交,之后继续执行Dockerfile中的下一条指令。
    默认情况下,RUN指令会在shell里使用命令包装器/bin/sh -c来执行。如果是在一个不支持shell的平台上运行或者不希望再shell中运行(比如避免shell字符串篡改),可以使用exec格式的RUN指令。
    在这里插入图片描述
    EXPOSE指令告诉Docker该容器内的应用程序将会使用容器的指定端口。

猜你喜欢

转载自blog.csdn.net/asmartkiller/article/details/106173669