首页 > 其他分享 >CMD 与 ENTRYPOINT 区别

CMD 与 ENTRYPOINT 区别

时间:2024-05-30 21:13:15浏览次数:10  
标签:区别 0.0 drwxr CMD ENTRYPOINT xr home docker root

 

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 中许多命令都十分相似,我们需要了解他们的区别,最好的方式就是这样对比测试。

标签:区别,0.0,drwxr,CMD,ENTRYPOINT,xr,home,docker,root
From: https://www.cnblogs.com/muxinq/p/18223215

相关文章

  • 指针与引用区别
     =====来自:https://www.cnblogs.com/honernan/p/12175899.html每日一问1:指针和引用的区别 指针(pointer)和引用(references)都是对另一个变量的一种关联,即通过指针和引用可以使用另一个变量。而它们最大的区别在于:指针是一个变量,而引用不是。但在c++底层中,引用是通过......
  • WCDMA LTE FDD TDD 区别
     首先,这四种都是移动网络通讯的标准 WCDMAWCDMA是一种让手机可以更快上网和打电话的技术。它有几个关键特点:宽带:就像一条很宽的高速公路,可以让更多的数据(信息)同时通过。这意味着你上网、看视频或者下载东西的速度会更快。码分多址:这是WCDMA的一种特殊技术,让很多人可以同......
  • Java中Comparable接口和Comparator接口的区别(如果想知道Java中Comparable接口和Compar
        前言:在Java中,Comparable接口和Comparator接口都用于对象之间的比较和排序,但它们在使用和设计上存在一些关键的区别。✨✨✨这里是秋刀鱼不做梦的BLOG✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客        本篇文章主要讲解的是J......
  • JS中?? 与 || 的区别
     1)相同点:??和||的用法相同,都是前后是值,中间用符号连接,根据前面的值来判断最终是返回前面的值还是后面的值。One??TwoOne||Two2)不同点:判断的方法不同:使用??时,只有One为null或者undefined时才会返回two;使用||时,One会先转化为布尔值判断,为true时返回One......
  • 你知道列存储的定义和优势以及行存储的区别?--数据仓库基本概念
    列存储(ColumnarStorage)是一种数据库存储数据的方式,它将每一列的数据存储在一起,而不是按行存储。这与传统的行存储(RowStorage)相反,后者将一行中的所有数据存储在一起。列存储的定义:列存储数据库或文件系统会将表中的每一列数据分别存储在不同的位置。例如,如果有一个表包含......
  • #和 $ 在 MyBatis 中的区别
    哈喽,大家好,我是木头左!MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。在MyBatis中,#{}和${}都可以用来表示参数,但是它们之间有一些区别。本文将从以下几个方面介绍这两种符号的区别:1.#{}和${}的用法在MyBatis中,#{}用于预编译的SQL语句......
  • 视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别
    在公安和公共安全领域,视频图像信息的应用日益广泛,尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理,GA/T1400和GB/T28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的,但它们在实际应用、功能特性和适用范围上却存在显著的区别。今天我......
  • 【杂记-浅谈DDos攻击、浅析SYN Flood攻击、Dos及DDos攻击区别】
    一、DDosDistributedDenialofService分布式拒绝服务攻击什么是DDos攻击DDoS攻击是一种常见的网络攻击形,攻击者利用恶意程序对一个或多个目标发起攻击,企图通过大规模互联网流量耗尽攻击目标的网络资源,使目标系统无法进行网络连接、无法提供正常服务。DDoS攻击会给攻......
  • get和set,?和 ?? ,?: ,?. ?:[]的用法和区别
    C#中,get和set访问器通常与属性(property)一起使用,用于定义如何读取和写入属性的值。属性提供了一种比字段(field)更灵活的方式来封装类的数据成员。区别用途:get访问器:用于读取属性的值。set访问器:用于设置属性的值。返回值:get访问器必须返回一个值,其类型必须与属性的......
  • pip install . 和 pip install -e . 的区别
    pipinstall.和pipinstall-e.都用于将当前目录下的项目安装为Python包,但它们之间有一些区别。pipinstall.:这个命令会将项目打包并安装在Python环境中,项目的文件将被复制到Python的site-packages目录中。安装后,您可以在Python中导入该包并使用其中的功能。这种方式适......