共计 14553 个字符,预计需要花费 37 分钟才能阅读完成。
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/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 : <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
遗记命令咋办?用它!
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都技术专家兼架构,多家大厂后端一线研发教训,各大技术社区头部专家博主,编程严选网创始人。具备丰盛的引领团队教训,深厚业务架构和解决方案的积攒。
负责:
- 地方 / 分销预订零碎性能优化
- 流动 & 优惠券等营销中台建设
交易平台及数据中台等架构和开发设计
目前主攻升高软件复杂性设计、构建高可用零碎方向。
参考:
- 编程严选网
-
https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
本文由博客一文多发平台 OpenWrite 公布!