如何運行容器?- 天天5分鐘玩轉 Docker 容器技術(22)

上一章咱們學習瞭如何構建 Docker 鏡像,並經過鏡像運行容器。本章將深刻討論容器:學習容器的各類操做,容器各類狀態之間如何轉換,以及實現容器的底層技術。docker

運行容器

docker run 是啓動容器的方法。在討論 Dockerfile 時咱們已經學習到,可用三種方式指定容器啓動時執行的命令:bash

  1. CMD 指令。學習

  2. ENTRYPOINT 指令。spa

  3. 在 docker run 命令行中指定。命令行

例以下面的例子:調試

103.png

容器啓動時執行 pwd,返回的 / 是容器中的當前目錄。 執行 docker ps 或 docker container ls 能夠查看 Docker host 中當前運行的容器:日誌

咦,怎麼沒有容器?用 docker ps -a 或 docker container ls -a 看看。code

-a 會顯示全部狀態的容器,能夠看到,以前的容器已經退出了,狀態爲Exitedorm

這種「一閃而過」的容器一般不是咱們想要的結果,咱們但願容器可以保持 runing 狀態,這樣才能被咱們使用。server

讓容器長期運行

如何讓容器保存運行呢?

由於容器的生命週期依賴於啓動時執行的命令,只要該命令不結束,容器也就不會退出。

理解了這個原理,咱們就能夠經過執行一個長期運行的命令來保持容器的運行狀態。例如執行下面的命令:

while 語句讓 bash 不會退出。咱們能夠打開另外一個終端查看容器的狀態:

可見容器仍處於運行狀態。不過這種方法有個缺點:它佔用了一個終端。

咱們能夠加上參數 -d 之後臺方式啓動容器。

容器啓動後回到了 docker host 的終端。這裏看到 docker 返回了一串字符,這是容器的 ID。經過 docker ps 查看容器:

如今咱們有了兩個正在運行的容器。這裏注意一下容器的 CONTAINER ID和 NAMES 這兩個字段。

CONTAINER ID 是容器的 「短ID」,前面啓動容器時返回的是 「長ID」。短ID是長ID的前12個字符。

NAMES 字段顯示容器的名字,在啓動容器時能夠經過 --name 參數顯式地爲容器命名,若是不指定,docker 會自動爲容器分配名字。

對於容器的後續操做,咱們須要經過 「長ID」、「短ID」 或者 「名稱」 來指定要操做的容器。好比下面中止一個容器:

這裏咱們就是經過 「短ID」 指定了要中止的容器。

經過 while 啓動的容器雖然可以保持運行,但實際上沒有幹什麼有意義的事情。容器常見的用途是運行後臺服務,例如前面咱們已經看到的 http server:

這一次咱們用 --name 指定了容器的名字。 咱們還看到容器運行的命令是httpd-foreground,經過 docker history 可知這個命令是經過 CMD 指定的。

咱們常常須要進到容器裏去作一些工做,好比查看日誌、調試、啓動其餘進程等。下一節學習如何進入容器內部。

二維碼+指紋.png

相關文章
相關標籤/搜索