关于后端:Docker容器实战00基础命令大全

6次阅读

共计 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 命令的后果启动对应镜像的容器,执行:

  1. 运行 docker images 命令查看以后零碎中所有可用的镜像列表。
  2. 从后果中找到您想要启动的镜像的 REPOSITORYTAG
  3. 应用 docker run 命令启动一个新的容器。该命令的根本格局为 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]。其中 IMAGE 是镜像的名称,可能包含 TAG(如果未指定,则默认为 latest)。

案例:

  1. 查看镜像列表:
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 镜像,但遇到报错:

  1. 删除容器时报错:

    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

    而后再尝试删除容器。

  2. 删除镜像时报错:

    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 imagedocker 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 相干的常用命令次要包含:

  1. docker network create – 创立一个新网络
  2. docker network connect – 将容器连贯到网络
  3. docker network disconnect – 将容器从网络断开
  4. 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:~$ 
  1. 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
  1. docker network connect将一个容器连贯到指定网络。需指定网络名称或 ID, 以及容器名称或 ID:
 
docker network connect multi-host-network container1
  1. docker network disconnect将容器从指定网络断开连接。应用办法与 connect 相似:
docker network disconnect multi-host-network container1
  1. 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 公布!

正文完
 0