Docker 常用指令

記錄一些會常用到的指令

在講其他指令之前,先記錄一件事情,有什麼不懂的指令,
只需要在 docker command 後面加上 --help 就會有說明可以參考。

觀察的指令

List Images

  • docker images
    • 偏向單純觀察。
  • docker image
    • 主要是管理 image 的指令。
    • 加了 ls 指令後就會有等同的效果。
1
2
3
4
5
6
7
8
9
10
11
12
## 只 show 出 top level 的 image
docker images
docker image ls

## show 出所有的 images
## 其中還包含了 intermediate layers 的 image
docker images -a
docker image ls -a

## 只列出 image 的 id
docker images -q
docker image ls -q

List Containers

  • docker ps
    • 偏向單純觀察。
  • docker container
    • 主要是管理 container 的指令。
    • 加了 ls 指令後就會有等同的效果。
1
2
3
4
5
6
7
8
9
10
11
12
## 只顯示正在運行的 的 container
docker ps
docker image ls

## show 出所有的 containers
## 其中還包含了沒有運行的 container
docker ps -a
docker container ls -a

## 只列出 images 的 id
docker ps -q
docker container ls -q

Container 的資源使用量

1
2
3
4
5
6
7
8
9
## 顯示目前所有執行中 container 的資源使用量
## 其中包含 CPU、Memeory、網路 I/O、Block I/O
docker stats

## 加了 -a 參數,包含沒有在執行的 container
docker stats -a

## 如果需要觀察特定的 container
docker stats [CONTAINER ID / CONTAINER NAME]

Logs of a Container

  • docker logs
    • 參數 -f:這個指令跟 tail -f 有等同的效果
1
2
## 持續觀察某 Container 的 Log
docker logs -f [CONTAINER ID / CONTAINER NAME]

管理的指令

刪除/移除 相關指令

跟 Image 相關

  • docker rmi
    • 如果 rmrmi 傻傻分不清楚,你可以這樣記: rmi 就是 ReMove Image。
  • docker image rm
    • 這個比較直觀,可以這樣解讀: Docker 到 Images 裡 Remove 特定的 image
1
2
3
4
5
6
7
8
9
## 移除 demo:latest 的 image
## 當然也可以用 Image Id
docker rmi demo:latest

## 移除所有 UNTAGGED 的 image
docker rmi $(docker images --filter "dangling=true" -q)

## 移除所有開頭是 demo 的 image
docker rmi $(docker images --filter=reference='demo*' -q)

跟 Container 相關

先註解 Kill 跟 Stop 的差別:

kill是不管容器同不同意,我直接执行kill -9,强行终止;
stop的话,首先给容器发送一个TERM信号,让容器做一些退出前必须的保护性、安全性操作,
然后让容器自动停止运行,如果在一段时间内,容器还是没有停止,再进行kill -9,强行终止。
– Refer to http://dockone.io/question/158

  • Kill v.s. Stop

    • docker kill
    • docker container kill
    • docker stop
    • docker container stop
  • 執行 Remove 前,需先將 Container 停止。

    • docker rm
    • docker container rm
1
2
3
4
5
## 將所有 Container 殺掉
docker kill $(docker ps -q)

## 將所有 Container 移除
docker rm $(docker ps -a -q)

docker save

1
2
## 將 demo:latest 的 image archive 成 demo.tar
docker save -o ".\demo.tar" demo:latest

docker load

1
2
## Load an image from a archive file
docker load -i demo.tar

docker run

參數說明:

  • --restart:Restart policy to apply when a container exits
    • unless-stopped
      • 不管退出 exit status 是什麽,始終重啟 container。
      • 當 daemon 啟動時,如果 container 之前已經是停止的狀態,就不要嘗試啟動。
  • -d:Run container in background and print container ID
  • -i + -t or -it:Allocate pseudo-TTY
  • -d:Publish a container’s port(s) to the host
  • --name: Assign a name to the container
1
2
3
4
5
## 我要啟動一個名稱為 demo 的 Container。
## 設定當 Docker Daemon 重啟時,demo 也要跟著重啟。
## 我要 demo 有 虛擬終端pty,然後在啟動 demo 後,demo 在背景執行就可以了。
## Container 來源是 demo:latest 這個 image
docker run --restart=unless-stopped -idt -p 8080:80 --name demo demo:latest

docker exec

1
2
## Execute an interactive bash shell on a container, which is called demo.
docker exec -it demo /bin/bash

Reference