濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 使用Docker run的選項(xiàng)以覆蓋Dockerfile中的設(shè)置詳解

使用Docker run的選項(xiàng)以覆蓋Dockerfile中的設(shè)置詳解

熱門(mén)標(biāo)簽:話術(shù)外呼系統(tǒng) 哈爾濱400電話去哪辦理 廣東如何申請(qǐng)400電話 燃?xì)夤芫€地圖標(biāo)注顏色 寧波400電話辦理對(duì)企業(yè)的意義 北京人工外呼系統(tǒng)廠家 i智能電話機(jī)器人yeta 西柏坡地圖標(biāo)注 400電話申請(qǐng)要什么條件

通常,我們首先定義Dockerfile文件,然后通過(guò)docker build命令構(gòu)建得到鏡像文件。然后,才能夠基于鏡像文件通過(guò)docker run啟動(dòng)一個(gè)容器的實(shí)例。

那么在啟動(dòng)一個(gè)容器的時(shí)候,就可以改變鏡像文件中的一些參數(shù),而鏡像文件中的這些參數(shù)往往是通過(guò)Dockerfile文件定義的。

但并非Dockerfile文件中的所有定義都可以在啟動(dòng)容器的時(shí)候被重新定義。docker run不能覆蓋的Dockerfile文件指令如下:

  • FROM
  • MAINTAINER
  • RUN
  • ADD
  • COPY

1、覆蓋ENTRYPOINT指令

Dockerfile文件中的ENTRYPOINT指令,用以給出容器啟動(dòng)后默認(rèn)入口。
ENTRYPOINT指令給出容器啟動(dòng)后的默認(rèn)行為,一般難以在啟動(dòng)容器時(shí)覆蓋,但是可以追加命令參數(shù)。示例如下:

  • docker run --entrypoint /bin/bash ...,給出容器入口的后續(xù)命令參數(shù)
  • docker run --entrypoint="/bin/bash ..." ...  ,給出容器的新Shell
  • docker run -it --entrypoint="" mysql bash ,重置容器入口

2、覆蓋CMD指令

Dockerfile文件中的CMD指令,給出容器啟動(dòng)后默認(rèn)執(zhí)行的指令。

可以在啟動(dòng)容器的時(shí)候,為docker run設(shè)置新的命令選項(xiàng),從而覆蓋掉Dockerfile文件中的CMD指令(不會(huì)再咨詢(xún)Dockerfile文件中的CMD指令)。示例如下:

  • docker run ... <New_Command> ,可以給出其他命令以覆蓋Dockerfile文件中的默認(rèn)指令

如果Dockerfile文件中還聲明了ENTRYPOINT指令,則上述指令都將作為參數(shù)追加到ENTRYPOINT指令。

3、覆蓋EXPOSE指令

Dockerfile文件中的EXPOSE指令,用以向容器所在主機(jī)保留端口。

顯然這是運(yùn)行時(shí)容器的一個(gè)特性,所以docker run可以方便地覆蓋該指令。示例如下:

  • docker run --expose="port_number:port_number"
  • docker run -p port_number:port_number/tcp ,打開(kāi)指定范圍的端口
  • docker run --link="another_container_id" ,鏈接到其他容器
  • docker run -P ,打開(kāi)所有端口

4、覆蓋ENV指令

Dockerfile文件中的ENV指令,用以設(shè)置容器中的環(huán)境變量。

啟動(dòng)容器時(shí),自動(dòng)為容器設(shè)置如下環(huán)境變量:

  • HOME,基于USER設(shè)置用戶主目錄
  • HOSTNAME,默認(rèn)容器的主機(jī)名
  • PATH,默認(rèn):/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • TERM,默認(rèn)xterm,如果容器被分配了偽TTY

docker run可以方便地覆蓋該指令。示例如下:

docker run -e "key=value" ... ,設(shè)置新的環(huán)境變量key
docker run -h ... ,覆蓋HOSTNAME
docker run ubuntu /bin/bash -c export

declare -x HOME="/"
declare -x HOSTNAME="85bc26a0e200"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x PWD="/"
declare -x SHLVL="1"
declare -x deep="purple"

通過(guò)腳本,設(shè)置或覆蓋環(huán)境變量

5、覆蓋VOLUME指令

Dockerfile文件中的VOLUME指令,用以為容器設(shè)置的data volumes。

  • docker run -v ...
  • docker run -volumes-from ...

6、覆蓋USER指令

容器內(nèi)部的默認(rèn)用戶是root(uid=0)。
Dockerfile文件中可以通過(guò)USER指定其他用戶為容器的默認(rèn)用戶。

  • docker run -u="" ...
  • docker run --user="" ...

docker run支持-u如下形式:

  • user
  • user:group
  • uid
  • uid:gid
  • user:gid
  • uid:group

7、覆蓋WORKDIR指令

Dockerfile文件中的WORKDIR指令,用以為后續(xù)指令設(shè)置工作目錄。

如果設(shè)置的路徑不存在,則創(chuàng)建該路徑,即時(shí)在后續(xù)指令中根本未使用。

在一個(gè),可以存在多個(gè)WORKDIR。對(duì)于相對(duì)路徑,后續(xù)指令繼承前續(xù)指令。

在WORKDIR中,可以引用前續(xù)已經(jīng)定義的環(huán)境變量。

  • docker run -w="" ...
  • docker run --workdir="" ...

參考鏈接:

https://docs.docker.com/engine/reference/run/

https://docs.docker.com/engine/reference/builder/

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

標(biāo)簽:珠海 湘潭 襄陽(yáng) 阜陽(yáng) 西藏 開(kāi)封 巴中 張家口

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用Docker run的選項(xiàng)以覆蓋Dockerfile中的設(shè)置詳解》,本文關(guān)鍵詞  使用,Docker,run,的,選項(xiàng),以,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用Docker run的選項(xiàng)以覆蓋Dockerfile中的設(shè)置詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于使用Docker run的選項(xiàng)以覆蓋Dockerfile中的設(shè)置詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    汝州市| 星子县| 昌黎县| 衢州市| 景德镇市| 防城港市| 洛南县| 翁源县| 文昌市| 马鞍山市| 青海省| 兴山县| 乃东县| 淮北市| 汽车| 吉安市| 鄂伦春自治旗| 伊吾县| 华安县| 紫云| 平安县| 健康| 隆化县| 遵化市| 高平市| 正蓝旗| 泊头市| 页游| 衡阳县| 广饶县| 逊克县| 晋州市| 凤冈县| 东乌珠穆沁旗| 和顺县| 营山县| 凤山市| 乌海市| 治县。| 綦江县| 华阴市|