1 容器生命周期管理
1.1 docker start
启动一或多个已被制止的容器。- # 启动已被停止的容器myrunoob
- docker start myrunoob
复制代码 1.2 docker stop
制止一个运行中的容器1.3 docker restart
重启容器1.4 docker run
创建一个新的容器并运行一个命令。
要根据 docker images 命令的结果启动对应镜像的容器,执行:
- 运行 docker images 命令检察当前系统中所有可用的镜像列表。
- 从结果中找到您想要启动的镜像的 REPOSITORY 和 TAG。
- 利用 docker run 命令启动一个新的容器。该命令的根本格式为 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]。此中 IMAGE 是镜像的名称,可能包括 TAG(如果未指定,则默以为 latest)。
案例:
输出:- 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 镜像,但遇到报错:
- 删除容器时报错:错误信息: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 时可用。
等效命令:2.4 tag
docker image build
从Dockerfile构建image- Usage: docker image build [OPTIONS] PATH | URL | -
复制代码 history
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 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件:
关闭容器并不会删除容器文件,仅是容器制止运行。
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)
复制代码 条件过滤删除
好比,我们想把退出的给全部删除
- docker rm $(docker container ls -f "status=exited" -q)
复制代码 docker container commit
根据容器的更改创建新image,好比在原 image 底子上安装了新的软件,那就可以上传新 image。- Usage: docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
复制代码
可简写为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
注意 tag 必须是 hub 仓库的用户名,否则报错无权限。
但不保举直接上传镜像,而是考虑安全题目,利用 Dockerfile 文件。即建立 hub 仓库和 GitHub 的映射,只要 GitHub 上有 Dockerfile 就会自动映射到 Dockerhub。
docker search
docker search命令用于在Docker Hub上搜索可以用来构建和运行容器的镜像。可以按照以下格式利用该命令:- docker search [OPTIONS]
- # TERM是需要搜索的关键字
- TERM
复制代码 如:上面的命令会在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、驱动等信息。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最新索引的图像--orgDocker 构造的定名空间--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
复制代码 [code]# 分析软件构件的漏洞。如未指定image,则利用最近构建的图像。javaedge@JavaEdgedeMac-mini frp_0.52.3 % docker scout cves nacos/nacos-server:latestINFO 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.1pkg:pypi/lxml@3.2.1 ✗ 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 : |