简介

CMD,ENTRYPOINT都是容器启动的时候,执行执行命令,都支持exec和shell方式

一般用法有两种:①单独一个CMD②先使用ENTRYPOINT(用于执行命令),然后结合CMD使用(用于追加参数)

有多个CMD时,只有最后一个CMD生效

语法

一般开发和Docker官方都建议用 exec格式

CMD

第一种用法:运行一个可执行的文件并提供参数

1
CMD ["executable","param1","param2"]

第二种用法:为ENTRYPOINT指定参数

1
CMD ["param1","param2"] 

第三种用法(shell格式):是以”/bin/sh -c”的方法执行的命令

1
CMD command param1 param2

ENTRYPOINT

exec 格式, 推荐

1
ENTRYPOINT [“executable”, “param1”, “param2”]

shell 格式

1
ENTRYPOINT command param1 param2

使用

单个CMD

编写DockerFile,命名为df1,内容如下:

1
2
3
FROM centos

CMD echo "第一个CMD"

构建镜像

1
docker build -f df1 -t a6678696/df:1.1 .

创建和运行该镜像的容器

1
docker run 镜像id

结果如下图

多个CMD

编写DockerFile,命名为df2,内容如下:

1
2
3
4
FROM centos

CMD echo "第一个CMD"
CMD echo "第二个CMD"

构建镜像

1
docker build -f df2 -t a6678696/df:1.2 .

创建和运行该镜像的容器

1
docker run 镜像id

结果如下图,第一个CMD命令没有生效,生效的是最后一个CMD

先ENTRYPOINT后CMD

编写DockerFile,命名为df3,内容如下:

1
2
3
4
5
FROM centos

ENTRYPOINT ["ls"]

CMD ["-l"]

构建镜像

1
docker build -f df3 -t a6678696/df:1.3 .

创建和运行该镜像的容器

1
docker run 镜像id

结果如下图,以ls -l格式查看文件