【Docker 系列】docker 學(xué)習(xí) 二混滔,Docker 的常用命令
基本幫助命令
# 查看 docker 的基本版本信息
docker version
# 查看 docker 的系統(tǒng)信息贿条,如鏡像和容器數(shù)量
docker info
# 查看某個(gè)命令的幫助
docker xx命令 --help
咱們可以看官方的幫助文檔:https://docs.docker.com/reference/
鏡像命令
docker images 查看鏡像
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
查看本機(jī)上的鏡像
# 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
關(guān)鍵字 | 解釋 |
---|---|
REPOSITORY | 倉庫源 |
TAG | 鏡像標(biāo)簽 |
IMAGE ID | 鏡像 ID |
CREATED | 創(chuàng)建時(shí)間 |
SIZE | 鏡像大小 |
可選參數(shù):
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]
加上參數(shù)
過濾 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 上面直接在頁面上搜索鏡像
搜索到的結(jié)果和使用命令搜索的結(jié)果一致
docker pull 下載鏡像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
下載 redis 鏡像為例
# docker pull redis
Using default tag: latest # 默認(rèn)拉最新版本
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 真實(shí)下載地址
因此上述的下載操作
docker pull redis 與 docker pull docker.io/library/redis:latest 一致
dockerhub 上面 可以查看到 redis 支持的版本
我們下載一個(gè) 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 的時(shí)候,沒有分層下載了乙墙,說明在上述看到的分層下載他們是共用的
查看剛才的安裝的鏡像
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 刪除鏡像
- 刪除單個(gè)鏡像
docker rmi -f 容器ID
- 刪除多個(gè)鏡像
docker rmi -f 容器ID 容器ID 容器ID
- 刪除全部鏡像
docker rmi -f $(docker images -q)
容器命令
容器是基于鏡像創(chuàng)建的益眉,我們來下載一個(gè) ubuntu 鏡像
docker pull ubuntu
docker run 新建并啟動(dòng)容器
docker run [參數(shù)] 鏡像名字 [指令] [參數(shù)]
常用參數(shù)說明:
--name="xxx" # 運(yùn)行容器的名字
-d # 后臺(tái)方式運(yùn)行
-it # 交互的方式運(yùn)行
-p # 指定容器的端口號(hào) 例如 -p 6379:6380
常用的操作有 -p 主機(jī)端口:容器端口
-P # 隨機(jī)指定端口號(hào)
啟動(dòng) 容器里面的 ubuntu段只,通過主機(jī)名字惜浅,我們已經(jīng)可以看出來主機(jī)切換了
root@iZuf66y3tuzn4wp3h02t7pZ:~# docker run -it ubuntu /bin/bash
root@87fb04e2a6e7:/#
退出容器
- 鍵入
exit
命令问欠,容器會(huì)退出 - 使用快捷鍵 Ctrl + P + Q 俺榆,回到主機(jī)感昼,容器不會(huì)退出
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
可選參數(shù):
# 查看正在運(yùn)行的容器
-a # 查看運(yùn)行過的容器
-n=xx # 查看運(yùn)行過的前 xx 個(gè)容器
-s # 查看容器運(yùn)行的 大小
-q # 查看容器 ID
docker rm 刪除容器
docker rm 容器ID # 刪除未運(yùn)行的容器
docker rm -f 容器ID # 強(qiáng)制刪除正在運(yùn)行的容器
docker rm -f $(docker ps -aq) # 刪除所有容器
docker ps -aq | xargs docker rm # 刪除所有容器
start,restart罐脊,stop定嗓,kill 開啟,重啟萍桌,停止宵溅,強(qiáng)制停止容器
docker start 容器ID
docker restart 容器ID
docker stop 容器ID
docker kill 容器ID
常用其他命令
docker run -d 后臺(tái)啟動(dòng)容器
# 后臺(tái)啟動(dòng)一個(gè) ubuntu
docker run -d ubuntu
# 查看 運(yùn)行的容器
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
發(fā)現(xiàn)沒有容器正在運(yùn)行
原因如下:
- docker 后臺(tái)啟動(dòng)服務(wù),需要有一個(gè)前臺(tái)的進(jìn)程上炎,否則docker 發(fā)現(xiàn)沒有應(yīng)用恃逻,則會(huì)將該服務(wù)停止
我們主動(dòng)加一個(gè)前臺(tái)進(jìn)程,看看效果
# 臨時(shí)加上一個(gè)前臺(tái)進(jìn)程
docker run -d ubuntu /bin/bash -c "while true;do echo xiaozhupeiqi;sleep 2;done"
# 查看正在運(yùn)行的容器
docker ps
CONTAINER ID IMAGE COMMAND
10ba0e687434 ubuntu "/bin/bash -c 'while…"
可以看出藕施,docker ps 命令已經(jīng)可以查看到正在運(yùn)行的容器了辛块,OK
docker logs 查看日志
docker logs [參數(shù)] 容器ID
Options:
-f # 和輸出保持一致
-n # 輸出最近的幾行
-t # 打印時(shí)間戳
查看上述容器的日志
# 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 查看容器中進(jìn)程信息
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 查看鏡像元數(shù)據(jù)
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 進(jìn)入當(dāng)前運(yùn)行的容器
docker exec [參數(shù)] 容器 ID 指令[指令的參數(shù)]
# 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 進(jìn)入容器中正在執(zhí)行的程序
docker attach 容器ID
docker attach 10ba0e687434
docker exec 和 docker attach 的區(qū)別
- docker exec
進(jìn)入容器,會(huì)新開一個(gè)終端铅碍,可以正常操作
- docker attach
進(jìn)入容器正在執(zhí)行的終端润绵,不會(huì)啟動(dòng)新的終端
docker cp 將容器內(nèi)文件拷貝到主機(jī)內(nèi)
docker cp 容器ID:容器文件路徑 主機(jī)路徑
# 進(jìn)入容器,在容器的/home 目錄下 建一個(gè)文件 xiaomotong.go
docker exec -it 10ba0e687434 /bin/bash
cd /home/
touch xiaomotong.go
# Ctrl + P + Q 退出容器
# 將容器內(nèi)文件拷貝到主機(jī)內(nèi)
docker cp 10ba0e687434:/home/xiaomotong.go ./
docker stats 查看 docker 內(nèi)服務(wù)內(nèi)存狀態(tài)
# 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
總結(jié)
關(guān)于 docker 的命令還是非常的多胞谈,大家可以嘗試按照下面的圖梳理了一下常用的命令列表尘盼,便于查詢,如下圖片來源于網(wǎng)絡(luò)烦绳,僅供學(xué)習(xí)使用
參考資料:
歡迎點(diǎn)贊卿捎,關(guān)注,收藏
朋友們径密,你的支持和鼓勵(lì)午阵,是我堅(jiān)持分享,提高質(zhì)量的動(dòng)力
好了享扔,本次就到這里
技術(shù)是開放的底桂,我們的心態(tài),更應(yīng)是開放的惧眠。擁抱變化籽懦,向陽而生,努力向前行氛魁。
我是小魔童哪吒暮顺,歡迎點(diǎn)贊關(guān)注收藏厅篓,下次見~