国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機(jī)|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - 服務(wù)器知識 - dockerfile中ENTRYPOINT與CMD的結(jié)合使用及區(qū)別

dockerfile中ENTRYPOINT與CMD的結(jié)合使用及區(qū)別

2021-09-16 17:06頂級飲水機(jī)管理員 服務(wù)器知識

這篇文章主要介紹了dockerfile中ENTRYPOINT與CMD的結(jié)合使用,大家都知道CMD 與 ENTRYPOINT都是用于指定啟動容器執(zhí)行的命令,那么他們倆有什么區(qū)別呢,本文給大家詳細(xì)介紹,需要的朋友可以參考下

我們在上篇小作文[docker容器dockerfile詳解]對中dockerfile有了比較全面的認(rèn)識,我們也提到`entrypoint`和`cmd`都可以指定容器啟動命令。因為這兩個命令是掌握dockerfile編寫的核心,所以這邊還是單獨(dú)拿出來再講一講。

dockerfile中ENTRYPOINT與CMD的結(jié)合使用及區(qū)別

一、寫在前面

我們在上篇小作文對docker容器dockerfile詳解中dockerfile有了比較全面的認(rèn)識,我們也提到entrypointcmd都可以指定容器啟動命令。因為這兩個命令是掌握dockerfile編寫的核心,所以這邊還是單獨(dú)拿出來再講一講。

二、cmd 與 entrypoint主要區(qū)別

我們直接進(jìn)入主題,cmd 與 entrypoint都是用于指定啟動容器執(zhí)行的命令,區(qū)別在于:

  • 當(dāng)docker run 命令中有參數(shù)時,守護(hù)進(jìn)程會忽略cmd命令。
  • 使用entrypoint指令不會忽略,并且會接收docker run 參數(shù)附加到命令行中。

為了使構(gòu)建的容器可以正常啟動,我們編寫的dockerfile文件必須包含一個cmd或entrypoint指令。

三、cmd 與 entrypoint的結(jié)合使用

1.cmd

cmd指令有三種形式:

  1. cmd ["executable","param1","param2"]exec形式,這是首選形式)
  2. cmd ["param1","param2"](作為entrypoint 的默認(rèn)參數(shù)
  3. cmd command param1 param2(shell形式)

dockerfile文件中包含多個cmd時,只有最后一個被加載使用。

我們在dockerhub中搜索centos官方鏡像,看一下的官方dockerfile文件。

dockerfile中ENTRYPOINT與CMD的結(jié)合使用及區(qū)別

基本上每一個官方鏡像都會為我們提供各自版本的dockerfile鏈接,如下:

dockerfile中ENTRYPOINT與CMD的結(jié)合使用及區(qū)別

我們查看latest標(biāo)簽的dockerfile

?
1
2
3
4
from scratch
add centos-8-x86_64.tar.xz /
label org.label-schema.schema-version="1.0"     org.label-schema.name="centos base image"     org.label-schema.vendor="centos"     org.label-schema.license="gplv2"     org.label-schema.build-date="20201204"
cmd ["/bin/bash"]

只有四行,這就是構(gòu)建一個latest版本centos8.3.2011鏡像的dockerfile全部內(nèi)容。指定基鏡像(這里從scratch這個空鏡像開始構(gòu)建),添加rootfs內(nèi)容,打標(biāo)簽,通過cmd指定啟動命令。

不止centos,其他debian、ubuntu、busybox等鏡像都只需通過cmd指定啟動命令。比如busybox更為簡約:

?
1
2
3
from scratch
add busybox.tar.xz /
cmd ["sh"]

這種基礎(chǔ)類、工具類鏡像的構(gòu)建我們只需要指定一個必要cmd來啟動容器即可。但是我們編寫一個dockerfile并不是為了啟動容器而編寫,大多數(shù)時候我們要在容器運(yùn)行我們的app,運(yùn)行我們的服務(wù)。

當(dāng)然通過cmd也可以啟動,可是如此一來有一個缺陷,我們上面說到的cmd的啟動命令會被docker run 參數(shù)代替。

我們有下面dockerfile

?
1
2
3
[root@localhost dockerfiles]# cat dockerfile
from centos
cmd ["/bin/top","-b"]

構(gòu)建后,使用參數(shù)ps啟動容器。

?
1
2
3
[root@localhost dockerfiles]# docker run  -it  centos_top:v1  ps
  pid tty          time cmd
    1 pts/0    00:00:00 ps

可看看到啟動容器后top -b 已經(jīng)被替換為ps,并非實現(xiàn)參數(shù)的替換。顯然這不是我們想要的。有沒有什么辦法既可以默認(rèn)啟動應(yīng)用,又可以加載到docker run 參數(shù)?這就是接下來entrypoint與cmd的妙用。

2.entrypoint結(jié)合cmd

entrypoint的exec和shell形式:

  • entrypoint ["executable", "param1", "param2"]
  • entrypoint command param1 param2

上面我們提到cmd ["param1","param2"]形式可以作為entrypoint參數(shù),同時entrypoint 指定的命令無法被docker run 參數(shù)取代。假如我們把cmd和entrypoint兩個指令相結(jié)合,這樣我們就可以通過cmd來接收docker run 參數(shù),然后把參數(shù)傳遞給entrypoint執(zhí)行。

我們以nginx官方dockerfile latest版本1.21為例

dockerfile中ENTRYPOINT與CMD的結(jié)合使用及區(qū)別

首先我們查看dockerfile,這里我們只關(guān)注啟動命令,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
...
copy docker-entrypoint.sh /
copy 10-listen-on-ipv6-by-default.sh /docker-entrypoint.d
copy 20-envsubst-on-templates.sh /docker-entrypoint.d
copy 30-tune-worker-processes.sh /docker-entrypoint.d
entrypoint ["/docker-entrypoint.sh"]
 
expose 80
 
stopsignal sigquit
 
cmd ["nginx", "-g", "daemon off;"]

從上面我們可以看到,在啟動nginx容器時首先運(yùn)行docker-entrypoint.sh腳本并把cmd命令中的參數(shù)nginx -g "daemon off;"傳遞進(jìn)來。即docker run不添加參數(shù)時啟動容器相當(dāng)于執(zhí)行如下腳本與默認(rèn)參數(shù)。

?
1
#docker-entrypoint.sh nginx -g "daemon off;"

當(dāng)我們使用docker run 傳入?yún)?shù)會怎樣?

