Docker Dockerfile的编写
1.Dockerfile 常用的指令集
FROM | 构建镜像来之哪个基础镜像 |
MAINTAINER | 镜像维护者的信息 |
RUN | 构建镜像时运行的Shell命令 |
COPY | 拷贝文件或目录到镜像中 |
ENV | 设置环境变量 |
USER | 为RUN、CMD和ENTRYPOINT执行命令指定运行用户 |
EXPOSE | 声明容器运行的服务端口 |
HEALTHCHECK | 容器中服务健康检查 |
WORKDIR | 为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录 |
ENTRYPOINT | 运行容器时执行,如果有多个ENTRYPOINT指令,最后一个生效 |
CMD | 运行容器时执行,如果有多个CMD指令,最后一个生效 |
2.编写完成dockerfile文件后,则可以构建自定义的镜像
docker build docker build [OPTIONS] PATH | URL | - [flags]
例子1:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@dn01 mnt]# docker build -t httpd:v1 -f Dockerfiletest .
注意最后面有一个点:代表使用当前路径的 Dockerfile 进行构建
例子2:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
创建dockerifle 文件 Dockerifletest 在本地目录创建一个index.html文件,为了在构建镜像时能够找到,并且可以拷贝到容器中,用来测试是否成功 [root@dn01 mnt]# cat Dockerfiletest FROM centos:latest MAINTAINER aa RUN yum install httpd -y COPY index.html /var/www/html ENV HTTP_V=2.0 EXPOSE 80 WORKDIR /tmp CMD ["/usr/sbin/httpd","-D","FOREGROUND"] 构建镜像 [root@dn01 mnt]# docker build -t httpd:v1 -f Dockerfiletest . 注意最后有一个点 [root@dn01 mnt]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE httpd v1 9a4dc69ffd3b 55 seconds ago 346MB centos latest 67fa590cfc1c 11 days ago 202MB nginx latest 5a3221f0137b 2 weeks ago 126MB busybox latest db8ee88ad75f 6 weeks ago 1.22MB [root@dn01 mnt]# 通过自己构建的镜像运行容器 busybox latest db8ee88ad75f 6 weeks ago 1.22MB [root@dn01 mnt]# docker run -itd -p 88:80 httpd:v1 ec1f85960099748cc6d932218937e71421399a4c1853f89c93d0c1aedfafdfac [root@dn01 mnt]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ec1f85960099 httpd:v1 "/usr/sbin/httpd -D …" 2 minutes ago Up 2 minutes 0.0.0.0:88->80/tcp pedantic_maxwell 通过 浏览器访问主机地址加指定的端口这里是88(而非容器地址,如果在容器所在的主机上则访问容器地址) 能否显示index.html中的内容,构建的镜像没有 问题