安裝完 Docker 以後,就可以啟動各種不同的容器來建立環境。Docker Hub 上有許多的映像檔可供使用,之後就算要建立自己的客製化容器,也是會以 Docker Hub 為基底為主。

新增並啟動 Ubuntu 容器

首先我們以最常見的 Ubuntu Image 為例,下面的指令可以啟動 Ubuntu 容器:

docker run -ti ubuntu bash

接著就可以進到 Ubuntu 的 bash 畫面中。

我們剛剛啟動了 Ubuntu 容器。由於一開始我們並沒有 Docker 的 Ubuntu image,所以它會先花點時間把 ubuntu image 抓下來(Pull 和 Extract 的部分)。

執得注意的是你進到容器裡,要是直接打 Ctrl + Cexit,你就會把容器關掉了。如果想要離開容器並保持它繼續運作的話,你要按 Ctrl + P 再按 Ctrl + Q,才能 detach 容器。

想要進到已經 detach 的容器的話,建議使用 exec 指令,例如:

docker exec -ti [id] bash

其中 [id] 為容器自動產生的隨機 id,此例中是 097d7b257a3c

之後如果要關掉容器,可以用 docker stop [id] 來關掉指定的容器;關掉以後,可以用 docker start [id] 來啟動已存在的容器。

列出容器列表

使用 docker ps 可以看到目前執行中的所有容器;加上 -a 參數可以看到包括停止狀態的所有容器。

可惜的是預設 ps 的資訊太多、寬度太寬,可能會導致它換行以後很難閱讀。可以加上 --format 參數來排版,例如:

docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}\t{{.Ports}}"

就可以只看到一些比較重要的欄位。

新增啟動選項

Docker 預設會幫你的容器指定一個虛擬的 IP(通常第一個會是 172.17.0.2,可以用 docker inspect [id] 指令來查),如果你需要的話,可以在這邊指定把容器的 port 綁到本機的 port。例如你在 run 的時候加上 -p 80:3000,就可以把容器的 port 3000 綁到本機的 80。

另外,每次要啟動、停止容器都要打一長串 id,可以在一開始的時候使用 --name 來命名容器。這樣之後操作 docker stop 等指令時,後面就可以改用容器的名字。

如果需要掛載資料夾的話,可以使用 -v 參數。例如我有個專案放在本機的 /home/noob/project,而我想要掛載到容器的 /usr/src/app,我就可以這樣下:-v /home/noob/project:/usr/src/app

加上這三個常用參數的話會像是這個樣子:

docker run --name project1  -v ~/project_1:/root/project_1 -p 22:22 -ti ubuntu bash

刪除容器

如果你想要把閒置的容器移除的話,可以使用以下指令:

docker rm [id]

檢查/刪除映像檔

多跑了幾個容器後,你可能會從 Docker Hubs 拉好幾個映像檔下來,最後就會很佔硬碟空間。可以使用 docker images 指令查看目前本機有什麼映像檔,也可以用 docker rmi [name] 指令把映像檔移除。

最後來複習一下今天的指令吧:

  • docker run:執行容器
  • docker stop:暫停容器
  • docker start:恢復容器
  • docker inspect:檢視容器詳細資訊
  • docker rm:移除容器
  • docker ps:檢視容器列表
  • docker images:檢視映像檔列表
  • docker rmi:移除映像檔

這邊應該就是常用的 Docker 指令了。

Docker 管理術 目錄