Docker 构建镜像
构建 Docker 镜像的指令是 docker build,另外还需要制作一个包含构建指令的 Dockerfile 脚本文件。
1. 什么是 Dockerfile?
Dockerfile 是一个用来构建镜像的脚本文件,里面包含了构建镜像所需的指令。
Dockerfile 是纯文本文件,可以使用任何文件编辑器来编辑脚本内容。
2. 使用 Dockerfile 构建镜像
我们使用 Dockerfile 文件来构建一个定制的 nginx 镜像。这个镜像中,除了包含标准的 nginx 最新版本外,还会自动产生一个定制的 web 页面 index.html。
1)创建 Dockerfile 文件
在任意一个目录下,新建一个名为 Dockerfile 的文本文件,并在文件中添加以下内容:
FROM nginx RUN echo 'This is a test page for building a Docker image' > /usr/share/nginx/html/index.html
查看新创建的 Dockerfile 文件
$ ls 执行结果: Dockerfile $ cat Dockerfile 执行结果: FROM nginx RUN echo 'This is a test page for building a Docker image' > /usr/share/nginx/html/index.html
2)FROM 和 RUN 指令
我们的 Dockerfile 文件中包含两条指令内容:FROM 和 RUN。其中:
FROM:用来指定基础镜像的名称。后面的参数 nginx 是我们要定制镜像的基础镜像。
RUN:用于在构建的镜像中执行一段命令。我们这里执行 Shell 命令 echo,并创建一个index.html文件,文件的内容是 “This is a test page for building a Docker image”。
3)构建镜像
使用 docker build 命令构建镜像。
$ docker build -t nginx:test . 执行结果: docker build -t nginx:test . Sending build context to Docker daemon 2.506MB Step 1/2 : FROM nginx ---> 62d49f9bab67 Step 2/2 : RUN echo 'This is a test page for building a Docker image' > /usr/share/nginx/html/index.html ---> Running in 0060abb2fd65 ---> 8d5bab740ff3 Removing intermediate container 0060abb2fd65 Successfully built 8d5bab740ff3 Successfully tagged nginx:test
上述指令是通过当前目录下的 Dockerfile 构建一个 nginx:test(镜像名称:镜像标签)镜像。
注:最后的 . 代表本次执行的上下文路径。
4)查看构建的镜像
$ docker images 执行结果: EPOSITORY TAG IMAGE ID... nginx test 8d5bab740ff3
我们构建的镜像已经生成。
3. 运行构建的镜像
$ docker run -p 80:80 -nginx:test 执行结果: /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ ...
我们打开浏览器访问 http://localhost,浏览器页面会输出:This is a test page for building a Docker image。这正是我们构建的新镜像的 web 首页内容。
下一章:Docker Compose
Docker Compose Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 如果你还不了解 YML 文件配置,可以先阅读 YAML 入门教程。 Compose 使用的三个步骤: 使用 Dockerfile 定义应用程序的环境。 ..