我傳入nginx-debug

?
1
#docker run -dt nginx nginx-debug -g "daemon off;"

此時啟動容器相當(dāng)于執(zhí)行如下腳本與參數(shù)

?
1
#docker-entrypoint.sh nginx-debug -g "daemon off;"

我們通過ps來看一下我們啟動的容器

?
1
2
3
4
5
6
7
[root@localhost dockerfiles]# ps -ef|grep nginx
root      6327  6306  0 aug12 pts/0    00:00:00 nginx: master process nginx -g daemon off;
101       6384  6327  0 aug12 pts/0    00:00:00 nginx: worker process
101       6385  6327  0 aug12 pts/0    00:00:00 nginx: worker process
root     16800 16780  3 12:51 pts/0    00:00:00 nginx: master process nginx-debug -g daemon off;
101      16857 16800  0 12:51 pts/0    00:00:00 nginx: worker process
101      16858 16800  0 12:51 pts/0    00:00:00 nginx: worker process

顯然我們兩種參數(shù)nginx、nginx-debug的容器都啟動成功!

也就是說我們通過entrypoint ["/docker-entrypoint.sh"]指定的命令在啟動時無論如何都會執(zhí)行,并且可以接收到了docker run 的參數(shù)。

docker-entrypoint.sh是什么?docker-entrypoint.sh這是一個預(yù)處理腳本通常用來過濾命令行參數(shù)或者執(zhí)行exec 來啟動容器為1的進(jìn)程。

通過entrypoint+cmd實現(xiàn)命令默認(rèn)參數(shù)或接收docker run 參數(shù)是一種非常流行并且有用的dockerfile編寫方式。

到此這篇關(guān)于dockerfile中entrypoint與cmd的結(jié)合的文章就介紹到這了,更多相關(guān)dockerfile中entrypoint與cmd內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/qsing/p/15174705.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 狠狠操综合网 | 亚洲国产精品一区二区第一页 | 亚洲国产精品成人 | 免费嗨片网 | 久久久久久久久久久九 | 欧美日韩伊人 | 99精品一区二区三区 | 久久久久久网站 | 精品国产99 | 亚洲第一成年人网站 | 国产精品高清一区二区 | 中文字幕日韩在线 | 国产精品欧美一区二区三区不卡 | 日韩av成人在线观看 | 国产成人精品免高潮在线观看 | 伊人网站 | 精品久久久久久亚洲精品 | 欧美中文字幕一区二区三区亚洲 | 国产一区二区三区在线免费 | av电影一区二区 | 午夜精品一区二区三区在线视频 | 欧美日韩精品一区二区 | www.色.com| 亚洲精品网址 | 日韩成人在线网 | 99久久久国产精品 | 婷婷久久综合 | 亚洲一区二区三区四区的 | 日韩一区不卡 | 免费看国产片在线观看 | 久久国产亚洲精品 | 羞羞羞网站 | 成人午夜电影网 | 九九热视频精品在线观看 | 北条麻妃99精品青青久久 | 久久福利 | 亚洲第一黄色 | 中文免费字幕 | 亚洲一区在线日韩在线深爱 | 91精品入口蜜桃 | 日韩精品一区二区在线视频 |