基本幫助命令
# 檢視 docker 的基本版本資訊
docker version
# 檢視 docker 的系統資訊,如映象和容器數量
docker info
# 檢視某個命令的幫助
docker xx命令 --help
我們們可以看官方的幫助文件:docs.docker.com/reference/
映象命令
docker images 檢視映象
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
檢視本機上的映象
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 1318b700e415 5 days ago 72.8MB
hello-world latest d1165f221234 4 months ago 13.3kB
關鍵字 | 解釋 |
---|---|
REPOSITORY | 倉庫源 |
TAG | 映象標籤 |
IMAGE ID | 映象 ID |
CREATED | 建立時間 |
SIZE | 映象大小 |
可選引數:
Options:
-a, --all 顯示所有的映象
-q, --quiet 只顯示映象ID
docker search 搜尋映象
搜尋 redis 為例
# docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9734 [OK]
sameersbn/redis 83 [OK]
grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0, 6.2 78
rediscommander/redis-commander Alpine image for redis-commander - Redis man… 63 [OK]
加上引數
過濾 STARS 大於 2000 的 映象
# docker search redis -f STARS=2000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9734 [OK]
我們也可以在 dockerhub 上面直接在頁面上搜尋映象
搜尋到的結果和使用命令搜尋的結果一致
docker pull 下載映象
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
下載 redis 映象為例
# docker pull redis
Using default tag: latest # 預設拉最新版本
latest: Pulling from library/redis # redis 的庫
33847f680f63: Pull complete # 分層下載
26a746039521: Pull complete
18d87da94363: Pull complete
5e118a708802: Pull complete
ecf0dbe7c357: Pull complete
46f280ba52da: Pull complete
Digest: sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 # 簽名
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest # redis 真實下載地址
因此上述的下載操作
docker pull redis 與 docker pull docker.io/library/redis:latest 一致
dockerhub 上面 可以檢視到 redis 支援的版本
我們下載一個 6 版本的 redis
# docker pull redis:6
6: Pulling from library/redis
Digest: sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
Status: Downloaded newer image for redis:6
docker.io/library/redis:6
可以看到 下載 版本 6 的 redis 的時候,沒有分層下載了,說明在上述看到的分層下載他們是共用的
檢視剛才的安裝的映象
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6 aa4d65e670d6 8 days ago 105MB
redis latest aa4d65e670d6 8 days ago 105MB
hello-world latest d1165f221234 4 months ago 13.3kB
docker rmi 刪除映象
- 刪除單個映象
docker rmi -f 容器ID
- 刪除多個映象
docker rmi -f 容器ID 容器ID 容器ID
- 刪除全部映象
docker rmi -f $(docker images -q)
容器命令
容器是基於映象建立的,我們來下載一個 ubuntu 映象
docker pull ubuntu
docker run 新建並啟動容器
docker run [引數] 映象名字 [指令] [引數]
常用引數說明:
--name="xxx" # 執行容器的名字
-d # 後臺方式執行
-it # 互動的方式執行
-p # 指定容器的埠號 例如 -p 6379:6380
常用的操作有 -p 主機埠:容器埠
-P # 隨機指定埠號
啟動 容器裡面的 ubuntu,通過主機名字,我們已經可以看出來主機切換了
root@iZuf66y3tuzn4wp3h02t7pZ:~# docker run -it ubuntu /bin/bash
root@87fb04e2a6e7:/#
退出容器
- 鍵入
exit
命令,容器會退出 - 使用快捷鍵 Ctrl + P + Q ,回到主機,容器不會退出
docker ps 檢視容器
docker ps [OPTIONS]
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73f951b70438 ubuntu "/bin/bash" 2 minutes ago Up 2 minutes vigorous_buck
87fb04e2a6e7 ubuntu "/bin/bash" 7 minutes ago Exited (0) 3 minutes ago flamboyant_tu
可選引數:
# 檢視正在執行的容器
-a # 檢視執行過的容器
-n=xx # 檢視執行過的前 xx 個容器
-s # 檢視容器執行的 大小
-q # 檢視容器 ID
docker rm 刪除容器
docker rm 容器ID # 刪除未執行的容器
docker rm -f 容器ID # 強制刪除正在執行的容器
docker rm -f $(docker ps -aq) # 刪除所有容器
docker ps -aq | xargs docker rm # 刪除所有容器
start,restart,stop,kill 開啟,重啟,停止,強制停止容器
docker start 容器ID
docker restart 容器ID
docker stop 容器ID
docker kill 容器ID
常用其他命令
docker run -d 後臺啟動容器
# 後臺啟動一個 ubuntu
docker run -d ubuntu
# 檢視 執行的容器
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
發現沒有容器正在執行
原因如下:
- docker 後臺啟動服務,需要有一個前臺的程式,否則docker 發現沒有應用,則會將該服務停止
我們主動加一個前臺程式,看看效果
# 臨時加上一個前臺程式
docker run -d ubuntu /bin/bash -c "while true;do echo xiaozhupeiqi;sleep 2;done"
# 檢視正在執行的容器
docker ps
CONTAINER ID IMAGE COMMAND
10ba0e687434 ubuntu "/bin/bash -c 'while…"
可以看出,docker ps 命令已經可以檢視到正在執行的容器了,OK
docker logs 檢視日誌
docker logs [引數] 容器ID
Options:
-f # 和輸出保持一致
-n # 輸出最近的幾行
-t # 列印時間戳
檢視上述容器的日誌
# docker logs -tf -n 5 10ba0e687434
2021-08-01T08:02:51.380512218Z xiaozhupeiqi
2021-08-01T08:02:53.381606198Z xiaozhupeiqi
2021-08-01T08:02:55.382780869Z xiaozhupeiqi
2021-08-01T08:02:57.383890580Z xiaozhupeiqi
2021-08-01T08:02:59.384977473Z xiaozhupeiqi
2021-08-01T08:03:01.386430484Z xiaozhupeiqi
docker top 檢視容器中程式資訊
docker top 容器ID
# docker top 10ba0e68743
UID PID PPID CMD
root 11101 11073 bin/bash -c while true;do echo xiaozhupeiqi;sleep 2;done
root 11504 11101
docker inspect 檢視映象後設資料
docker inspect 容器 ID
輸出資訊中省略了大量資訊
[
{
"Id": "10ba0e6874341b2e2f002c22613a71223ca981dc36df0d1ea4ed3bb5a7a6c58e",
"Created": "2021-08-01T07:57:52.725305443Z",
"Path": "/bin/bash",
"Args": [
"-c",
"while true;do echo xiaozhupeiqi;sleep 2;done"
],
"State": {
...
},
...
"GraphDriver": {
...
},
"Mounts": [],
"Config": {
"Hostname": "10ba0e687434",
...
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash",
"-c",
"while true;do echo xiaozhupeiqi;sleep 2;done"
],
"Image": "ubuntu",
...
},
"NetworkSettings": {
...
}
}
]
docker exec 進入當前執行的容器
docker exec [引數] 容器 ID 指令[指令的引數]
# docker exec -it 10ba0e687434 /bin/bash
root@10ba0e687434:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:04 ? 00:00:00 /bin/bash -c while true;do echo xiaozhupeiqi;sleep 2;done
root 922 0 0 08:34 pts/0 00:00:00 /bin/bash
root 963 0 0 08:35 pts/1 00:00:00 /bin/bash
root 972 1 0 08:35 ? 00:00:00 sleep 2
root 973 963 0 08:35 pts/1 00:00:00 ps -ef
docker attach 進入容器中正在執行的程式
docker attach 容器ID
docker attach 10ba0e687434
docker exec 和 docker attach 的區別
- docker exec
進入容器,會新開一個終端,可以正常操作
- docker attach
進入容器正在執行的終端,不會啟動新的終端
docker cp 將容器內檔案拷貝到主機內
docker cp 容器ID:容器檔案路徑 主機路徑
# 進入容器,在容器的/home 目錄下 建一個檔案 xiaomotong.go
docker exec -it 10ba0e687434 /bin/bash
cd /home/
touch xiaomotong.go
# Ctrl + P + Q 退出容器
# 將容器內檔案拷貝到主機內
docker cp 10ba0e687434:/home/xiaomotong.go ./
docker stats 檢視 docker 內服務記憶體狀態
# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
2772a4050157 nginx1 0.00% 3.02MiB / 1.946GiB 0.15% 25.8kB / 33.1kB 0B / 8.19kB 3
10ba0e687434 loving_bohr 0.00% 4.07MiB / 1.946GiB 0.20% 810B / 0B 1.95MB / 0B 5
總結
關於 docker 的命令還是非常的多,大家可以嘗試按照下面的圖梳理了一下常用的命令列表,便於查詢,如下圖片來源於網路,僅供學習使用
參考資料:
歡迎點贊,關注,收藏
朋友們,你的支援和鼓勵,是我堅持分享,提高質量的動力
好了,本次就到這裡
技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。
我是小魔童哪吒,歡迎點贊關注收藏,下次見~
本作品採用《CC 協議》,轉載必須註明作者和本文連結