docker run 的 -i -t -d參數

前言

在這裏插入圖片描述
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的 Linux或Windows 機器上,也可以實現虛擬化。

但是每次運行容器的時候都會遇到——“我是執行了docker run可是就是沒有啓動成功”,這是啥情況呢,一般都是(-i, -t, -d)這三個參數的使用問題,所以下面就詳細介紹一下這-i,-t,-d都應用在什麼情況下以及又應該怎麼組合搭配使用

這三個參數(-i, -t, -d)是啥意思

Options Mean
-i 以交互模式運行容器,通常與 -t 同時使用;
-t 爲容器重新分配一個僞輸入終端,通常與 -i 同時使用;
-d 後臺運行容器,並返回容器ID;

該如何組合應用這三個參數

例如:”我想在後臺運行一個鏡像“,當我執行下方命令的時候

docker run -d --name server somebody:dockerfile

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

CMD ["/bin/bash"]

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

  1. 通過-i或者-t爲-d提供一個僞”tty n“

docker run -i -d images:tags

docker run -t -d images:tags

docker run -itd images:tags

  1. 將 tail -f /dev/null 添加到命令中
    通過執行此操作,即使主命令在後臺運行,容器也不會停止,因爲tail會在前臺繼續運行。

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

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

docker run -i -t <images:tags>

更多細節在官方文檔有提到哦
分離模式 and in 前臺模式 (-t, -i or -it)

其他參數

Options Mean
-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” or --cpuset=“0,1,2” 綁定容器到指定CPU運行;
-m 設置容器使用內存最大值;
–net=“bridge” 指定容器的網絡連接類型,支持 bridge/host/none/container: 四種類型;
–link=[] 添加鏈接到另一個容器;
–expose=[] 開放一個端口或一組端口;
–volume , -v 綁定一個卷

關於作者

聯繫方式 - [email protected]

你也可以通過 github | csdn | @新浪微博 關注我的動態

    如果有任何問題或者建議,歡迎大家評論點贊👍

我的Docker專欄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章