Docker中CMD与ENTRYPOINT的简明理解

CMD提供容器启动的默认行为,运行不指定运行的命令及参数,会默认执行CMD中的。

例如hello镜像的Dockerfile中有 CMD ["echo","'hello world'"]

  • 执行 docker run hello,输出hello world
  • 执行 docker run hello /bin/sh -c "shit" 则会覆盖CMD中所有的东西,输出shit

ENTRYPOINT让容器可以当成一个普通的可执行命令一样使用。

例如echo镜像的Dockerfile中有ENTRYPOINT ["/bin/echo"]

  • 执行docker run echo "hello world",输出hello world

若同时CMD也存在,比如: CMD ["'hello world'"] ,那么CMD中的值就是ENTRYPOINT的默认参数。

  • 执行 docker run echo, 即不加参数,也会输出hello world
Docker 是一种轻量级的容器化技术,可以将应用程序及其依赖项打包在一个可移植的容器,这种技术在现代软件开发和运行环境越来越流行。当需要在同一个容器同时运行多个服务或应用程序时,我们可以使用 DockerCMDENTRYPOINT 命令来实现。 CMD 命令用于指定容器启动时默认运行的命令,并且可以被覆盖。在 CMD 命令,我们可以指定多条命令,以分号隔开。例如: ``` CMD ["command1", "command2"] ``` 当容器启动时,会自动执行 command1 和 command2。 ENTRYPOINT 命令也类似于 CMD 命令,用于指定容器启动时要执行的命令。不同的是,ENTRYPOINT 命令可以在容器启动时不能被覆盖。如果用户在使用 docker run 命令启动容器时,指定了其他命令,这些命令会被传递给 ENTRYPOINT 命令。例如: ``` ENTRYPOINT ["command1"] CMD ["command2"] ``` 当容器启动时,会自动执行 command1,并且将命令参数传递给它。如果用户使用 docker run 命令传递了其他命令参数,那么这些参数会被传递给 CMD 命令执行。 使用这些命令可以很好地控制 Docker 容器同时运行的多个服务或应用程序。例如,我们可以指定同时运行一个 Web 服务器和一个数据库服务器的 Docker 容器,并使用 CMDENTRYPOINT 命令来启动这两个服务。要注意的是,这些服务需要在同一个容器运行,会占用更多的计算资源和内存,因此需要根据实际情况进行优化和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值