本篇文章給大家?guī)砹岁P(guān)于docker中容器的使用,希望對大家有幫助。
運(yùn)行一個(gè)容器
如果想要找到一個(gè)現(xiàn)有的鏡像,可以在公開的 Docker Hub 上搜索,這里可以找到它的介紹和用法,就像在 GitHub 上找一個(gè)開源項(xiàng)目一樣。
如果你是第一次使用 Docker Hub,可以先注冊一個(gè)賬號,在最頂上的搜索框里輸入 ubuntu ,找到的第一個(gè)結(jié)果就是官方的 ubuntu 鏡像,點(diǎn)開可以看到上圖的頁面。
這個(gè)頁面上有鏡像的一些基本信息和用法介紹,右邊的 docker pull ubuntu 命令用來在本地拉取鏡像。在上一篇已經(jīng)說過,當(dāng)我們實(shí)例化一個(gè)容器時(shí),如果 Docker 在本地找不到指定的鏡像,它會自動進(jìn)行拉取,因此,我們可以直接在本地運(yùn)行:
docker run -i -t ubuntu /bin/bash
這個(gè)命令比上次的示例多了一些參數(shù),下面解釋一下:
-
-i 可以保證容器中開啟 STDIN
-
-t 會為容器分配一個(gè)偽 TTY 終端
-
ubuntu 是鏡像的名稱,相當(dāng)于上個(gè)示例中的 hello-world
-
/bin/bash 是啟動后要在容器中執(zhí)行的命令
其中 -i 和 -t 兩個(gè)參數(shù)可以使容器運(yùn)行起來之后,我們可以與之交互。當(dāng)容器創(chuàng)建完成,Docker 就會執(zhí)行容器中的 /bin/bash 命令,因此,容器運(yùn)行后我們的終端會附著到容器上:
此時(shí),你可以在開啟一個(gè)終端,輸入 docker ps 命令,查看已經(jīng)啟動的容器,得到的結(jié)果如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 402c5d3468d7 ubuntu "/bin/bash" 4 hours ago Up 4 hours reverent_wu
這里展示了容器的 ID、鏡像、最后執(zhí)行的命令、創(chuàng)建時(shí)間、狀態(tài)、名稱。這里的名稱 reverent_wu 是 Docker 自動生成的,如果需要在創(chuàng)建容器時(shí)指定名稱,可以使用 –name 來給容器命名。
深入容器內(nèi)部
當(dāng)前的狀態(tài)下,我們可以在附著到容器的終端執(zhí)行任何 ubuntu 系統(tǒng)下支持的命令。比如,輸入 hostname 命令,發(fā)現(xiàn)容器的 hostname 就是它的容器 ID。
接著,可以看一下 /etc/hosts 文件:
root@402c5d3468d7:/# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 402c5d3468d7
你也可以自己嘗試在容器中查看進(jìn)程,甚至使用 apt-get 安裝軟件包。
最后,可以輸入 exit 命令,推出容器,返回宿主機(jī)的命令提示符。注意,此時(shí)再執(zhí)行 docker ps 時(shí)發(fā)現(xiàn),容器的列表中,已經(jīng)沒有剛剛創(chuàng)建的 ubuntu 容器了。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
當(dāng)我們退出的時(shí)候,容器就停止運(yùn)行了。不過,容器并沒有被刪除,可以通過 docker ps -a 命令,查看所有創(chuàng)建的容器,無論容器啟動與否:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 402c5d3468d7 ubuntu "/bin/bash" 4 hours ago Exited (0) 2 minutes ago reverent_wu
這時(shí),它的狀態(tài)變成了 Exited (0) 2 minutes ago ,表示它在 2 分鐘之前推出,退出的狀態(tài)碼是 0,表示正常退出。
我們可以通過一下的命令重新啟動這個(gè)容器:
docker start 402c5d3468d7
這個(gè)命令中,docker start 后面跟的是容器的 ID,也可以使用容器的名稱。執(zhí)行成功后,再通過 docker ps 命令即可看到容器處于啟動狀態(tài),通過 docker start 命令讓容器重新啟動后,會沿用 docker run 命令指定的參數(shù),也就是啟動后會運(yùn)行 /bin/bash 啟動一個(gè) shell,但是我們并沒有進(jìn)入到容器的命令行當(dāng)中??梢酝ㄟ^ docker attach 命令再次進(jìn)入:
docker attach 402c5d3468d7
此時(shí),就可以繼續(xù)在容器中執(zhí)行命令。
如果一個(gè)容器不再使用了,可以使用 docker rm 命令將它刪除。
docker rm 402c5d3468d7
提供持續(xù)的服務(wù)