Docker CMD && Entrypoint

目录

参考文档

CMD

docker run指定的参数会覆盖Dockfile中CMD指定的参数。

ENTRYPOINT

ENTRYPOINT指定的参数不会被docker run后面的参数覆盖,而是会传递给ENTRYPOINT指定的参数。


参考文档

(100条消息) Dockerfile文件中CMD指令与ENTRYPOINT指令的区别_鳄鱼儿的博客-优快云博客_cmd entrypoint区别

CMD

CMD ["executable", "param1", "param2"] # exec form
CMD ["param1", "param2"] # as default parameters to ENTRYPOINT
CMD command param1 param2 # shell form

docker run指定的参数会覆盖Dockfile中CMD指定的参数。

编写Dockerfile

FROM busybox:latest

RUN cd /

CMD ["ls", "-l"]

制作镜像并运行

docker build -t test1 . # 制作镜像

docker run test1 # 运行, 执行的命令为 ls -l

# 运行结果
# drwxr-xr-x    2 root     root         12288 Jun  6 22:13 bin
# drwxr-xr-x    5 root     root           340 Jun 30 17:11 dev
# drwxr-xr-x    1 root     root          4096 Jun 30 17:11 etc
# drwxr-xr-x    2 nobody   nobody        4096 Jun  6 22:13 home
# dr-xr-xr-x   93 root     root             0 Jun 30 17:11 proc
# drwx------    2 root     root          4096 Jun  6 22:13 root
# dr-xr-xr-x   13 root     root             0 Jun  1 15:24 sys
# drwxrwxrwt    2 root     root          4096 Jun  6 22:13 tmp
# drwxr-xr-x    3 root     root          4096 Jun  6 22:13 usr
# drwxr-xr-x    4 root     root          4096 Jun  6 22:13 var

覆盖参数

docker run test1 -a # 这个时候实际执行的命令为"-a",当然系统中没这个命令,报错。

# 报错如下
# docker: Error response from daemon: failed to create shim: OCI runtime create failed:  
# container_linux.go:380: starting container process caused: exec: "-a": executable file 
# not found in $PATH: unknown.

修改参数,重新运行

docker run test1 ls -a # 这个时候实际执行的命令为 ls -a, 而不是 ls -l

# 结果如下
# .
# ..
# .dockerenv
# bin
# dev
# etc
# home
# proc
# root
# sys
# tmp
# usr
# var

ENTRYPOINT

ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2

ENTRYPOINT指定的参数不会被docker run后面的参数覆盖,而是会传递给ENTRYPOINT指定的参数。

编写Dockerifle

FROM busybox:latest

RUN cd /

ENTRYPOINT ["ls", "-l"]

制作镜像并运行

docker build -t test2 .

docker run test2 -a

# 执行结果
# total 44
# drwxr-xr-x    1 root     root          4096 Jun 30 17:38 .
# drwxr-xr-x    1 root     root          4096 Jun 30 17:38 ..
# -rwxr-xr-x    1 root     root             0 Jun 30 17:38 .dockerenv
# drwxr-xr-x    2 root     root         12288 Jun  6 22:13 bin
# drwxr-xr-x    5 root     root           340 Jun 30 17:38 dev
# drwxr-xr-x    1 root     root          4096 Jun 30 17:38 etc
# drwxr-xr-x    2 nobody   nobody        4096 Jun  6 22:13 home
# dr-xr-xr-x   98 root     root             0 Jun 30 17:38 proc
# drwx------    2 root     root          4096 Jun  6 22:13 root
# dr-xr-xr-x   13 root     root             0 Jun  1 15:24 sys
# drwxrwxrwt    2 root     root          4096 Jun  6 22:13 tmp
# drwxr-xr-x    3 root     root          4096 Jun  6 22:13 usr
# drwxr-xr-x    4 root     root          4096 Jun  6 22:13 var

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值