Dockerfile中CMD的用法

root@ubuntu:~# cd /dockerfile/df_test3/
root@ubuntu:/dockerfile/df_test3#cat Dockerfile
# 设置基本的镜像,后续命令都以这个镜像为基础 
FROM ubuntu
# 作者信息 
MAINTAINER shangwu 
# RUN命令会在上面指定的镜像里执行任何命令 
RUN apt-get update
RUN apt-get install -y nginx
 
#暴露ssh端口
EXPOSE 80 
#exec模式
CMD ["/usr/sbin/nginx", "-g","daemon off;"]
root@ubuntu:/dockerfile/df_test3#
root@ubuntu:/dockerfile/df_test3#docker build -t="df_test3" .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu
 --->dc8dd8718e57
Step 1 : MAINTAINER shangwu
 --->Using cache
 --->cd3d00722426
Step 2 : RUN apt-get update
 --->Using cache
 --->0096fe9ac7c4
Step 3 : RUN apt-get install -y nginx
 --->Using cache
 --->c8b93cc747d7
Step 4 : EXPOSE 80
 --->Using cache
 --->266559c6bc7f
Step 5 :CMD /usr/sbin/nginx -g daemon off;
 --->Running in c56286fba0c3
 --->ea94d0b70edb
Removing intermediate container c56286fba0c3
Successfully built ea94d0b70edb
root@ubuntu:/dockerfile/df_test3#
root@ubuntu:/dockerfile/df_test3#docker run -p 80 --name cmd_test1 -d df_test3
root@ubuntu:/dockerfile/df_test3# docker ps
CONTAINER ID       IMAGE               COMMAND                CREATED             STATUS              PORTS                   NAMES
42ce96c9e443       df_test3:latest    "/usr/sbin/nginx -g    9seconds ago       Up 9 seconds        0.0.0.0:32770->80/tcp   cmd_test1          
root@ubuntu:/dockerfile/df_test3#
root@ubuntu:/dockerfile/df_test3#curl http://127.0.0.1:32770
root@ubuntu:/dockerfile/df_test3#
 
说明:
       1)Dockerfile启动的时候会执行Dockerfile中的CMD命令;


 

 

root@ubuntu:~# docker run -p 80 --name cmd_test2 -ddf_test3 /bin/bash
3dfabb61b6538dc97ffdb7aeddcb96b2dc45cec3614d3ffc86e03bcc32daed4c
root@ubuntu:~# docker ps
CONTAINER ID       IMAGE               COMMAND                CREATED             STATUS              PORTS                   NAMES
42ce96c9e443       df_test3:latest     "/usr/sbin/nginx -g    14 minutes ago      Up 14 minutes       0.0.0.0:32770->80/tcp   cmd_test1          
root@ubuntu:~# docker ps -a
CONTAINER ID       IMAGE               COMMAND                CREATED             STATUS                        PORTS                   NAMES
3dfabb61b653       df_test3:latest     "/bin/bash"            28 seconds ago      Exited (0) 28 seconds ago                             cmd_test2          
42ce96c9e443       df_test3:latest    "/usr/sbin/nginx -g    14minutes ago      Up 14 minutes                 0.0.0.0:32770->80/tcp   cmd_test1          
root@ubuntu:~#
说明:
       1)上面启动的容器并没有执行Dockerfile中的CMD命令;
       2)/bin/bash将Dockerfile中的CMD命令替换了;
 


 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