run是最常用的命令,他是docker creat和docker start命令的組合,建立容器並啟動它。run的引數比較難理解的是-i 和-t 以及-d,分別說說這三個。
-i 引數是keep stdin open even if not attached,意思就是會把互動介面保留著。但是要看容器的pid1,或者說看容器的cmd是什麼,有些cmd程式並不會理會任何輸入,也就是說它就沒有等著你輸入命令,這時候你輸入什麼都是無效的。並且,因為linux對pid1的特殊處理,它也不會理會訊號,所以你只能按ctrl+p + ctrl+q,把程式放到後台。(但通常都要run -it一起使用才有效)
allocate a pseudo-tty.作用是分配乙個虛擬的終端,我的理解就是,有了-t引數,這個docker就會被分配乙個終端,在docker中啟動bash就會有提示符。不過,-it總是一起出現的。
run container in background and print container id,就是在後台執行容器。相當於進去之後,按了ctrl+p + ctrl+q。所以可以docker attch回去。在後台執行的容器,只能通過網路和它互動了。
可以定義到底是attach stdin、stdout\stderr,如果沒有定義,則預設是 attach to both stdout and stderr。
容器退出後,自動刪除容器
為容器取乙個名字
設定埠**
要啟動乙個容器,這個容器的pid1應用是乙個不需要與使用者命令列互動的,比如乙個什麼web應用服務,那麼就用-d引數,然容器執行在後台,好好服務。比如:
docker run --name mywebserver -d -p 80:80 my_image nginx -g 'daemon off;'
要啟動乙個容器並且用這個容器來做命令操作,他的pid1程序是乙個和使用者互動的程式,比如啟動一台busybox(pid1是bash),那麼用 -it。比如:
docker run -a stdin -a stdout -i -t ubuntu /bin/bash
或者
docker run --name myubuntu -it ubuntu /bin/bash
如果要工作後即焚毀,那麼就帶上--rm就好了。
如果容器要從管道中獲取輸入,就不允許帶-t了。比如:
$ echo test | docker run -i busybox cat
start是啟動乙個已經存在的容器,他有兩個引數-a 和-i。
attach stdout/stderr。 -a引數帶上了的話,那麼會把pid1程式的輸出都帶到終端上
attach container's stdin。 -i引數是為了讓容器相應輸入,作用其實和run中的-i一樣。
啟動乙個容器作為服務,就什麼引數都不要帶,讓他執行在後台。
啟動乙個容器作為互動應用,就帶上-i。
attach命令把乙個後台執行的容器搞到前台來,這樣你就可以看到他們的輸出,並且使用輸入了。
關閉輸入,這樣你就不能使用輸入了
訊號**,預設開啟,這樣dmd程序就可以收到你的訊號了。
把後台邊前台,基本上就是一種單一的用法docker attach container_name了。
(1)因為attach是進入了和cmd程式互動,但是cmd程式未必就會相應你的輸入(一般程式都不會相應你的輸入吧,因為他有沒有動標準流中讀取什麼東西),所以不要以為程式死了。
(2)因為linux對pid1程式的特殊照顧,所以它本身不會相應任何訊號,除非程式自己定義了相應訊號的處理方案。也就是說,你按ctrl+c可能沒什麼反應哦。
(3)因為attach對stdout和stderr做了1m的快取,如果快取佔滿了,輸出就會有卡頓感,所以如果程式有大量的輸出,就不要用attach去看,而應該用docker logs去看log哦。
(4)如果容器建立的時候是tty-enabled container (i.e.: launched with-t
),那麼就不允許重定向輸入哦。
attach的退出碼是容器退出後的退出碼。
這個命令是用已經執行的容器執行命令。需要注意的是,如果容器關閉後再次執行,那麼用exec命令執行的命令是不會自己再次執行的。
讓命令在後台執行。
設定環境變數
執行互動命令的時候用
分別設定命令執行的使用者和work directory。
你要執行互動的程式,那麼就用-it。否則,就什麼引數都不帶
你要改變使用者或者工作目錄,則使用-u或-w。
小白工作常用docker命令
常用 docker ps 檢視執行容器 docker ps a 檢視所有容器 docker images 檢視映象 docker pull 拉取映象 docker pull node 12.8.0,docker pull nginx alpine docker rmi 映象id 刪除指定映象 doc...
小白學Docker 五 容器使用中的命令
首先我們可以輸入docker命令來檢視docker客戶端的所有命令選項 可以通過docker command help 更深入的了解指定的docker命令使用 docker stats help 來檢視指令的具體使用方法 如果我們本地沒有映象 我們可以使用docker pull命令來載入映象 以ub...
docker中的命令
docker常用命令 docker images docker ps a 檢視所有映象 docker rmi 映象名稱或者映象id 刪除映象 docker stop 停止映象 docker ps l 最近的 docker ps a q 檢視所有容器id docker ps n 2 檢視2個容器 do...