新聞中心
Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。幾乎沒(méi)有性能開(kāi)銷,可以很容易地在機(jī)器和數(shù)據(jù)中心運(yùn)行,下面為大家分享一下Docker 容器管理命令

公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出代縣免費(fèi)做網(wǎng)站回饋大家。
如何運(yùn)行 Docker 容器?
眾所周知,Docker 容器只是一個(gè)運(yùn)行于宿主操作系統(tǒng)上的應(yīng)用進(jìn)程,所以你需要一個(gè)鏡像來(lái)運(yùn)行它。Docker 鏡像以進(jìn)程的方式運(yùn)行時(shí)就叫做 Docker 容器。你可以加載本地 Docker 鏡像,也可以從 Docker Hub 上下載。Docker Hub 是一個(gè)提供公有和私有鏡像來(lái)進(jìn)行拉取操作的集中倉(cāng)庫(kù)。官方的 Docker Hub 位于 hub.docker.com。 當(dāng)你指示 Docker 引擎運(yùn)行容器時(shí),它會(huì)首先搜索本地鏡像,如果沒(méi)有找到,它會(huì)從 Docker Hub 上拉取相應(yīng)的鏡像。
讓我們運(yùn)行一個(gè) Apache web 服務(wù)器的 Docker 鏡像,比如 httpd 進(jìn)程。你需要運(yùn)行 docker container run 命令。舊的命令為 docker run, 但后來(lái) Docker 添加了子命令部分,所以新版本支持下列命令:
root@kerneltalks # docker container run -d -p 80:80 httpd
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
3d77ce4481b1: Pull complete
73674f4d9403: Pull complete
d266646f40bd: Pull complete
ce7b0dda0c9f: Pull complete
01729050d692: Pull complete
014246127c67: Pull complete
7cd2e04cf570: Pull complete
Digest: sha256:f4610c3a1a7da35072870625733fd0384515f7e912c6223d4a48c6eb749a8617
Status: Downloaded newer image for httpd:latest
c46f2e9e4690f5c28ee7ad508559ceee0160ac3e2b1688a61561ce9f7d99d682
Docker 的 run 命令將鏡像名作為強(qiáng)制參數(shù),另外還有很多可選參數(shù)。常用的參數(shù)有:
-
-d:從當(dāng)前 shell 脫離容器
-
-p X:Y:綁定容器的端口 Y 到宿主機(jī)的端口 X
-
–name:命名你的容器。如果未指定,它將被賦予隨機(jī)生成的名字
-
-e:當(dāng)啟動(dòng)容器時(shí)傳遞環(huán)境編輯及其值
通過(guò)以上輸出你可以看到,我們將 httpd 作為鏡像名來(lái)運(yùn)行容器。接著,本地鏡像沒(méi)有找到,Docker 引擎從 Docker Hub 拉取了它。注意,它下載了鏡像 httpd:latest, 其中 : 后面跟著版本號(hào)。如果你需要運(yùn)行特定版本的容器,你可以在鏡像名后面注明版本名。如果不提供版本名,Docker 引擎會(huì)自動(dòng)拉取最新的版本。輸出的最后一行顯示了你新運(yùn)行的 httpd 容器的唯一 ID。
如何列出所有運(yùn)行中的 Docker 容器?
現(xiàn)在,你的容器已經(jīng)運(yùn)行起來(lái)了,你可能想要確認(rèn)這一點(diǎn),或者你想要列出你的機(jī)器上運(yùn)行的所有容器。你可以使用 docker container ls 命令。在舊的 Docker 版本中,對(duì)應(yīng)的命令為 docker ps。
root@kerneltalks # docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c46f2e9e4690 httpd "httpd-foreground" 11 minutes ago Up 11 minutes 0.0.0.0:80->80/tcp cranky_cori
列出的結(jié)果是按列顯示的。每一列的值分別為:
-
Container ID :一開(kāi)始的幾個(gè)字符對(duì)應(yīng)你的容器的唯一 ID
-
Image :你運(yùn)行容器的鏡像名
-
Command :容器啟動(dòng)后運(yùn)行的命令
-
Created :創(chuàng)建時(shí)間
-
Status :容器當(dāng)前狀態(tài)
-
Ports :與宿主端口相連接的端口信息
-
Names :容器名(如果你沒(méi)有命名你的容器,那么會(huì)隨機(jī)創(chuàng)建)
如何查看 Docker 容器的歷史紀(jì)錄?
在第一步我們使用了 -d 參數(shù)來(lái)將容器,在它一開(kāi)始運(yùn)行的時(shí)候,就從當(dāng)前的 shell 中脫離出來(lái)。在這種情況下,我們不知道容器里面發(fā)生了什么。所以為了查看容器的歷史紀(jì)錄,Docker 提供了 logs 命令。它采用容器名稱或 ID 作為參數(shù)。
root@kerneltalks # docker container logs cranky_cori
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Thu May 31 18:35:07.301158 2018] [mpm_event:notice] [pid 1:tid 139734285989760] AH00489: Apache/2.4.33 (Unix) configured -- resuming normal operations
[Thu May 31 18:35:07.305153 2018] [core:notice] [pid 1:tid 139734285989760] AH00094: Command line: 'httpd -D FOREGROUND'
這里我使用了容器名稱作為參數(shù)。你可以看到在我們的 httpd 容器中與 Apache 相關(guān)的歷史紀(jì)錄。
如何確定 Docker 容器的進(jìn)程?
容器是一個(gè)使用宿主資源來(lái)運(yùn)行的進(jìn)程。這樣,你可以在宿主系統(tǒng)的進(jìn)程表中定位容器的進(jìn)程。讓我們?cè)谒拗飨到y(tǒng)上確定容器進(jìn)程。
Docker 使用著名的 top 命令作為子命令的名稱,來(lái)查看容器產(chǎn)生的進(jìn)程。它采用容器的名稱或 ID 作為參數(shù)。在舊版本的 Docker 中,只可運(yùn)行 docker top 命令。在新版本中,docker top 和 docker container top 命令都可以生效。
root@kerneltalks # docker container top cranky_cori
UID PID PPID C STIME TTY TIME CMD
root 15702 15690 0 18:35 ? 00:00:00 httpd -DFOREGROUND
bin 15729 15702 0 18:35 ? 00:00:00 httpd -DFOREGROUND
bin 15730 15702 0 18:35 ? 00:00:00 httpd -DFOREGROUND
bin 15731 15702 0 18:35 ? 00:00:00 httpd -DFOREGROUND
root@kerneltalks # ps -ef |grep -i 15702
root 15702 15690 0 18:35 ? 00:00:00 httpd -DFOREGROUND
bin 15729 15702 0 18:35 ? 00:00:00 httpd -DFOREGROUND
bin 15730 15702 0 18:35 ? 00:00:00 httpd -DFOREGROUND
bin 15731 15702 0 18:35 ? 00:00:00 httpd -DFOREGROUND
root 15993 15957 0 18:59 pts/0 00:00:00 grep --color=auto -i 15702
在第一個(gè)輸出中,列出了容器產(chǎn)生的進(jìn)程的列表。它包含了所有細(xì)節(jié),包括用戶號(hào)、進(jìn)程號(hào),父進(jìn)程號(hào)、開(kāi)始時(shí)間、命令,等等。這里所有的進(jìn)程號(hào)你都可以在宿主的進(jìn)程表里搜索到。這就是我們?cè)诘诙€(gè)命令里做得。這證明了容器確實(shí)是宿主系統(tǒng)中的進(jìn)程。
如何停止 Docker 容器?
只需要 stop 命令!同樣,它采用容器名稱或 ID 作為參數(shù)。
root@kerneltalks # docker container stop cranky_cori
cranky_cori
如何列出停止的或不活動(dòng)的 Docker 容器?
現(xiàn)在我們停止了我們的容器,這時(shí)如果我們使用 ls 命令,它將不會(huì)出現(xiàn)在列表中。
root@kerneltalks # docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
所以,在這種情況下,如果想要查看停止的或不活動(dòng)的容器,你需要在 ls 命令里同時(shí)使用 -a 參數(shù)。
root@kerneltalks # docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c46f2e9e4690 httpd "httpd-foreground" 33 minutes ago Exited (0) 2 minutes ago cranky_cori
有了 -a 參數(shù),現(xiàn)在我們可以查看已停止的容器。注意這些容器的狀態(tài)被標(biāo)注為 已退出。既然容器只是一個(gè)進(jìn)程,那么用“退出”比“停止”更合適!
如何(重新)啟動(dòng) Docker 容器?
現(xiàn)在,我們來(lái)啟動(dòng)這個(gè)已停止的容器。這和運(yùn)行一個(gè)容器有所區(qū)別。當(dāng)你運(yùn)行一個(gè)容器時(shí),你將啟動(dòng)一個(gè)全新的容器。當(dāng)你啟動(dòng)一個(gè)容器時(shí),你將開(kāi)始一個(gè)已經(jīng)停止并保存了當(dāng)時(shí)運(yùn)行狀態(tài)的容器。它將以停止時(shí)的狀態(tài)重新開(kāi)始運(yùn)行。
root@kerneltalks # docker container start c46f2e9e4690
c46f2e9e4690
root@kerneltalks # docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c46f2e9e4690 httpd "httpd-foreground" 35 minutes ago Up 8 seconds 0.0.0.0:80->80/tcp cranky_cori
如何移除 Docker 容器?
我們使用 rm 命令來(lái)移除容器。你不可以移除運(yùn)行中的容器。移除之前需要先停止容器。你可以使用 -f 參數(shù)搭配 rm 命令來(lái)強(qiáng)制移除容器,但并不推薦這么做。
root@kerneltalks # docker container rm cranky_cori
cranky_cori
root@kerneltalks # docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
本文題目:Docker容器管理基本命令
當(dāng)前網(wǎng)址:http://m.5511xx.com/article/cdjdosi.html


咨詢
建站咨詢
