首頁 >運維 >Docker >docker中run指令的t和d的差別是什麼

docker中run指令的t和d的差別是什麼

WBOY
WBOY原創
2022-01-28 15:38:188247瀏覽

在docker中,run指令用來建立一個新的容器並執行一個指令,設定參數「-t」可以為容器重新指派一個偽輸入終端,而設定參數「-d」則會在後台運行容器,並返回容器ID。

docker中run指令的t和d的差別是什麼

本教學操作環境:linux7.3系統、docker-1.13.1版、Dell G3電腦。

docker中run指令的t和d的差別是什麼

docker run :建立一個新的容器並執行一個指令

語法

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

# OPTIONS說明:

  • -a stdin: 指定標準輸入輸出內容類型,可選STDIN/STDOUT/STDERR 三項;

  • -d : 後台運行容器,並返回容器ID;

  • -i: 以交互模式運行容器,通常與-t 同時使用;

  • -P: 隨機連接埠映射,容器內部連接埠隨機映射到主機的連接埠

  • -p: 指定連接埠映射,格式為:主機(宿主)連接埠:容器連接埠

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

  • --name="nginx-lb": 為容器指定一個名稱;

  • --dns 8.8.8.8: 指定容器使用的DNS伺服器,預設和宿主一致;

  • -- dns-search example.com: 指定容器DNS搜尋域名,預設與宿主一致;

  • #-h "mars": 指定容器的hostname;

  • #-e username="ritchie": 設定環境變數;

  • --env-file=[]: 從指定檔案讀入環境變數;

  • --cpuset="0-2" 或 --cpuset="0,1,2": 綁定容器到指定CPU運作;

  • -m :設定容器使用記憶體最大值;

  • --net="bridge": 指定容器的網路連線類型,支援bridge/host/none/container: 四種型別;

  • --link=[]: 新增連結到另一個容器;

  • #--expose=[]: 開放一個連接埠或一組連接埠;

  • --volume , -v: 綁定一個卷

例如:」我想在後台運行一個鏡像“,當我執行下方指令的時候

docker run -d --name server somebody:dockerfile

透過docker ps查看是否運行成功,卻發現,沒有運行成功,這是什麼情況呢? ?後台運作不就是運用-d參數嗎?其實主要原因就是這個鏡像可能最後添加了CMD就類似

CMD ["/bin/bash"]

意思就是當你在後台運行的時候,這個鏡像創建的容器會首先執行/bin/bash,這意味著,當在後台執行(-d)時,shell立即退出。所以除非指令未在前台運行,否則容器會立即停止

解決方法

透過-i或-t為-d提供一個偽」tty n「

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

將tail -f /dev/null 新增至命令中

透過執行此操作,即使主命令在背景執行,容器也不會停止,因為tail會在前台繼續運行。

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

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

docker run -i -t <images:tags>

推薦學習:《docker影片教學

#

以上是docker中run指令的t和d的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn