CMD 命令演示

编写 Dockerfile

[root@sail dockerfile]# vim Dockerfile-cmd-test
[root@sail dockerfile]# cat Dockerfile-cmd-test
FROM centos
CMD ["ls","-a"]

构建镜像

[root@localhost home]# docker build -f dockerfile-cmd-test -t cmd .
[+] Building 0.0s (5/5) FINISHED                          doc
 => [internal] load build definition from dockerfile-cmd-test
 => => transferring dockerfile: 133B                         
 => [internal] load metadata for docker.io/library/centos:lat
 => [internal] load .dockerignore                            
 => => transferring context: 2B                              
 => CACHED [1/1] FROM docker.io/library/centos:latest        
 => exporting to image                                       
 => => exporting layers                                      
 => => writing image sha256:2b06f96416291f005301cc48ccf63a8fa
 => => naming to docker.io/library/cmd

运行一下

先看id

[root@localhost home]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
mycentos     latest    c7defb0511c1   19 minutes ago   312MB
centos       latest    5d0da3dc9764   2 years ago      231MB
cmd          latest    2b06f9641629   2 years ago      231MB
cmdtest      latest    2b06f9641629   2 years ago      231MB
[root@localhost home]# docker run 2b06f9641629
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

此时 Dockerfile 中编写的命令生效了。

追加 -l 命令

[root@localhost home]# docker run cmd -l
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "-l": executable file not found in $PATH: unknown.

没有达到预期的 ls -al 命令。

CMD 是替换的方式, -l 不是命令,所以报错。

ENTRYPOINT 命令演示

编写 Dockerfile

[root@sail dockerfile]# vim dockerfile-entrypoint-test
[root@sail dockerfile]# cat dockerfile-entrypoint-test
FROM centos
ENTRYPOINT ["ls","-a"]

构建镜像

[root@localhost home]# docker build -f docker-entrypoint-test -t entrypoint .
[+] Building 0.0s (5/5) FINISHED docker:default
=> [internal] load build definition from docker-entr 0.0s
=> => transferring dockerfile: 144B 0.0s
=> [internal] load metadata for docker.io/library/ce 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> CACHED [1/1] FROM docker.io/library/centos:latest 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:a58b53c50da3074855495de14 0.0s
=> => naming to docker.io/library/entrypoint 0.0s

运行镜像

[root@localhost home]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cmd latest 2b06f9641629 2 years ago 231MB
entrypoint latest a58b53c50da3 2 years ago 231MB
[root@localhost home]# docker run entrypoint
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

此时 Dockerfile 中编写的命令也生效了。

追加 -l 命令

[root@localhost home]# docker run entrypoint -l
total 4
drwxr-xr-x. 1 root root 6 May 30 12:44 .
drwxr-xr-x. 1 root root 6 May 30 12:44 ..
-rwxr-xr-x. 1 root root 0 May 30 12:44 .dockerenv
lrwxrwxrwx. 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x. 5 root root 340 May 30 12:44 dev
drwxr-xr-x. 1 root root 66 May 30 12:44 etc
drwxr-xr-x. 2 root root 6 Nov 3 2020 home
lrwxrwxrwx. 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------. 2 root root 6 Sep 15 2021 lost+found
drwxr-xr-x. 2 root root 6 Nov 3 2020 media
drwxr-xr-x. 2 root root 6 Nov 3 2020 mnt
drwxr-xr-x. 2 root root 6 Nov 3 2020 opt
dr-xr-xr-x. 342 root root 0 May 30 12:44 proc
dr-xr-x---. 2 root root 162 Sep 15 2021 root
drwxr-xr-x. 11 root root 163 Sep 15 2021 run
lrwxrwxrwx. 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Nov 3 2020 srv
dr-xr-xr-x. 13 root root 0 May 30 00:36 sys
drwxrwxrwt. 7 root root 171 Sep 15 2021 tmp
drwxr-xr-x. 12 root root 144 Sep 15 2021 usr
drwxr-xr-x. 20 root root 4096 Sep 15 2021 var

运行了预期的 ls -al 命令。

ENTRYPOINT 是追加的方式。

Docker 中许多命令都十分相似,我们需要了解他们的区别,最好的方式就是这样对比测试。

