DOCKER-1-7-Dockerfile容器编排二

1.创建一个测试目录,创建容器编排文件Docerfile,在编排文件中写明docker build阶段的指令RUN,写明docker run阶段的指令CMD。然后创建镜像,inspect镜像可以查看到指令,/bin/sh被关闭,运行的是httpd。通过镜像起容器,虽然我们加了-it但无法进行交互,因为此时运行的是httpd,通过ps查看进程也可以发现。这是要运行交互,通过exec启动/bin/sh。进入容器后,查看进程,初始进程是httpd,新增进程为/bin/sh,打印输出环境变量。

2.重新编辑编排文件。创建镜像。查看镜像中的CMD命令。运行容器,结果发生报错。因为这是并没有启动/bin/sh。再次编辑编排文件,在CMD中增加启动/bin/sh。重新创建镜像,用镜像启动容器,容器自动关闭。删除--rm参数后容器依然会自动关闭。ps显示进程中也显示是退出状态。

3.将编排文件中的路径变量直接写成指定路径,再次创建镜像。再次运行容器,还是没有输出。可见不是路径本身的问题。

4.再次修改容器编排文件,使用ENTRYPOINT。使用该镜像启动容器,可以正常运行。但当我们传入ls命令参数时,容器不运行参数。

5.修改编排文件,让CMD与ENTRYPOINT同时存在,这是CMD命令会被作为参数传给ENDPOINT。创建镜像。查看镜像内容,发现ENTRYPOINT运行两次/bin/sh -c。

6.修改编排文件,将ENTRYPOINT修改为列表形式。再次创建镜像。查看镜像内容,这次ENTRYPOINT只运行一次/bin/sh。

7.再次运行容器,增加参数ls /data,ls和/data会分别识别,这时ls会被作为参数传给CMD,从而生效。而将ls /data作为一个整体传入的时候,也是可以生效的。

8.创建一个entrypoint脚本,用于在www.conf中写入参数配置,并把变量显示出来(exec "$@")。创建编排脚本,将CMD作为参数传给ENTRYPOINT。创建镜像,用镜像运行容器。

9.修改编排脚本,增加index.html。重新制作镜像,启动容器。能够正常启动。

10.通过exec进入容器进行验证。查看www.conf文件,查看端口监听。

11.访问localhost得到nginx默认的页面。这里要访问容器主机,要使用server_name对应的值。

12.重新启动容器,传PORT参数。在通过exec进入容器查看端口监听信息。

13.重新编辑编排脚本,增加端口暴露和健康检查参数,有些不写会直接使用默认值。创建镜像起容器。通过exec进入容器。通过检测输出可以看到健康检查正常工作。

14.修改编排文件,将端口人为的给一个错误值。制作镜像,启动容器,这时不会有反馈。

15.修改编排文件,将author改为变量,同时设定默认值。创建镜像,查看镜像信息,maintainer显示其默认值。再次创建镜像,创建时传入--build-arg参数值,查看镜像信息,maintainer显示其传入参数值。

猜你喜欢

转载自blog.csdn.net/ligan1115/article/details/84678456