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:

[root@dn01 mnt]# docker build -t httpd:v1 -f Dockerfiletest .

注意最后面有一个点:代表使用当前路径的 Dockerfile 进行构建 
View Code

 

例子2:

创建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中的内容,构建的镜像没有 问题
View Code

 

posted @ 2019-09-03 15:44  彦祚  阅读(94)  评论(0编辑  收藏  举报