彬彬有礼的! 通过复制粘贴介绍docker~Dockerfile和docker build版~
你好。
我是Mandai,负责Wild 开发团队。
作为复制粘贴 docker 系列的第 2 部分,我想尝试 docker build 命令。
一旦你可以进行 docker build,
- 您可以通过修改现有的 docker 镜像来创建新的 docker 镜像。
- 创建类似的 docker 镜像时,拥有基础 docker 镜像会更容易。
- 如果是 VM 映像,您将分发用 vagrant 打包的映像,但如果是 docker 映像,则只会分发 Dockerfile 和放置在 docker 容器中的文件。
有以下优点:
单击此处查看第 1 部分→友善且礼貌! 通过复制粘贴介绍docker
让我们兴奋起来吧。
使用 docker build 排列 docker 镜像
首先,在主机操作系统上创建一个目录来存储用于构建的文件。
vagrant@vagrant:~$ mkdir docker_php7 vagrant@vagrant:~$ cd docker_php7
需要注意的是,使用 Dockerfile 创建新的 docker 镜像时,无法访问 Dockerfile 所在目录之上的目录。
因此,COPY和ADD所需的文件必须放在Dockerfile安装的目录下。
接下来,在主机操作系统上创建一个 PHP 文件,并将其放置在 docker 容器中。
vagrant@vagrant:~/docker_php7$ echo "<?php phpinfo();" >信息.php
接下来,创建一个 Dockerfile。
vagrant@vagrant:~/docker_php7$ vi Dockerfile # Dockerfile 的内容 FROM php:7.0.2-apache # 进行 docker build 时指定基础 docker 镜像(必需) MAINTAINER Y.Mandai Beyond Inc. # Dockerfile 维护者信息(可选) COPY info.php /var/www/html/ # 将 info.php 复制到容器中的 /var/www/html/ EXPOSE 80 # 向外部开放容器的 80 端口(从主机 OS 可见)
查看
php:7.0-apache 的 Dockerfile ,容器构建命令包括在容器内编译 PHP,这非常有帮助。
参考此,您可以创建包含多字节相关扩展模块的docker镜像。
现在,让我们使用 docker build 创建一个 docker 镜像。
vagrant@vagrant:~/docker_php7$ docker build -t addinfo . 将构建上下文发送到 Docker 守护进程 3.072 kB 第 1 步:来自 php:7.0.2-apache ---> 797e8c22cdde 第 2 步:维护者 Y.Mandai Beyond Inc. -- -> 在 49c22633979a 中运行 ---> 8550f12577fd 删除中间容器 49c22633979a 步骤 3:COPY info.php /var/www/html/ ---> 9e143b3f9df5 删除中间容器 b70897d9000e 步骤 4:EXPOSE 80 ---> 在 31b5 中运行4ea14f 9f - --> 38445ad62923 删除中间容器 31b54ea14f9f
使用-t选项设置docker镜像的名称,并使用最后的“.”指定Dockerfile的路径。
docker build -t addinfo:hogehoge 。
您还可以使用标签 hogehoge 创建一个。
让我们检查一下 docker images 命令。
vagrant@vagrant:~/docker_php7$ docker images 存储库标签 创建的镜像 ID 虚拟大小 addinfo 最新 31b54ea14f9f 大约一小时前 521 MB php 7.0.2-apache 797e8c22cdde 5 周前 521 MB
现在我们已经创建了一个新的 docker 镜像,我们想从这里创建一个 docker 容器。
vagrant@vagrant:~/docker_php7$ docker run -d -p 8080:80 addinfo 862db6201b865a12415d4602219b03714605e0a89f2fa3076ae2161cf271d666
由于我们已将容器的端口 80 映射到主机操作系统的端口 8080,因此让我们检查是否可以从主机端使用curl 执行 info.php。
vagrant@vagrant:~/docker_php7$curl http://localhost:8080/info.php
如果phpinfo()的内容能够显示出来,那么这个实验就成功了!
就是这样。
如果您觉得这篇文章有帮助,请点赞!