docker中run命令的t和d的區(qū)別是什么

docker中,run命令用于創(chuàng)建一個(gè)新的容器并運(yùn)行一個(gè)命令,設(shè)置參數(shù)“-t”可以為容器重新分配一個(gè)偽輸入終端,而設(shè)置參數(shù)“-d”則會(huì)在后臺(tái)運(yùn)行容器,并返回容器ID。

docker中run命令的t和d的區(qū)別是什么

本教程操作環(huán)境:linux7.3系統(tǒng)、docker-1.13.1版、Dell G3電腦。

docker中run命令的t和d的區(qū)別是什么

docker run :創(chuàng)建一個(gè)新的容器并運(yùn)行一個(gè)命令

語(yǔ)法

docker?run?[OPTIONS]?IMAGE?[COMMAND]?[ARG...]

OPTIONS說(shuō)明:

  • -a stdin: 指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類型,可選 STDIN/STDOUT/STDERR 三項(xiàng);

  • -d: 后臺(tái)運(yùn)行容器,并返回容器ID;

  • -i: 以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用;

  • -P: 隨機(jī)端口映射,容器內(nèi)部端口隨機(jī)映射到主機(jī)的端口

  • -p: 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口

  • -t: 為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用;

  • –name=”nginx-lb”: 為容器指定一個(gè)名稱;

  • –dns 8.8.8.8: 指定容器使用的DNS服務(wù)器,默認(rèn)和宿主一致;

  • –dns-search example.com: 指定容器DNS搜索域名,默認(rèn)和宿主一致;

  • -h “mars”: 指定容器的hostname;

  • -e username=”ritchie”: 設(shè)置環(huán)境變量;

  • –env-file=[]: 從指定文件讀入環(huán)境變量;

  • –cpuset=”0-2″ or –cpuset=”0,1,2″: 綁定容器到指定CPU運(yùn)行;

  • -m :設(shè)置容器使用內(nèi)存最大值;

  • –net=”bridge”: 指定容器的網(wǎng)絡(luò)連接類型,支持 bridge/host/none/container: 四種類型;

  • –link=[]: 添加鏈接到另一個(gè)容器;

  • –expose=[]: 開(kāi)放一個(gè)端口或一組端口;

  • –volume , -v: 綁定一個(gè)卷

例如:”我想在后臺(tái)運(yùn)行一個(gè)鏡像“,當(dāng)我執(zhí)行下方命令的時(shí)候

docker?run?-d?--name?server?somebody:dockerfile

通過(guò)docker ps查看是否運(yùn)行成功,卻發(fā)現(xiàn),沒(méi)有運(yùn)行成功,這是什么情況呢??后臺(tái)運(yùn)行不就是運(yùn)用-d參數(shù)嗎?其實(shí)主要原因就是這個(gè)鏡像可能最后添加了CMD就類似

CMD?["/bin/bash"]

意思就是當(dāng)你在后臺(tái)運(yùn)行的時(shí)候,這個(gè)鏡像創(chuàng)建的容器會(huì)首先執(zhí)行/bin/bash,這意味著,當(dāng)在后臺(tái)運(yùn)行(-d)時(shí),shell立即退出。所以除非命令未在前臺(tái)運(yùn)行,否則容器會(huì)立即停止

解決方法

通過(guò)-i或者-t為-d提供一個(gè)偽”tty n“

docker?run?-i?-d?images:tags docker?run?-t?-d?images:tags docker?run?-itd?images:tags

將 tail -f /dev/NULL 添加到命令中

通過(guò)執(zhí)行此操作,即使主命令在后臺(tái)運(yùn)行,容器也不會(huì)停止,因?yàn)閠ail會(huì)在前臺(tái)繼續(xù)運(yùn)行。

docker?run?-d?centos?tail?-f?/dev/null

另外一種情況(進(jìn)入容器)也是如此,Docker官方更是提倡-i 和 -t搭配使用,使其行為類似于shell。

docker?run?-i?-t?<tags></tags>

推薦學(xué)習(xí):《docker視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享