dockerfile中cmd使用

博客给出了Dockerfile相关内容,展示了CMD命令的使用,具体为CMD /opt/pro/run.sh ${INPUT_DATA} ${OUTPUT_DATA},体现了在Dockerfile里执行脚本并传递变量的操作。
CMD /opt/pro/run.sh ${INPUT_DATA} ${OUTPUT_DATA}
Dockerfile 中,CMD 指令用于为执行容器提供默认值。以下是 CMD 的几种详细使用方式及示例: #### 1. CMD 的三种形式 - **shell 形式** - 语法:`CMD command param1 param2` - 示例: ```Dockerfile CMD echo "Hello, Docker!" ``` - 解释:在这种形式下,命令会在 `/bin/sh -c` 中执行,即容器启动时会执行 `sh -c 'echo "Hello, Docker!"'`。 - **exec 形式** - 语法:`CMD ["executable", "param1", "param2"]` - 示例: ```Dockerfile CMD ["echo", "Hello, Docker!"] ``` - 解释:这是推荐的使用方式,它以 JSON 数组的形式指定要执行的命令和参数,不会启动一个新的 shell 进程。 - **作为 ENTRYPOINT 的默认参数形式** - 语法:当 Dockerfile 中同时存在 `ENTRYPOINT` 和 `CMD` 时,`CMD` 的内容会作为参数传递给 `ENTRYPOINT`。 - 示例: ```Dockerfile FROM ubuntu:20.04 ENTRYPOINT ["echo"] CMD ["Default CMD"] ``` - 解释:默认情况下,容器启动时会执行 `echo "Default CMD"`,如果使用 `docker run` 命令后面跟了其他参数,这些参数会替换 `CMD` 的内容传递给 `ENTRYPOINT` [^2]。 #### 2. CMD 的注意事项 - **多个 CMD 指令**:Dockerfile 中可以有多个 `CMD` 指令,但只有最后一个会生效 [^3]。 - **被 `docker run` 参数替换**:`CMD` 会被 `docker run` 之后的参数替换。例如,对于上述示例的 Dockerfile,如果使用 `docker run image_name NewParam` 启动容器,会执行 `echo "NewParam"`。 #### 3. 实际应用场景 - **启动服务**:在启动一个基于 Node.js 的应用时,可以在 Dockerfile 中这样使用 `CMD`: ```Dockerfile FROM node:14 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . CMD ["node", "app.js"] ``` - **提供默认配置**:为容器提供一些默认的配置参数,当用户不指定其他参数时,使用这些默认值。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值