1.CMD 命令
1.CMD 指定容器启动时默认执行的命令
2.Dockerfile只能有一个CMD命令,如果有多条,将执行最后一条
3.docker run 指定命令会覆盖CMD命令
1.1CMD格式
CMD ["exec","param1","param2"] exec模式,exec:一个可执行文件的路径 然后带上命令参数
CMD command param1 shell模式
CMD ["param1","param2"] 提供Entrypoint的默认参数
1.2 CMD实战
FROM ubuntu
MAINTAINER liuwei liuwei@163.com
RUN apt-get update
RUN apt-get install nginx -y
CMD ["/usr/sbin/nginx","-g","daemon off"]
EXPOSE 80
#构建镜像
docker build -t ubuntu-nginx:v0.3 .
#根据镜像创建容器,创建时候,不添加执行命令
docker run --name nginx-1 -itd ubuntu-nginx:v0.3
#根据镜像创建容器,创建时候,添加执行命令/bin/bash
docker run --name nginx-2 -itd ubuntu-nginx:v0.3 /bin/bash docker ps
最后反向两者的command不一样
CONTAINER ID | IMAGE | COMMAND |
---|---|---|
921d00c3689f | ubuntu-nginx:v0.3 | "/bin/bash" |
921d00c3689f | ubuntu-nginx:v0.3 | "/usr/sbin/nginx -g …" |
2.ENTRYPOINT命令
1.不会被Dockerfile命令覆盖
2.每个Dockerfile只能有一个Entrypoint命令,当有多个时,只最后一个执行
2.1.ENTRYPOINT格式
ENTRYPOINT ["executable", "param1","param2"] (exec 模式)
ENTRYPOINT command param1 param2 (shell 模式)
3.CMD和ENTRYPOINT综合使用
FROM ubuntu
MAINTAINER liuwei liuwei@163.com
RUN mkdir hello
RUN mkdir world
RUN apt-get update
RUN apt-get install nginx -y
ENTRYPOINT ["/usr/sbin/nginx"]
CMD ["-g"]
EXPOSE 80
#构建镜像
docker build -t ubuntu-nginx:v0.5 .
#根据镜像创建容器,创建时候,不添加执行命令
docker run --name nginx-6 -d ubuntu-nginx:v0.5
#根据镜像创建容器,创建时候,不添加执行命令,覆盖cmd的参数 -g "daemon off;"
docker run --name nginx-7 -d ubuntu-nginx:v0.5 -g "daemon off;"
最后反向两者的command不一样
CONTAINER ID | IMAGE | COMMAND |
---|---|---|
921d00c3689f | ubuntu-nginx:v0.5 | "/usr/sbin/nginx -g" |
921d00c3689f | ubuntu-nginx:v0.5 | "/usr/sbin/nginx -g …" |