[Docker] 常用的 Docker 指令

單純 Docker 命令的彙整筆記

 

以下的 [ContainerID] 請替換成自己的內容,不要包含 [ ] 等符號

 

 

🔶 查看 docker 的版本 (以下兩種指令都可以)

docker --version
docker -v

 

🔶 查看正在執行的 Container

docker ps

 

🔶 查看所有 Container (包含未運行的)

docker ps -a

 

🔶 查看特定 status 的 Container

docker ps --filter status=exited

 

🔶 刪除 Container

docker rm -f [ContainerID]

 

🔶 刪除特定 status 的 Container

docker rm $(docker ps --filter status=exited -q)

 

🔶 重新啟動 Container

docker restart [ContainerID]

 

🔶 查看 Container 的 log

docker logs [ContainerID]

後面加 --follow -f 可以持續更新 log

 

🔶 搜尋 Container log 的特定 string

docker logs [ContaainerID] 2>&1 | grep "Message"

 

🔶 重新命名 Container Name

docker rename [Container-Old-Nmae] [Container-New-Nmae]

 

🔶 列出所有 docker image (以下兩種指令都可以)

docker image ls
docker images

 

🔶 刪除 docker image

docker rmi [ImageID]

 

🔶 刪除沒有任何 Container 使用的 docker image

docker image prune

 

🔶 刪除沒有任何 Container 使用的 docker image (by filter 條件)

docker image prune -a --force --filter "until=240h"

上面的範例單位是 h (小時),240 h = 10 天

更多 prune 說明:docker image prune | Docker Documentation

 

🔶 查看所有 dangling image

docker images -f dangling=true

沒有 tag 的 image 就會變成 dangling image

 

🔶 刪除所有 dangling image

docker rmi $(docker images -f dangling=true -q)

 

🔶 下載 docker image

docker pull [ImageName]

 

🔶 包 docker image 時加 -f 指定 Dockerfile 的路徑 or 自定義的檔名

docker build -f [MyProject.Api/MyDockerfile] .

 

🔶 包 docker image 時加 -t 順便指定 tag

docker build -t [ImageName] .

 

🔶 為現有的 docker image 添加 tag (會產生一個新的 image)

docker tag [ImageTag] [Registry/ImageName]

 

🔶 重新指定 docker image 的 tag

docker image tag [Registry/ImageName:oldTag] [Registry/ImageName:newTag]

 

🔶 刪除所有 Container

docker rm -vf $(docker ps -aq)

-v 刪除與 Container 關聯的 anonymous volumes

-f 強制刪除(即使他還在 running)

-v -f可以寫成 -vf -fv,都可以達到相同的功能

-a 顯示所有 Container (包含所有運行中 & 非運行中的 Container)

-q 僅顯示 Container ID

-aq 等於 -a -q 的簡寫

所以以上 options 結合後,就是列出所有 Container ID 然後把他刪除的意思

 

🔶 刪除所有 image(要先刪 Container 才能刪他使用的 image)

docker rmi -f $(docker images -aq)

Windows 的 cmd 不支援 $() 語法,要在 Windows 執行此指令請使用 Powershell 

 

🔶 查看所有 Volume

docker volume ls

 

🔶 查看所有 dangling volume

docker volume ls -qf dangling=true

沒有任何 Container 引用的 anonymous volumes,稱為 dangling volume

 

🔶 刪除所有 dangling volume

docker volume rm $(docker volume ls -qf dangling=true)

 

🔶 查看所有 network

docker network ls

 

🔶 查看自己 create 的 network 設定

docker network inspect [NetworkName]

 

🔶 將既有 container 與 network 連接

docker network connect [NetworkName] [ContainerName]

 

🔶 斷開 Container 與 Network 連接

docker network disconnect [NetworkName] [ContainerName]

 

🔶 進到 Container 內的 bash shell

docker exec -t -i [ContainerID] bash

-t -i 可以寫成 -ti -it,都可以達到相同的功能

在裡面輸入 exit 即可出去

 

🔶 查看 Docker 的硬碟使用狀況

docker system df

 

🔶 檢查 Container 是否具有特權

docker inspect --format='{{.HostConfig.Privileged}}' [ContainerID]

false 就是沒有特權,true 就是有特權