單純 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 就是有特權