1 容器生命週期管理
1.1 docker start
啓動一或多個已被停止的容器。
# 啓動已被停止的容器myrunoob
docker start myrunoob
1.2 docker stop
停止一個運行中的容器
docker stop myrunoob
1.3 docker restart
重啓容器
docker restart myrunoob
1.4 docker run
創建一個新的容器並運行一個命令。
要根據 docker images
命令的結果啓動對應鏡像的容器,執行:
- 運行
docker images
命令查看當前系統中所有可用的鏡像列表。 - 從結果中找到您想要啓動的鏡像的
REPOSITORY
和TAG
。 - 使用
docker run
命令啓動一個新的容器。該命令的基本格式爲docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
。其中IMAGE
是鏡像的名稱,可能包括TAG
(如果未指定,則默認爲latest
)。
案例:
- 查看鏡像列表:
docker images
輸出:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 c3c304cb4f22 2 weeks ago 64.2MB
nginx latest 9beeba249f3e 3 weeks ago 109MB
啓動名爲 nginx
的鏡像:
docker run -d -p 8080:80 --name mynginx nginx
在這個例子中:
-d
選項表示在後臺運行容器。-p 8080:80
表示將容器的 80 端口映射到主機的 8080 端口。--name mynginx
爲您的容器設置了一個名字mynginx
,方便以後引用。nginx
是您選擇的鏡像名稱。
如果您需要使用特定的標籤,可以將其附加到鏡像名稱後面,例如 nginx:1.17
。
根據具體需求添加或修改命令行選項,如需在容器啓動時執行特定的命令或傳遞環境變量等。
實例:
docker run \
-p 6379:6379 --name redis \
# 將主機上的 /home/redis6/data 目錄掛載到容器內部的 /data 目錄,以便可以將 Redis 數據持久化到主機
-v /home/redis6/data:/data \
# 將主機上的 /home/redis6/conf/redis.conf 文件掛載到容器內部的 /etc/redis/redis.conf 文件,以便可以使用自定義的 Redis 配置文件
-v /home/redis6/conf/redis.conf:/etc/redis/redis.conf \
# 指定要使用的 Redis 鏡像及版本號,並在後臺運行容器
-d redis:6.2.7 \
# 在容器內部執行的命令,啓動 Redis 服務,並使用 /etc/redis/redis.conf 配置文件
redis-server /etc/redis/redis.conf
-a stdin
指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;
-d
後臺運行容器,並返回容器ID;
-i:--interactive 以交互模式運行容器,通常與 -t 同時使用,即使未連接STDIN也保持打開狀態
-P: 隨機端口映射,容器內部端口隨機映射到主機的端口
-p: 指定端口映射,格式爲:主機(宿主)端口:容器端口
-t: --tty Allocate a pseudo-TTY爲容器重新分配一個僞輸入終端,通常與 -i 同時使用;
--name="nginx-lb"
爲容器指定一個名稱
--dns 8.8.8.8: 指定容器使用的DNS服務器,默認和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默認和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 設置環境變量;
--env-file=[]: 從指定文件讀入環境變量;
--cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
-m :設置容器使用內存最大值;
--net="bridge": 指定容器的網絡連接類型,支持 bridge/host/none/container
--link=[]: 添加鏈接到另一個容器;
--expose=[]: 開放一個端口或一組端口;
--volume , -v: 綁定一個卷
# 設置容器的重啓策略爲 always,只能在 Docker 1.2 或更高版本中使用
--restart=always
2 本地鏡像管理(鏡像操作命令)
2.1 image
# 列出本機所有 image 文件
$ docker image ls
# 刪除 image 文件
$ docker image rm [imageName]
實戰
[root@scheduler-center-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb88be2a8283 xuxueli/xxl-job-admin:2.4.0 "sh -c 'java -jar $J…" 15 hours ago Up 15 hours 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp xxl-job-admin
[root@scheduler-center-1 ~]# docker image rm xxl-job-admin
Error response from daemon: No such image: xxl-job-admin:latest
[root@scheduler-center-1 ~]# docker rm xxl-job-admin
Error response from daemon: You cannot remove a running container fb88be2a828361ed7173d94a346a7c7c2a4aa11bb17d82450a4424ddf44651f0. Stop the container before attempting removal or force remove
[root@scheduler-center-1 ~]# docker rm xuxueli/xxl-job-admin:2.4.0
Error response from daemon: No such container: xuxueli/xxl-job-admin:2.4.0
試圖刪除 Docker 容器和 Docker 鏡像,但遇到報錯:
-
刪除容器時報錯:
docker rm xxl-job-admin
錯誤信息:You cannot remove a running container fb88be2a8283... Stop the container before attempting removal or force remove
原因:你不能刪除正在運行的容器。在這種情況下,容器 "fb88be2a8283" 處於運行狀態。
解決方法:首先停止容器,然後再刪除。停止容器:
docker stop xxl-job-admin
然後再嘗試刪除容器。
-
刪除鏡像時報錯:
docker image rm xxl-job-admin
錯誤信息:Error response from daemon: No such image: xxl-job-admin:latest
原因:Docker 引擎無法找到名爲 "xxl-job-admin" 的鏡像,可能是因爲該鏡像不存在或者被命名爲 "xuxueli/xxl-job-admin:2.4.0"。
解決方法:確保要刪除的鏡像名稱是正確的。如果你要刪除 "xuxueli/xxl-job-admin:2.4.0",則應該使用如下命令:
docker image rm xuxueli/xxl-job-admin:2.4.0
image inspect
查看 Docker 鏡像詳細信息:
[root@service-monitoring ~]# docker image inspect mysql:5.7.42-oracle | grep -i version
"GOSU_VERSION=1.16",
"MYSQL_VERSION=5.7.42-1.el7",
"MYSQL_SHELL_VERSION=8.0.33-1.el7"
"DockerVersion": "20.10.23",
"GOSU_VERSION=1.16",
"MYSQL_VERSION=5.7.42-1.el7",
"MYSQL_SHELL_VERSION=8.0.33-1.el7"
有時可用於查看 lastest 標籤的 image,版本號到底多少。
而 docker inspect
命令是用於查看 Docker 對象(如容器、鏡像、網絡等)的詳細信息,它不僅可以查看鏡像的元數據,還可以查看容器的元數據、網絡的元數據等。
image文件是通用的,一臺機器的 image 文件拷貝到另一臺機器,照樣可以使用。爲節省時間,儘量使用別人製作好的 image 文件。即使定製,也應基於別人的 image 文件進行加工,而不是從0開始。
爲方便共享,image 文件製作完成後,上傳到倉庫:
- Docker 官方倉庫 Docker Hub 是最重要、最常用的 image 倉庫
- 出售自己製作的 image 文件也可
2.2 images
docker images = docker image ls
列出當前系統所有可用 Docker 鏡像。提供repository、tag、image ID、和size的摘要信息。可查看在本地機器下載或創建的鏡像。
docker image
和 docker images
區別:
docker image
命令是 Docker 17.06 版本後新增命令,用於管理 Docker 鏡像。可用來列出本地鏡像、刪除本地鏡像、構建鏡像等操作。如使用docker image ls
命令可以列出本地所有的鏡像docker images
命令是早期版本的 Docker 命令,用於列出本地所有鏡像。功能與docker image ls
完全相同,只是命令不同
2.3 rmi
不想要某 image 時可用。
等效命令:
docker rmi imageId
2.4 tag
docker image build
從Dockerfile構建image
Usage: docker image build [OPTIONS] PATH | URL | -
history
docker history image_id
docker save
可將Docker鏡像保存成tar文件,方便在不同環境中遷移和分享鏡像。
docker save
# OPTIONS爲可選參數
[OPTIONS]
# IMAGE爲需要導出的Docker鏡像的名稱(可以是多個)
IMAGE [IMAGE...]
如:
# 將myimage鏡像保存爲名爲myimage.tar的tar文件,並指定了輸出路徑爲/path/to/。
docker save -o /path/to/myimage.tar myimage
-o, --output string:指定輸出的壓縮文件(.tar或.tgz)路徑和名稱
-q, --quiet:靜默模式,只輸出錯誤信息和進度條
--tag string:指定要導出的鏡像的tag名稱
運行這個命令之前,要先使用docker pull命令下載需要導出的鏡像。
docker load
docker import
3 container
3.1 容器文件
image 文件生成的容器實例,本身也是一個文件,稱爲容器文件。也就是說,一旦容器生成,就會同時存在兩個文件:
- image 文件
- 容器文件
關閉容器並不會刪除容器文件,僅是容器停止運行。
docker container ls
# 列出本機正在運行的容器
[root@scheduler-center-1 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb88be2a8283 xuxueli/xxl-job-admin:2.4.0 "sh -c 'java -jar $J…" 16 hours ago Up 16 hours 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp xxl-job-admin
# 列出本機所有容器,包括終止運行的容器
docker container ls --all(-a)
輸出結果包括容器 ID。很多地方都要提供這 ID,如上一節終止容器運行的docker container kill命令。
有人說 docker ps & docker ps -a 更方便查看 container 運行狀態呀!因爲 docker container options 是Docker 1.13中的更新,docker container ls 與 docker ps 功能相同,但語義更明確,簡化Docker用法,更推薦新寫法。
-q
直接顯示當前所有容器的 container id
docker container ls -aq
docker container ls -a | awk {'print$1'}
過濾狀態字段顯示
docker container ls -f "status=exited"
docker container rm
終止運行的容器文件,依然會佔據硬盤空間,可以使用docker container rm命令刪除。
docker container rm [containerID]
運行上面的命令之後,再使用docker container ls -a
命令,就會發現被刪除的容器文件已經消失了。
全部刪除
由於一個個指定 containerid 很麻煩,可以全部刪除:
docker rm $(docker container ls -aq)
條件過濾刪除
比如,我們想把退出的給全部刪除
- 篩選出退出狀態的image 文件
直接刪除
docker rm $(docker container ls -f "status=exited" -q)
docker container commit
根據容器的更改創建新image,比如在原 image 基礎上安裝了新的軟件,那就可以上傳新 image。
Usage: docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
可簡寫爲
docker commit
4 容器操作命令
4.1 ps
docker ps
,用於列出當前正在運行的容器的命令。它可以顯示容器的 ID、名稱、狀態、啓動時間、所使用的鏡像等信息。
如果在命令行中執行 docker ps
,會輸出當前正在運行的容器的列表,包括容器的 ID、名稱、狀態、啓動時間、所使用的鏡像等信息。例如:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec88509b8b1b mysql:5.7.42-oracle "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
上面的輸出表示只有一個名爲 mysql
的容器正在運行,它使用的是 mysql:5.7.42-oracle
鏡像,並且將其 3306 端口映射到主機的 3306 端口。
[root@service-monitoring home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec88509b8b1b mysql:5.7.42-oracle "docker-entrypoint.s…" 10 minutes ago Exited (1) 10 minutes ago mysql
60180275418c hello-world "/hello" 2 days ago Exited (0) 2 days ago laughing_mcclintock
[root@service-monitoring home]#
4.2 inspect
docker inspect : 獲取容器/鏡像的元數據。
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
-f :指定返回值的模板文件。
-s :顯示總的文件大小。
--type :爲指定類型返回JSON。
# 獲取鏡像mysql:5.6的元信息
runoob@runoob:~$ docker inspect mysql:5.6
[
{
"Id": "sha256:2c0964ec182ae9a045f866bbc2553087f6e42bfc16074a74fb820af235f070ec",
"RepoTags": [
"mysql:5.6"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2016-05-24T04:01:41.168371815Z",
"Container": "e0924bc460ff97787f34610115e9363e6363b30b8efa406e28eb495ab199ca54",
"ContainerConfig": {
"Hostname": "b0cf605c7757",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3306/tcp": {}
},
...
獲取正在運行的容器mymysql的 IP。
runoob@runoob:~$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mymysql
172.17.0.3
pull
push
docker push
注意 tag 必須是 hub 倉庫的用戶名,否則報錯無權限。
但不推薦直接上傳鏡像,而是考慮安全問題,使用 Dockerfile 文件。即建立 hub 倉庫和 GitHub 的映射,只要 GitHub 上有 Dockerfile 就會自動映射到 Dockerhub。
docker search
docker search
命令用於在Docker Hub上搜索可以用來構建和運行容器的鏡像。可以按照以下格式使用該命令:
docker search [OPTIONS]
# TERM是需要搜索的關鍵字
TERM
如:
docker search portainer
上面的命令會在Docker Hub上搜索關鍵字爲portainer
的鏡像,並列出匹配的相關信息,如鏡像名稱、描述、星級、官方/非官方等。
常用選項:
--filter=STARS=N:表示只列出點贊數大於或等於N的鏡像
--filter=IS_OFFICIAL=true|false:表示只列出Docker官方發佈的或者非官方發佈的鏡像
-s, --stars[0]:表示按點贊數排序,默認值爲1,即只顯示點贊數大於等於1的鏡像
--format="{{.Name}}:{{.Description}}":自定義輸出格式,例如僅顯示鏡像名稱和描述信息
docker search
命令不僅能用來搜索公共倉庫,還可以搜索私有倉庫,只需要在關鍵字中包含私有倉庫地址即可,如:
docker search docker.example.com/mysql
由於網絡原因,docker search
命令可能會存在訪問異常或者網絡超時等問題。
docker exec
用於在運行中的容器中執行命令。允許你在容器內執行命令,就像在本地計算機一樣:
- 對在運行中的容器中調試應用程序很有用
- 或在容器中運行交互式命令行工具
docker exec
# OPTIONS 參數可選,可以用於指定一些選項,例如執行命令的用戶、工作目錄等
[OPTIONS]
# CONTAINER 參數必需,指定要在其中執行命令的容器
CONTAINER
# COMMAND 和 ARG 參數也必需,指定要在容器內部執行的命令及其參數
COMMAND [ARG...]
# 進個 py 項目的容器
docker exec -it image_id /bin/bash
# 查看 Python 的進程
ps -ef | grep python
# 進入容器項目的python
docker exec -it image_id python
# 查看 ip
docker exec -it image_id ip a
[root@service-monitoring ~]# docker exec -it mysql bash
bash-4.2# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.42 MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
docker update
更新正在運行的容器的配置信息。可用於更新容器的 CPU、內存、網絡、掛載卷等配置信息,而無需停止和重啓容器。
docker update [OPTIONS] CONTAINER [CONTAINER...]
--cpu-shares:設置容器使用 CPU 的相對權重。默認爲 0,表示與其他容器共享 CPU 時間
--memory:設置容器使用的內存限制。默認爲 0,表示不限制內存使用
--restart:設置容器退出後的重啓策略。默認爲 "no",表示容器退出後不重啓
--ulimit:設置容器使用的系統資源限制,如最大打開文件數、最大進程數等
如將容器 mycontainer
的 CPU 權重設爲 512,內存限制爲 1GB,重啓策略爲 always:
docker update
--cpu-shares 512
--memory 1g
--restart always mycontainer
該命令只能更新容器的配置信息,不能更新容器的鏡像和文件系統。如果需要更新鏡像和文件系統,需要先停止容器,然後使用 docker rm
命令刪除容器,再使用 docker run
命令重新創建容器。
5 Docker-Compose
該系列命令須運行在 yaml文件所在目錄。否則報錯:
[root@javaedge-monitor-platform-dev ~]# docker-compose exec mysql bash
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml
docker compose
docker compose up [-d]
# 使用 docker-compose.yml 文件定義的容器,啓動並在後臺運行。
docker compose
# 創建容器並啓動
up
# 後臺運行方式啓動
-d
容器啓動後會一直在後臺運行,可通過 docker-compose ps
查看狀態。
要停止後臺運行的容器,可以使用 docker-compose stop
命令。
6 network
Docker network 相關的常用命令主要包括:
docker network create
- 創建一個新網絡docker network connect
- 將容器連接到網絡docker network disconnect
- 將容器從網絡斷開docker network rm
- 刪除指定網絡
6.1 docker network ls
列出 Docker 主機上的所有網絡,包括網絡名稱、ID、驅動等信息。
docker network ls
6.2 docker network inspect
查看指定網絡的詳細配置信息。通過 network ID 或 name 指定網絡:
docker@minikube:~$ docker network inspect bridge
[
{
"Name": "bridge",
"Id": "675eddaf1c1e76a5c0fe4b56f86831cb7c7d0fc597d766fd7df533cf09e11832",
"Created": "2023-05-10T15:05:28.409718304Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
docker@minikube:~$
docker network create
創建一個新的 Docker 網絡。我們可以指定網絡類型、驅動程序等配置創建定製化網絡:
docker network create -d macvlan \
--subnet=172.16.86.0/24 \
--gateway=172.16.86.1 \
-o parent=eth0 pub_net
docker network connect
將一個容器連接到指定網絡。需指定網絡名稱或 ID,以及容器名稱或 ID:
docker network connect multi-host-network container1
docker network disconnect
將容器從指定網絡斷開連接。使用方法與connect
類似:
docker network disconnect multi-host-network container1
docker network rm
刪除指定的 Docker 網絡。刪除前,確保指定網絡下沒有任何容器在使用:
docker network rm multi-host-network
所以,總結來說,Docker network 命令用於管理 Docker 的網絡功能。我們可以創建各種類型的網絡,將容器連接或斷開網絡,以及在需要時刪除網絡。熟練掌握 Docker 的網絡功能和相關命令,可以讓我們在使用 Docker 部署應用時,有更高的靈活性和便捷性。適當使用網絡可以實現容器間通信、容器到宿主機通信等,這在日常開發和運維場景下非常常用。
[root@javaedge-monitor-platform-dev docker]# docker network ls
NETWORK ID NAME DRIVER SCOPE
64ad1eca60f7 bridge bridge local
4689aefb8f9b docker_my-bridge bridge local
f2f555bed377 host host local
d02380dd3da4 none null local
[root@javaedge-monitor-platform-dev docker]#
7 日誌 docker logs
獲取容器的日誌。
7.1 語法
docker logs [OPTIONS] CONTAINER
- -f : 跟蹤日誌輸出
- --since :顯示某個開始時間的所有日誌
- -t : 顯示時間戳
- --tail :僅列出最新N條容器日誌
7.2 實例
跟蹤查看容器mynginx的日誌輸出。
runoob@runoob:~$ docker logs -f mynginx
192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
2016/07/10 16:53:33 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.239.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.239.130", referrer: "http://192.168.239.130/"
192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://192.168.239.130/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
192.168.239.1 - - [10/Jul/2016:16:53:59 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
...
查看容器mynginx從2016年7月1日後的最新10條日誌。
docker logs --since="2016-07-01" --tail=10 mynginx
7.3 無法查找指定字符串
執行以下命令沒有在docker logs的結果中查找字符串,而是會輸出了所有的日誌
docker logs nginx | grep 127
因爲管道符僅對stdout有效,如果容器將日誌記錄到stderr,這種情況就會發生。
解決方案
把stderr重定向到stdout:
docker logs nginx 2>&1 | grep 127
還有一種方式,但麻煩:
grep 127 `docker inspect --format={{.LogPath}} nginx`
docker-compose可直接使用內置命令:
docker-compose logs nginx | grep 127
8 docker scout quickview
docker scout quickview [IMAGE|DIRECTORY|ARCHIVE]
docker scout quickview
顯示指定image的快速概覽。它顯示指定image和基礎image中漏洞的摘要。如果可用,它還顯示基礎image的刷新和更新建議。
如果沒有指定image,則使用最近構建的image。
支持以下類型的構件:
- image
- OCI 佈局目錄
- 由
docker save
創建的 Tarball 存檔 - 本地目錄或文件
默認情況下,該工具期望一個image引用,如:
redis
curlimages/curl:7.87.0
mcr.microsoft.com/dotnet/runtime:7.0
如要分析的構件是 OCI 目錄、Tarball 存檔、本地文件或目錄,或者如果您想要控制從何處解析圖像,須在引用前加上以下之一:
image://
(默認)使用本地圖像,或者回退到註冊表查找local://
使用本地圖像存儲中的圖像(不進行註冊表查找)registry://
使用註冊表中的圖像(不使用本地圖像)oci-dir://
使用 OCI 佈局目錄archive://
使用由docker save
創建的 Tarball 存檔fs://
使用本地目錄或文件
[選項]
選項 | 短格式 | 默認值 | 描述 |
---|---|---|---|
--env |
環境名稱 | ||
--latest |
最新索引的圖像 | ||
--org |
Docker 組織的命名空間 | ||
--output |
-o |
將報告寫入文件 | |
--platform |
要分析的圖像平臺 | ||
--ref |
如果提供的 Tarball 包含多個引用,則要使用的引用。僅適用於存檔。 | ||
--stream |
已棄用,流的名稱 |
[示例]
# 對image進行快速概覽
$ docker scout quickview nacos/nacos-server:latest
# 對最近構建的image進行快速概覽
javaedge@JavaEdgedeMac-mini % docker scout qv
INFO New version 1.2.2 available (installed version is 0.20.0)
✓ SBOM of image already cached, 450 packages indexed
Your image nacos/nacos-server:latest │ 0C 4H 19M 22L
Base image centos:7 │ 1C 13H 29M 13L
What's Next?
Learn more about vulnerabilities → docker scout cves nacos/nacos-server:latest
# 分析軟件構件的漏洞。如未指定image,則使用最近構建的圖像。
javaedge@JavaEdgedeMac-mini frp_0.52.3 % docker scout cves nacos/nacos-server:latest
INFO New version 1.2.2 available (installed version is 0.20.0)
✓ Provenance obtained from attestation
✓ SBOM of image already cached, 450 packages indexed
✗ Detected 20 vulnerable packages with a total of 44 vulnerabilities
0C 1H 5M 0L lxml 3.2.1
pkg:pypi/[email protected]
✗ HIGH CVE-2021-43818 [Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')]
https://scout.docker.com/v/CVE-2021-43818
Affected range : <4.6.5
Fixed version : 4.6.5
CVSS Score : 8.2
CVSS Vector : CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:H/A:N
X help
docker --help
忘記命令咋辦?用它!
關注我,緊跟本系列專欄文章,咱們下篇再續!
作者簡介:魔都技術專家兼架構,多家大廠後端一線研發經驗,各大技術社區頭部專家博主,編程嚴選網創始人。具有豐富的引領團隊經驗,深厚業務架構和解決方案的積累。
負責:
- 中央/分銷預訂系統性能優化
- 活動&優惠券等營銷中臺建設
- 交易平臺及數據中臺等架構和開發設計
目前主攻降低軟件複雜性設計、構建高可用系統方向。
參考:
本文由博客一文多發平臺 OpenWrite 發佈!