跳至主要内容

Common Command

基本 Docker 指令教學

現在你已經成功安裝 Docker,接下來我們要學習一些基本的 Docker 指令,這些指令將幫助你管理映像檔(Image)、容器(Container),並進行基礎操作。


1. 查看 Docker 版本

確認 Docker 是否安裝成功:

docker --version

顯示結果範例:

Docker version 24.0.5, build a8a5b65

檢查 Docker 服務是否正在運行:

docker info

這會顯示 Docker 伺服器的詳細資訊,包括容器數量、映像檔數量、儲存驅動等。


2. 取得與管理 Docker 映像檔(Image)

下載映像檔

Docker 提供許多官方映像檔,你可以從 Docker Hub 下載:

docker pull <映像檔名稱>

例如下載 Nginx:

docker pull nginx

這會下載 nginx 的最新版本(latest)。

如果要下載特定版本:

docker pull nginx:1.21

查看本地端已有的映像檔

docker images

顯示範例:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx latest 4cdc5dd7eaad 2 weeks ago 142MB

這表示我們已下載 nginx:latest,映像檔 ID 為 4cdc5dd7eaad

刪除映像檔

如果想刪除一個不用的映像檔:

docker rmi <映像檔名稱或 IMAGE ID>

例如:

docker rmi nginx

如果映像檔被容器使用,則需先刪除對應的容器。


3. 操作 Docker 容器(Container)

執行容器

使用 docker run 來執行一個容器:

docker run <映像檔名稱>

例如執行 Nginx:

docker run nginx

但這樣執行的容器會馬上結束,因為 Nginx 預設為前景執行。

讓容器保持執行狀態(背景模式 -d

docker run -d --name mynginx nginx
  • -d:背景執行(detached mode)
  • --name mynginx:指定容器名稱 mynginx

查看目前運行的容器:

docker ps

若要查看所有容器(包含已停止的):

docker ps -a

讓容器的 Port 映射(Port Mapping -p

在 Docker 中,容器內部的應用程式通常會監聽某個 內部 Port(例如 Nginx 監聽 80),但這個 Port 預設是無法從主機存取的。 如果希望主機可以存取容器內的服務,就需要使用 -p 參數來做 Port Mapping(端口映射)

docker run -p <主機端口>:<容器端口> <映像檔>

其中:

  • 主機端口(HOST_PORT):你希望在本機存取的端口
  • 容器端口(CONTAINER_PORT):容器內部應用程式監聽的端口

進入執行中的容器

有時我們需要進入容器內部進行操作:

docker exec -it <容器名稱或 ID> bash

例如:

docker exec -it mynginx bash

如果容器內沒有 bash,可以試:

docker exec -it mynginx sh

結束操作時輸入 exit

停止、啟動和重啟容器

  • 停止容器

    docker stop <容器名稱或 ID>

    例如:

    docker stop mynginx
  • 啟動已停止的容器

    docker start <容器名稱或 ID>
  • 重啟容器

    docker restart <容器名稱或 ID>

刪除容器

若容器已經停止,才能刪除:

docker rm <容器名稱或 ID>

如果想強制刪除執行中的容器:

docker rm -f <容器名稱或 ID>

如果要一次刪除所有容器:

docker rm -f $(docker ps -aq)

4. 連接容器與主機端口

通常我們會希望讓容器內的應用程式對外部訪問,例如讓 Nginx 伺服器對外開放 80 號 port

docker run -d -p 8080:80 --name mynginx nginx

這裡的 -p 8080:80 代表:

  • 主機的 8080 連接到容器的 80(Nginx 預設監聽 80)
  • 在瀏覽器開啟 http://localhost:8080 就能看到 Nginx 頁面。

5. 透過 Docker Volume 儲存資料

容器內的資料預設會隨著容器刪除而消失,因此可以使用**Volume(資料卷)**來永久儲存資料。

創建 Volume

docker volume create mydata

查看現有的 Volume

docker volume ls

掛載 Volume 到容器

docker run -d -v mydata:/usr/share/nginx/html --name mynginx nginx

這表示 mydata Volume 會掛載到 Nginx 的 /usr/share/nginx/html,確保網站資料不會因容器刪除而遺失。


6. 建立自訂網路

有時候我們希望多個容器能夠互相通訊,例如 Web 伺服器 + 資料庫

創建 Docker 網路

docker network create mynetwork

使用該網路來啟動容器

docker run -d --name web --network mynetwork nginx
docker run -d --name db --network mynetwork mysql

這樣 webdb 容器可以互相通訊,例如 web 可以透過 db:3306 連接 MySQL。


7. 清理 Docker 資源

Docker 會累積大量映像檔和容器,占用磁碟空間,因此建議定期清理。

刪除未使用的映像檔

docker image prune -a

刪除所有停止的容器

docker container prune

刪除未使用的 Volume

docker volume prune

一次清理所有資源

docker system prune -a

⚠️ 注意:這會刪除所有未使用的映像檔、容器、網路和 Volume,請謹慎使用。


總結

指令功能
docker pull下載映像檔
docker images查看現有映像檔
docker rmi刪除映像檔
docker run執行容器
docker ps查看運行中的容器
docker ps -a查看所有容器
docker stop停止容器
docker start啟動容器
docker restart重啟容器
docker rm刪除容器
docker exec進入容器
docker volume create創建 Volume
docker network create創建網路
docker system prune清理 Docker 資源

接下來,我們將學習如何建立 Dockerfile,製作自己的 Docker 映像檔! 🚀