CMD 与 ENTRYPOINT 区别的更多相关文章

  1. docker CMD 和 ENTRYPOINT 区别

    昨天用Dockerfile来启动mongodb的集群,启动参数--replSet死活没执行,最后就决定研究一哈cmd和entrypoint.但是上网看了一些资料个人觉得讲的不好,还是没有说出根本的东西 ...

  2. Docker 的CMD与ENTRYPOINT区别

    我们在构建一个docker镜像的时候,Dockerfile里面有两个命令会引起我们的注意,它们就是 CMD 和 ENTRYPOINT,看起来很相似,实际上并非如此. 一.CMD 顾名思义就是允许用户指 ...

  3. Dockerfile中CMD和ENTRYPOINT的区别

    当启动一个容器时,CMD和ENTRYPOINT都可以用来执行启动命令.但它们的具体用法还是有一些区别: 1. Dockerfile必须至少指定CMD或者ENTRYPOINT其中的一个. 2. ENTR ...

  4. [转]【docker】CMD ENTRYPOINT 区别

    本文转自:https://blog.csdn.net/u010900754/article/details/78526443 昨天用Dockerfile来启动mongodb的集群,启动参数--repl ...

  5. Docker系列(23)- CMD和ENTRYPOINT的区别

    CMD和ENTRYPOINT的区别 CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代 ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令 测试CMD ...

  6. Docker | dockerfile构建centos镜像,以及CMD和ENTRYPOINT的区别

    构建自己的centos镜像 docker pull centos下载下来的镜像都是基础版本,缺少很多常用的命令功能,比如:ll.vim等等, 下面介绍制作一个功能较全的自己的centos镜像. 步骤 ...

  7. 论docker中 CMD 与 ENTRYPOINT 的区别

    Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: CMD指令: The main purpose of a ...

  8. 论docker中 CMD 与 ENTRYPOINT 的区别(转)

    Dockerfile 用于自动化构建一个docker镜像.Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: ...

  9. CMD 与 ENTRYPOINT 的区别

    Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: CMD指令: The main purpose of a ...

  10. RUN vs CMD vs ENTRYPOINT - 每天5分钟玩转 Docker 容器技术(17)

    RUN.CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似,很容易混淆.本节将通过实践详细讨论它们的区别. 简单的说: RUN 执行命令并创建新的镜像层,RUN 经常用于 ...

随机推荐

  1. patch-package:taro-ui引入报错 Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0

    前言 在使用taro ui时候报错如下 > Executing task: yarn run dev:weapp < yarn run v1.22.17 $ npm run build:w ...

  2. C++ 元编程 学习二

    简介 C++ 元编程 学习之二 参考资料 C++ 模板元编程实战 code #include <iostream> // 编译器分支与多种返回类型 写法1 template <boo ...

  3. 自动安装依赖的 ubuntu dpkg 的竞品gdebi

    简介 dpkg 安装的时候总会出现缺少依赖的情况要自己可能手动安装,但是有了gdebi就可以帮你轻松搞定. 例如坚果云的安装 使用gdebi安装,自动安装依赖 sudo gdebi nautilus_ ...

  4. Sublime Test 安装&配置教程

    先按照这上面的网址安装: oi-wiki SublimeText配置 记得点击:Windows 64 bit 后面的那个安装很慢. 下载一个Devc++或Codeblocks,这边提供Devc++下载 ...

  5. RestCloud ETL社区版序列号相关咨讯

  6. SciTech-BigDataAIML-Statistical Model-Bayes Inference-数据/事实 ∩ 假设: 政治经济、社会和科学分析

    SciTech-BigDataAIML-Statistical Model Bayes Inference-数据/事实 ∩ 假设 \(\large \begin{array}{rl} \\ P(H|D ...

  7. pandas速成笔记(4)-数据图表

    接上篇继续,做数据分析,各种数据图表是必不可少的,还是以下面这张表为例: 一.单列柱状图 假设要把9月份,A.B这2个分类的Amount提取出来画一个柱状图,可以这么做: import pandas ...

  8. win10专业版开机电脑红屏的问题

    有深度技术的win10专业版用户,发现电脑开机后屏幕会变成红色的,再次重启电脑,也没有恢复正常,这个问题怎么解决呢?其实,这是因为显示设置出了问题,所以才会出现这种情况.那么,我们该怎么解决这个问题呢 ...

  9. 从频繁告警到平稳发布:服务冷启动 CPU 风暴优化实践

    作者:vivo 互联网服务器团队- Xie Xiaopeng 本文针对服务启动后几分钟内 CPU 持续处于高峰状态的问题,提出了自己的分析思路与解决方案.最终线上效果比较显著,成功解决了每次发版过程中 ...

  10. AI大模型时代已来,推荐几款主流的智能化低代码平台(附真实测评)

    ​ 随着AI大模型技术深入应用于企业管理应用的各方面,目前作为企业数字化应用构建的有力工具--低代码平台,也正迎来AI智能化升级.现在,市场上的各种低代码平台通过集成AI技术.自动化流程与数据分析等能 ...