主頁(yè) > 知識(shí)庫(kù) > 分享8個(gè)基本的Docker容器管理命令

分享8個(gè)基本的Docker容器管理命令

熱門標(biāo)簽:如何分析地圖標(biāo)注 新余高德地圖標(biāo)注怎么修改 外呼系統(tǒng)坐席費(fèi)計(jì)入會(huì)計(jì)哪個(gè)科目 撫順地圖標(biāo)注 大連400電話如何申請(qǐng) 電銷機(jī)器人價(jià)值 電銷機(jī)器人怎么接線路 高德地圖標(biāo)注好做嗎 達(dá)亞電銷機(jī)器人官網(wǎng)

前言:

在這篇文章中,我們將帶你學(xué)習(xí) 8 個(gè)基本的 Docker 容器命令,它們操控著 Docker 容器的基本活動(dòng),例如 運(yùn)行run、 列舉list、 停止stop、 查看歷史紀(jì)錄logs、 刪除delete 等等。文末福利!

利用這 8 個(gè)命令可以學(xué)習(xí) Docker 容器的基本管理方式。這是一個(gè)為 Docker 初學(xué)者準(zhǔn)備的,帶有示范命令輸出的指南。

在這篇文章中,我們將帶你學(xué)習(xí) 8 個(gè)基本的 Docker 容器命令,它們操控著 Docker 容器的基本活動(dòng),例如 運(yùn)行run、 列舉list、 停止stop、 查看歷史紀(jì)錄logs、 刪除delete 等等。如果你對(duì) Docker 的概念很陌生,推薦你看看我們的 介紹指南,來(lái)了解 Docker 的基本內(nèi)容以及 如何 在 Linux 上安裝 Docker。 現(xiàn)在讓我們趕快進(jìn)入要了解的命令:

如何運(yùn)行 Docker 容器?

眾所周知,Docker 容器只是一個(gè)運(yùn)行于宿主操作系統(tǒng)host OS上的應(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)行拉取pull操作的集中倉(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 :一開始的幾個(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)將容器,在它一開始運(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)uid、進(jìn)程號(hào)pid,父進(jìn)程號(hào)ppid、開始時(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)注為 已退出exited。既然容器只是一個(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í),你將開始一個(gè)已經(jīng)停止并保存了當(dāng)時(shí)運(yùn)行狀態(tài)的容器。它將以停止時(shí)的狀態(tà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

你看,一旦移除了容器,即使再使用 ls -a 命令也查看不到容器了。

總結(jié)

以上所述是小編給大家介紹的8個(gè)基本的Docker容器管理命令,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

標(biāo)簽:衡水 黃石 楊凌 湖南 新鄉(xiāng) 南通 遼源 海東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《分享8個(gè)基本的Docker容器管理命令》,本文關(guān)鍵詞  分享,8個(gè),基本,的,Docker,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《分享8個(gè)基本的Docker容器管理命令》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于分享8個(gè)基本的Docker容器管理命令的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章