我们知道,通过docker run 创建并启动一个容器时,命令的最后可以指定容器启动后在容器内立即要执行的指令,如:

docker run -i -t ubunu /bin/bash   //表示容器启动时立即在容器内打开一个shell终端

docker run ubuntu /bin/ps    //表示容器启动后立即运行 /bin/ps命令,显示容器的当前进程。

除了这种方式外,我们可以在dockerfile文件中通过CMD指令指定容器启动时要执行的命令。如:

#test
FROM ubuntu
MAINTAINER xxx
RUN echo hello1 > test1.txt
RUN echo hello2 > /test2.txt
EXPOSE 80
EXPOSE 81
CMD ["/bin/bash"]

上面dockerfile文件中最后一行CMD指令的参数是指定容器启动时要执行的命令,这里是bin/bash命令。

1、用docker run命令创建并启动容器(myimage  是用前面dockerfile创建的镜像的名称):

docker run -i -t myimage

上面命令是创建并启动容器,打开一个交互式shell。 而以前的写法是

docker run -i -t myimage  /bin/bash

这样就省去了在docker run中写命令了。

2、即使dockerfile中有CMD指令,我们仍然可以在docker run命令中带上容器启动时执行的命令,这会覆盖dockerfile中的CMD指令指定的命令。如:

docker run -i -t myimage /bin/ps

上面命令,因为/bin/ps覆盖了CMD指令,启动容器时会打印容器内的当前进程,但容器会立即停止,因为/bin/bash被覆盖了,无法打开交互式shell界面。

3、需要注意的是,dockerfile中可以有多条cmd命令,但只是最后一条有效。

4、CMD命令的参数格式,一般写成 字符串数组的方式,如上面的例子。如:

CMD  ["echo","hello world"]

虽然也可写成CMD echo hello word 方式,但这样docker会在指定的命令前加  /bin/sh -c 执行,有时有可能会出问题。 所以推荐采用数据结构的方式来存放命令。

docker CMD 命令相关推荐

  1. Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit

    相关阅读: Docker(一):Docker的安装与常用命令 Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit Docker(三):Docker镜像导入与导 ...

  2. 《 第一本Docker书 》读书笔记 --- Docker 各项操作命令及参数说明(docker run 命令各个参数说明)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. PS :个人所有读书笔记只记录个人想要的内容,很可能原书大量内容没有纳入笔记中... ... 1. ...

  3. Docker exec 命令执行出错, 显示 the input device is not aTTY 的解决办法

    问题描述 在使用 docker exec 命令进入容器时,发现报错信息如下: the input device is not a TTY. If you are using mintty, try p ...

  4. 狂神说docker 常用命令笔记

    Docker的常用命令 1. 帮助命令 docker version # 显示docker的版本信息 docker info # 显示docker的系统信息,包括镜像和容器的数量 docker 命令 ...

  5. Docker教程(二):docker常用命令

    前言 本文根据狂神说视频资料整理.https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=164476847288957195 ...

  6. Docker常用命令(基础)

    目录 Docker的常用命令 帮助命令 镜像命令 docker images查看所有本地的主机上的镜像 docker search 搜索镜像 docker pull 下载镜像 docker rmi 删 ...

  7. docker常用命令及镜像的制作与上传

    安装docker docker安装 docker加速 docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就 ...

  8. 【Docker】Docker常用命令

    帮助启动类命令 启动docker systemctl start docker 停止docker systemctl stop docker 重启docker systemctl restart do ...

  9. Docker常用命令大全(万字详解)

    小熊学Java网站:https://javaxiaobear.gitee.io/,每周持续更新干货,建议收藏! 1.帮助类启动命令 启动docker: systemctl start docker 停 ...

  10. Docker 安装 命令 数据卷 应用部署 网络优化 Dockerfile 服务编排Compose 私有仓库

    Docker 1. 初识docker 1.1 Docker是什么 了解Docker的前生LXC LXC与docker的关系 Docker 的特点 1.2 为什么使用Docker Docker的优势 缺 ...

最新文章

  1. 网络推广外包浅析提升移动端网站建设效率有哪些网络推广外包技巧
  2. 游戏玩家的留存率统计SQL实现
  3. SQL里的SWITCH分支语句
  4. SQL Server数据库设置自动备份策略
  5. Mysql分组查询group by语句详解
  6. 【转】ABP源码分析十四:Entity的设计
  7. 公众平台小程序文档和工具
  8. python获取按钮点击后的数据_django表单中的按钮怎么获取数据
  9. php file取不到手机相册,webuploader移动端选择文件无法打开手机相册的解决办法...
  10. 6.7开启Consul使用
  11. 工资计算器的小demo
  12. 个人作业4 结对开发地铁
  13. LC-恢复二叉搜索树(JavaScript实现)
  14. Canvas实例之鼠标移动特效(彩色小球)
  15. 【LED灯屏控制器】AG10K 烧录程序(2)
  16. 手机上可以拍一寸证件照吗
  17. ASP.NET Core中如何显示[PII is hidden]的隐藏信息
  18. [MakeFile教程-09] 隐含规则
  19. 云平台学习笔记(三)-实践
  20. 使用51单片机和MAX7219控制点阵滚动显示

热门文章

  1. scipy.ndimage.measurements.find_objects()
  2. do vis是什么意思_duck不必什么梗?李佳琦放过鸭子吧表情包
  3. 临床数据库挖掘系列3-手把手教你使用R语言对seer数据库清洗
  4. Android GIF图片显示
  5. 帝国时代2哪个服务器稳定,20年后的新生,经典永不落幕——《帝国时代2:决定版》体验报告...
  6. 【BZOJ5285】【HNOI2018】寻宝游戏
  7. Android开发笔记之视频录制
  8. 【牛客网】马三来刷题之顺时针旋转矩阵
  9. 好利来背后隐形富豪家族:店面千家,年入百亿
  10. 蓦然认知全球发布会:用新的技术引擎为设备商和传统企业赋能丨Xtecher 观察