Docker 管理術(三):啟動容器與基本指令
安裝完 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 + C 或 exit
,你就會把容器關掉了。如果想要離開容器並保持它繼續運作的話,你要按 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 管理術 目錄
- Docker 管理術(一):為什麼要 Docker
- Docker 管理術(二):安裝 Docker
- Docker 管理術(三):啟動容器與基本指令
- Docker 管理術(四):透過 Dockerfile 撰寫專案環境