Docker技术概论(8):Docker Desktop原生图形化管理

Docker技术概论(8) Docker 原生图形化管理



【介绍】:本文介绍基于Docker Desktop提供的Docker原生图形化管理界面用法。


上一节:《Docker Compose基础与应用| 下一节:《 第三方图形化管理工具Portainer


目 录


  • 概述
  • [1. 主页面](#1. 主页面)
  • [2. Container页面](#2. Container页面)
  • [3. Images(镜像)页面](#3. Images(镜像)页面)
    • [3.1 Images页面功能](#3.1 Images页面功能)
    • [3.2 Local 标签页](#3.2 Local 标签页)
    • [3.3 Hub 标签页](#3.3 Hub 标签页)
    • [3.3 Artifactory 标签页](#3.3 Artifactory 标签页)
  • [4. 构建页面](#4. 构建页面)
  • [5. 开发环境](#5. 开发环境)
    • [5.1 Overview(概览)](#5.1 Overview(概览))
    • [5.2 Setup(设置)](#5.2 Setup(设置))
    • [5.3 Preparing(准备)](#5.3 Preparing(准备))
    • [5.4 Ready(就绪)](#5.4 Ready(就绪))
  • [6. Scout(高级图像分析)页面](#6. Scout(高级图像分析)页面)
  • [7. 扩展(Extension)管理](#7. 扩展(Extension)管理)
    • [7.1 Browse(浏览)](#7.1 Browse(浏览))
    • [7.2 Manage(管理)](#7.2 Manage(管理))
    • [7.3 Create(创建)](#7.3 Create(创建))
  • [8. 设置相关页面](#8. 设置相关页面)

概述


[1. 主页面](#1. 主页面)

在带有 GUI 的系统中,如 WindoiwsUbuntu DesktopMac (一般不会在MacOS上使用 Docker,仅供练习)上,通过下载并安装 Docker Desktop 不仅获得了基本的 docker-cli ,同时拥有了一个图形化的 UI 管理界面,这个 UI 界面具备了 Docker 的基本管理功能。其基本界面如图所示:

在其 SideBar 区域可以对右侧主页面进行切换,包括:"Containers "(容器页面)、"Images "(镜像页面)、"Volumns "(空间页面)、"Builds "(构建页面)、"Dev Enviroments "(开发环境页面)、"Docker Scout"(高级图像分析页面)。

Docker Desktop 主界面的 Header中设置按钮可以切换到设置页面,如图所示:

[2. Container页面](#2. Container页面)

[2.1 容器主页面](#2.1 容器主页面)

Docker DesktopContainer 页面提供了对 Docker 容器的详细视图和管理选项。以下是该页面的主要功能和组件的详细介绍:

容器状态图表

  • 显示图表 :此选项允许用户查看容器的资源使用情况,例如 CPU 和内存使用情况。
    • 容器 CPU 使用率 :显示当前容器的 CPU 使用率,例如"0.00% / 1000%(10 核心可用)",表示当前 CPU 使用率是 0.00%,总共有 1000% 的 CPU 资源(对应于 10 个核心)。
    • 容器内存使用率:显示当前容器的内存使用情况,例如"4.09MB / 7.5GB",表示当前使用了 4.09 MB 的内存,总共有 7.5 GB 可用。

容器列表

  • 只显示运行中的容器:此选项允许用户筛选只显示当前正在运行的容器。
  • 删除:用户可以选择一个或多个容器进行删除操作。

容器详细信息

每个容器在列表中都有以下详细信息:

  • 名称:容器的名称,例如"happy_wilbur"。
  • 镜像:容器使用的镜像 ID,例如"89537e78a991"。
  • 状态:容器的当前状态,如"运行中"、"已退出"或"已退出(255)"等。
  • CPU (%):容器当前的 CPU 使用率。
  • 端口:容器开放的端口信息,如"443:443"。可以选择"显示所有端口"查看更多端口信息。
  • 最后启动时间:容器最后一次启动的时间,例如"1 小时前"或"20 天前"。
  • 操作:针对每个容器的操作选项,如查看详情、停止、重启等。

底部操作栏

  • 选择数量提示:显示用户在容器列表中选择的容器数量,例如"选中 1 个,共 3 个"。

[2.2 容器详情页](#2.2 容器详情页)

打开指定容器的省略菜单,点击"View details"(查看详情)选项可以打开"容器"

1.Logs(日志)

Docker 容器的日志记录了容器内部运行过程中产生的各种输出信息,这些信息对于理解和监控容器的运行状态、调试问题以及安全审计非常重要。

Docker 容器日志通常包含以下类型的信息:

  1. 应用日志

    • 容器内运行的应用程序产生的标准输出和标准错误。
    • 比如,Web 服务器的访问日志、错误日志等。
  2. 系统日志

    • 操作系统层面的消息,如启动日志、系统错误等。
    • 包括对系统资源的调用结果,如文件操作、网络请求等。
  3. 服务状态变化

    • 服务的启动、停止、重启以及任何异常终止。
    • 更新或配置更改的记录。
  4. 安全相关信息

    • 安全警告、错误或其他安全相关的事件。
    • 登录尝试、权限变更等信息。
  5. 依赖关系变化

    • 安装、更新或删除软件包的记录。
    • 比如,APT 或 YUM 管理器的日志。
  6. 资源使用情况

    • CPU、内存、磁盘使用情况的快照。
    • 网络流量和连接状态信息。
  7. 交互操作

    • 用户与容器交互的记录,如通过 Docker 命令行执行的命令。
    • 比如,你提供的日志中的 apt updateapt upgrade 命令及其输出。

这些日志信息可以通过 Docker 日志驱动程序(如 json-filesyslogjournald 等)进行管理,支持日志的轮转、清理以及远程传输等功能。管理员和开发者依赖这些日志来确保容器的健康运行,进行问题诊断和性能调优。

2.检查(Inspect)

inspect 命令在 Docker 中被广泛使用,用于获取容器和镜像的元数据。它主要包含以下信息:

  1. 基本信息:

    • Id: 容器的唯一标识符。
    • Created: 容器创建的时间戳。
    • Path: 容器启动时执行的命令。
    • Args: 启动命令的参数列表。
  2. 状态(State):

    • Status: 容器当前的状态(如 running)。
    • Running: 容器是否正在运行。
    • Paused: 容器是否已暂停。
    • Restarting: 容器是否正在重启。
    • OOMKilled: 容器是否因为内存不足而被杀死。
    • Dead: 容器是否已死亡。
    • Pid: 容器进程的 ID。
    • ExitCode: 容器退出时的退出码。
    • Error: 容器的错误信息。
    • StartedAt: 容器最近一次启动的时间。
    • FinishedAt: 容器最近一次终止的时间。
  3. 镜像(Image):

    • 容器使用的镜像的 SHA256 散列值。
  4. 文件路径:

    • ResolvConfPath, HostnamePath, HostsPath, LogPath: 容器内相关文件的路径。
  5. 容器名称(Name):

    • 容器的名称。
  6. HostConfig:

    • 包含了容器的配置信息,如绑定的端口、日志配置、网络模式、重启策略、资源限制等。
    • PortBindings: 映射到宿主机的端口。
    • RestartPolicy: 容器的重启策略。
  7. 网络设置(NetworkSettings):

    • 容器的网络配置,如 IP 地址、网关、MAC 地址等。
  8. 图形驱动(GraphDriver):

    • 与容器文件系统有关的信息,包括不同层的路径。
  9. 配置(Config):

    • 容器的一些基本配置,如环境变量、命令、工作目录、暴露的端口等。

下面是一个 Docker ContainerInspect样本:

json 复制代码
{
    // 容器的唯一标识符
	"Id": "89537e78a991f604c00738ddbf4bd1437356e7145e316d401692451f174ba736",
    // 容器创建的时间戳
	"Created": "2023-12-21T18:21:59.4061895Z",
    // 容器启动时执行的命令
	"Path": "/bin/bash",
    // 启动命令的参数列表
	"Args": [],
	"State": {
		"Status": "running", // 容器当前状态(运行中)
		"Running": true, // 容器是否正在运行
		"Paused": false, // 容器是否已暂停
		"Restarting": false, // 容器是否正在重启
		"OOMKilled": false, // 容器是否因内存溢出而被杀死
		"Dead": false, // 容器是否已死亡
		"Pid": 957, // 容器进程的 ID
		"ExitCode": 0, // 容器退出时的退出码
		"Error": "", // 容器的错误信息
        // 容器最近一次启动的时间
		"StartedAt": "2024-01-02T01:57:49.549667529Z", 
        // 容器最近一次终止的时间
		"FinishedAt": "2023-12-25T00:22:00.3188126Z" 
	},
    // 容器使用的镜像的散列值
	"Image": "sha256:b6548eacb0639263e9d8abfee48f8ac8b327102a05335b67572f715c580a968e",
    // DNS 解析配置文件路径
	"ResolvConfPath": "/var/lib/docker/containers/89537e78a991f604c00738ddbf4bd1437356e7145e316d401692451f174ba736/resolv.conf",
	// 容器主机名文件路径
    "HostnamePath": "/var/lib/docker/containers/89537e78a991f604c00738ddbf4bd1437356e7145e316d401692451f174ba736/hostname",
	// 容器 hosts 文件路径
    "HostsPath": "/var/lib/docker/containers/89537e78a991f604c00738ddbf4bd1437356e7145e316d401692451f174ba736/hosts",
	// 容器日志文件路径
    "LogPath": "/var/lib/docker/containers/89537e78a991f604c00738ddbf4bd1437356e7145e316d401692451f174ba736/89537e78a991f604c00738ddbf4bd1437356e7145e316d401692451f174ba736-json.log",
    // 容器的名称
	"Name": "/happy_wilbur",
    // 容器重启次数
	"RestartCount": 0,
    // 使用的存储驱动
	"Driver": "overlay2",
    // 容器平台
	"Platform": "linux",
	"MountLabel": "",
	"ProcessLabel": "",
	"AppArmorProfile": "",
    // 正在运行的执行命令的 ID
	"ExecIDs": [
		"150c2f32d99fbce403388a36dd7d0cc5b78ac1f6575f73b5863f26dbde9d694c"
	],
    // 容器的宿主机配置
	"HostConfig": {
        // 绑定的卷
		"Binds": null,
		"ContainerIDFile": "",
        // 日志配置
		"LogConfig": {
			"Type": "json-file",
			"Config": {}
		},
        // 网络模式
		"NetworkMode": "default",
        // 端口绑定
		"PortBindings": {
			"443/tcp": [
				{
					"HostIp": "",
					"HostPort": "443"
				}
			],
			"80/tcp": [
				{
					"HostIp": "",
					"HostPort": "80"
				}
			],
			"8888/tcp": [
				{
					"HostIp": "",
					"HostPort": "8888"
				}
			]
		},
        // 重启策略
		"RestartPolicy": {
			"Name": "no", // 不自动重启
			"MaximumRetryCount": 0 // 最大重试次数
		},
		"AutoRemove": false, // 当容器停止时是否自动移除容器
		"VolumeDriver": "", // 容器使用的卷驱动
		"VolumesFrom": null, // 允许容器从其他容器挂载卷
        // 容器内控制台的大小,格式为 [高, 宽]
		"ConsoleSize": [
			30,
			120
		],
        // 用于增加容器的 Linux 能力
		"CapAdd": null,
        // 用于删除容器的 Linux 能力
		"CapDrop": null,
        // 容器的 cgroup 命名空间模式
		"CgroupnsMode": "host",
        // 容器的 DNS 服务器
		"Dns": [],
        // 容器的 DNS 选项
		"DnsOptions": [],
        // 容器的 DNS 搜索域
		"DnsSearch": [],
        // 容器的 /etc/hosts 中额外添加的主机名记录
		"ExtraHosts": null,
        // 容器内进程要添加的额外用户组 ID
		"GroupAdd": null,
        // 容器的 IPC 命名空间模式
		"IpcMode": "private",
        // 容器的 cgroup 配置
		"Cgroup": "",
        // 容器与其他容器的链接
		"Links": null,
        // 容器的 OOM 评分调整值
		"OomScoreAdj": 0,
        // 容器的进程 ID 命名空间模式
		"PidMode": "",
        // 是否以特权模式运行容器
		"Privileged": false,
        // 是否将所有暴露的端口映射到主机上
		"PublishAllPorts": false,
        // 容器的根文件系统是否为只读
		"ReadonlyRootfs": false,
        // 容器的安全选项
		"SecurityOpt": null,
        // 容器的 UTS 命名空间模式
		"UTSMode": "",
        // 容器的用户命名空间模式
		"UsernsMode": "",
        // 容器的共享内存大小
		"ShmSize": 67108864,
        // : 容器使用的运行时
		"Runtime": "runc",
        // 容器的隔离技术
		"Isolation": "",
        //  分配给容器的相对 CPU 权重
        // 在同一宿主机上运行的所有容器的默认值是 1024。
        // 因此,如果一个容器的 CpuShares 设置为 512,
        // 它将获得一半的 CPU 时间相比于设置为 1024 的容器
		"CpuShares": 0,
        // 容器可以使用的最大内存量(单位为字节)
        // 如果容器超过此限制,它可能会被终止
		"Memory": 0,
        // 以 1e9 分之一核心为单位分配给容器的 CPU
        // 例如,设置为 500000000 表示分配 0.5 个 CPU 核心
		"NanoCpus": 0,
        // 容器的 cgroup 父节点
		"CgroupParent": "",
        // 容器在 I/O 操作中的权重(范围为 10 到 1000)
		"BlkioWeight": 0,
        // 特定块设备的 I/O 权重
		"BlkioWeightDevice": [],
        // 限制特定块设备的读取速率(字节/秒)
		"BlkioDeviceReadBps": [],
        // 限制特定块设备的写入速率(字节/秒)
		"BlkioDeviceWriteBps": [],
        // 限制特定块设备的读取 I/O 操作数(操作/秒)
		"BlkioDeviceReadIOps": [],
        // 限制特定块设备的写入 I/O 操作数(操作/秒)
		"BlkioDeviceWriteIOps": [],
        // CPU 调度周期的长度(微秒)
        // 与 CpuQuota 一起用于限制 CPU 使用率
		"CpuPeriod": 0,
        // 指定周期内可使用的 CPU 时间(微秒)
		"CpuQuota": 0,
        // 实时 CPU 调度周期的长度(微秒)
		"CpuRealtimePeriod": 0,
        // 实时 CPU 调度的时间配额(微秒)
		"CpuRealtimeRuntime": 0,
        // 容器可以使用的 CPU 核心
		"CpusetCpus": "",
        // 容器可以使用的内存节点
		"CpusetMems": "",
        // 容器允许访问的设备
		"Devices": [],
        // 自定义设备 cgroup 规则
		"DeviceCgroupRules": null,
        // 容器的设备请求
		"DeviceRequests": null,
        // 容器的内存保留限制
        // Docker 会尽量保证容器至少有这么多内存
		"MemoryReservation": 0,
        // 容器使用的最大内存 + swap 空间量
        // 设置为 -1 表示不限制 swap
		"MemorySwap": 0,
        // 一个 0 到 100 的值,表示容器对 swap 的倾向
        // 较低的值更倾向于使用 RAM
        // 较高的值更倾向于使用 swap
		"MemorySwappiness": null,
        // 是否禁用 OOM Killer
		"OomKillDisable": false,
        // 容器的进程数限制
		"PidsLimit": null,
        // 容器的用户限制
		"Ulimits": null,
        // 分配给容器的 CPU 核心数
		"CpuCount": 0,
        // 在 Windows 系统上,限制容器可以使用的总 CPU 百分比
		"CpuPercent": 0,
        //  限制容器每秒可以执行的最大 I/O 操作数
		"IOMaximumIOps": 0,
        // 限制容器的 I/O 带宽(单位为字节/秒)
		"IOMaximumBandwidth": 0,
        // 容器中的路径限制
        // 这些路径在容器内被"屏蔽",容器内的进程看到的是一个空内容或最小内容的文件
        // 这主要用于安全和隔离
		"MaskedPaths": [
			"/proc/asound",
			"/proc/acpi",
			"/proc/kcore",
			"/proc/keys",
			"/proc/latency_stats",
			"/proc/timer_list",
			"/proc/timer_stats",
			"/proc/sched_debug",
			"/proc/scsi",
			"/sys/firmware"
		],
        // 这些路径在容器中是只读的
        // 用于防止容器修改宿主机的关键系统文件
		"ReadonlyPaths": [
			"/proc/bus",
			"/proc/fs",
			"/proc/irq",
			"/proc/sys",
			"/proc/sysrq-trigger"
		]
	},
    // 图形驱动信息
	"GraphDriver": {
		"Data": {
            // 较低层的目录
			"LowerDir": "/var/lib/docker/overlay2/99e2c6e5f2b1edbd8897b662b97acfa316000b99a06acd50891ba3900e4fa273-init/diff:/var/lib/docker/overlay2/fa49f6c7b02c1ad173fe44e91854ef575bfa34491ca80d7b6228edce141b8f7d/diff",
            // 合并后的目录
			"MergedDir": "/var/lib/docker/overlay2/99e2c6e5f2b1edbd8897b662b97acfa316000b99a06acd50891ba3900e4fa273/merged",
            // 较上层的目录
			"UpperDir": "/var/lib/docker/overlay2/99e2c6e5f2b1edbd8897b662b97acfa316000b99a06acd50891ba3900e4fa273/diff",
            // 工作目录
			"WorkDir": "/var/lib/docker/overlay2/99e2c6e5f2b1edbd8897b662b97acfa316000b99a06acd50891ba3900e4fa273/work"
		},
        // 驱动名称
		"Name": "overlay2"
	},
    // 挂载点
	"Mounts": [],
    // ... 容器的基本配置,如主机名、环境变量、命令等 ...
	"Config": {
        // 容器内的主机名
		"Hostname": "89537e78a991",
        // 容器内的域名
		"Domainname": "",
        // 容器内的用户
		"User": "",
        // 是否将容器的标准输入附加到宿主机的输入
		"AttachStdin": true,
        // 是否将容器的标准输出附加到宿主机的输出
		"AttachStdout": true,
        // 是否将容器的标准错误附加到宿主机的错误输出
		"AttachStderr": true,
        // 容器暴露的端口
		"ExposedPorts": {
			"443/tcp": {},
			"80/tcp": {},
			"8888/tcp": {}
		},
        // 容器是否分配一个伪 TTY 终端
		"Tty": true,
        // 是否开放容器的标准输入
		"OpenStdin": true,
        // 是否在容器的标准输入上读取数据一次后关闭
		"StdinOnce": true,
        // 容器的环境变量
		"Env": [
			"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
		],
        // 容器启动时执行的命令
		"Cmd": [
			"/bin/bash"
		],
        // 创建容器时使用的镜像
		"Image": "b6548eacb063",
        // 容器挂载的卷
		"Volumes": null,
        // 容器的工作目录
		"WorkingDir": "",
        // 容器启动时执行的入口点
		"Entrypoint": null,
        // 构建该镜像时将执行的命令
		"OnBuild": null,
        // 容器的标签
		"Labels": {
			"org.opencontainers.image.ref.name": "ubuntu",
			"org.opencontainers.image.version": "22.04"
		}
	},
    // 网络设置
	"NetworkSettings": {
        // 容器所使用的网络桥接名称
		"Bridge": "",
        // 容器的沙盒 ID
		"SandboxID": "ced3b2acaf400d1ee19ad37528497c586ee3362cfbcc5d51892cdf3ace6ed4fc",
        // 容器网络的发夹模式
		"HairpinMode": false,
        // 容器的本地 IPv6 地址
		"LinkLocalIPv6Address": "",
        // 容器的本地 IPv6 前缀长度
		"LinkLocalIPv6PrefixLen": 0,
        // 容器暴露的端口及其映射到宿主机的端口
		"Ports": {
			"443/tcp": [
				{
					"HostIp": "0.0.0.0",
					"HostPort": "443"
				}
			],
			"80/tcp": [
				{
					"HostIp": "0.0.0.0",
					"HostPort": "80"
				}
			],
			"8888/tcp": [
				{
					"HostIp": "0.0.0.0",
					"HostPort": "8888"
				}
			]
		},
        // 容器的网络沙盒键值
		"SandboxKey": "/var/run/docker/netns/ced3b2acaf40",
        // 容器的次要 IPv4 地址
		"SecondaryIPAddresses": null,
        // 容器的次要  IPv6 地址
		"SecondaryIPv6Addresses": null,
        // 容器网络端点的 ID
		"EndpointID": "5c446150fe0837fc20d93869efa7c74eb7e0705f67e39e8be1192ed1596b4f56",
        // 容器的网关地址
		"Gateway": "172.17.0.1",
        // 容器的全局 IPv6 地址
		"GlobalIPv6Address": "",
        // 容器的全局 前缀长度
		"GlobalIPv6PrefixLen": 0,
        // 容器的 IP 地址
		"IPAddress": "172.17.0.2",
        // 容器的前缀长度
		"IPPrefixLen": 16,
        // 容器的 IPv6 网关地址
		"IPv6Gateway": "",
        // 容器的 MAC 地址
		"MacAddress": "02:42:ac:11:00:02",
        // 容器连接的网络及其相关配置
		"Networks": {
            // 使用的网络类型,这里是 Docker 默认的桥接网络
			"bridge": {
                // IP 地址管理配置
				"IPAMConfig": null,
                // 容器与其他容器的链接
				"Links": null,
                // 网络别名
				"Aliases": null,
                // 容器的 MAC 地址
				"MacAddress": "02:42:ac:11:00:02",
				// 网络的唯一标识符
                "NetworkID": "10e4822cc08307946f6c0f9928438b1a318cea9f2f3dc9716a8c1edbf70a0514",
                // 网络端点的唯一标识符
				"EndpointID": "5c446150fe0837fc20d93869efa7c74eb7e0705f67e39e8be1192ed1596b4f56",
                // 网络网关的 IP 地址
				"Gateway": "172.17.0.1",
                // 容器在 Docker 网络中的 IP 地址
				"IPAddress": "172.17.0.2",
                // IP 地址的前缀长度
                // 通常与子网掩码相关
				"IPPrefixLen": 16,
                // 容器的 IPv6 网关
				"IPv6Gateway": "",
                // 容器的 IPv6 地址
				"GlobalIPv6Address": "",
                // 容器的 IPv6 前缀长度
				"GlobalIPv6PrefixLen": 0,
                // 网络驱动的特定选项
				"DriverOpts": null
			}
		}
	}
}

这个 inspect 输出提供了容器的详细快照,包括它的配置、状态和网络设置。这对于调试、监控和理解容器的行为非常有用。例如,如果你需要知道容器为什么没有正确启动,可以检查 State 部分查看 Error 字段。如果你想知道容器暴露哪些端口,可以查看 NetworkSettings 部分。这些信息对于日常的 Docker 使用和管理至关重要。

3. Bind mounts

(1)用途

Docker 中,Bind Mounts 是一种将宿主机上的文件或目录挂载到容器中的机制。这允许容器访问和修改宿主机上的文件和目录。其用途具体包含了以下几个方面:

  1. 共享数据:容器可以使用 bind mounts 从宿主机访问数据,也可以将其输出数据到宿主机。
  2. 配置管理:将配置文件放置在宿主机上,然后通过 bind mount 挂载到容器内,便于管理和更新配置。
  3. 日志处理:将容器的日志文件直接输出到宿主机,便于集中管理和分析。
  4. 开发环境:在开发过程中,可以将源代码目录挂载到容器内,使得代码更改可以立即在容器内反映。
(2)特点

Bind mountsDocker 的使用中非常常见,其特点如下:

  1. 直接映射Bind mount 直接映射宿主机上的文件或目录到容器内部。它们不是 Docker 托管的,而是直接使用宿主机的文件系统。
  2. 数据持久化:通过 bind mounts,可以在容器停止或删除后保持数据的持久化,因为数据实际上存储在宿主机上。
  3. 即时更新:在宿主机上对挂载的文件或目录所做的更改会立即反映在容器中,反之亦然。
(3)创建和使用

Bind mounts 在创建容器时通过 docker run 命令的 -v--mount 选项指定。例如:

bash 复制代码
docker run -v /path/on/host:/path/in/container ...

bash 复制代码
docker run --mount type=bind,source=/path/on/host,target=/path/in/container ...

这里,/path/on/host 是宿主机上的路径,/path/in/container 是容器内的目标路径。

(4)注意事项
  • 安全Bind mounts 可以让容器访问宿主机的敏感文件和目录,因此需要小心处理权限和安全问题。
  • 依赖:容器对宿主机路径的依赖可能导致在不同环境下容器的可移植性降低。

总之,Bind mounts 是 Docker 中一种非常强大和灵活的功能,允许容器与宿主机系统进行高效的数据共享和交互。正确使用时,它们可以极大地增强容器的实用性和灵活性。

4. Exec(执行)

执行页面包含一个模拟终端子窗口,可以在该子窗口中执行命令:

5. Files(文件)

文件页面提供了容器中目录和文件的树形目录浏览方式。当下可以在该页面直接导入导出和删除文件,并且内置了一个带有语法高亮的文本编辑器,允许操作者对文本进行编辑和修改:

6. Stats(状态)

状态页面提供了容器各种参数的监控面板,包括了CPU使用率、内存使用率、磁盘读写、网络 I/O:

[3. Images(镜像)页面](#3. Images(镜像)页面)

[3.1 Images页面功能](#3.1 Images页面功能)

Docker Desktop 的 Images 页面是管理 Docker 镜像的中心界面,它提供了对本地存储的 Docker 镜像进行查看、管理和操作的功能。其主要功能包括:

  • 镜像管理:用户可以查看、删除或更新存储在本地的 Docker 镜像。
  • 容器创建:从这些镜像可以创建新的容器。
  • 资源监控:监控镜像所占用的磁盘空间。
  • 版本控制:管理不同版本的镜像,方便回滚和更新。
  • 镜像分享:导出镜像以供他人使用或上传到远程仓库。

通过截图可以看到在其页面布局中展示的镜像可以分为"Local "(本地)、"Hub "、"Artifactory"三个部分

[3.2 Local 标签页](#3.2 Local 标签页)

Local 标签页中,用户可以管理存储在本地计算机上的 Docker 镜像。其主要功能包括:

  • 镜像列表:显示本地存储的所有 Docker 镜像,包括镜像名、标签、状态(是否正在使用)、创建时间和大小。
  • 空间信息:显示当前使用的和总共可用的镜像存储空间。
  • 镜像操作:提供对镜像进行的各种操作,如运行、删除、查看详情等。
  • 搜索功能:允许用户搜索特定的本地镜像。
  • 刷新状态:展示上次刷新镜像列表的时间。

[3.3 Hub 标签页](#3.3 Hub 标签页)

Hub 标签页中,用户可以连接到 Docker Hub,这是一个用于发现和共享容器镜像的云服务。其主要功能和特点包括:

  • 搜索和浏览 :允许用户搜索和浏览 Docker Hub 上的公共和私有镜像库。
  • 镜像信息:显示镜像的标签、操作系统、潜在的安全漏洞、最后推送时间和大小。
  • 漏洞仪表盘:查看镜像的安全漏洞评估报告。
  • 镜像拉取 :直接从 Docker Hub 拉取镜像到本地。
  • 分页浏览:对镜像列表进行分页处理,方便用户浏览。

[3.3 Artifactory 标签页](#3.3 Artifactory 标签页)

Artifactory 标签页提供了与 JFrog Artifactory 的集成,这是一个先进的二进制仓库管理平台。其功能包括:

  • 仓库集成 :通过 Docker Scout 连接到 Artifactory 仓库,实现远程集成。
  • 镜像分析 :拉取 Artifactory 仓库中的镜像,并在本地运行 Docker Scout 的镜像分析。

[4. 构建页面](#4. 构建页面)

Docker DesktopBuilds 页面是 Docker Desktop 的一个重要组成部分,为用户提供了一个方便的界面来从源代码构建、管理和监控 Docker 镜像。这个页面对于那些需要频繁构建和更新容器镜像的开发者尤其有用。其主要功能包括:

  1. 镜像构建 :从源代码或 Dockerfile 构建新的 Docker 镜像。这是该页面的核心功能。
  2. 构建历史和状态监控:查看以前的构建历史和当前构建的状态。
  3. 选择和管理构建器 :可以选择或更改用于构建镜像的构建器(例如 DockerBuildKit)。
  4. 平台选择 :支持为不同的平台(如 Linux , Windows)构建镜像。

通过截图可以看到在其页面布局中:

  • 构建记录(Build records) :展示了历史构建的列表,包括构建的 ID、名称、使用的构建器、状态、持续时间、创建时间和作者等信息。
  • 搜索和过滤:用户可以搜索特定的构建记录或通过过滤器(如"仅显示我的构建")查看特定的记录。
  • 指示和指南 :提供了使用指南,例如如何启动新的构建(通常是通过在终端运行 docker build . 命令)。
  • 无活动构建提示:当没有进行中的构建时,会显示相应的信息。

[5. 开发环境](#5. 开发环境)

Docker DesktopDev Environments页面旨在简化和改进开发团队的工作流程:

  1. 定义项目配置Dev Environments 页面允许你将项目的配置以代码的形式定义。这意味着你可以使用Docker Compose或其他容器编排工具来创建配置文件,明确定义项目所需的所有容器、服务和依赖关系。这将环境配置从手动设置转变为可管理的代码。
  2. 分发项目:一旦项目配置被定义为代码,你可以轻松地将其分享给你的开发团队。这有助于确保每个开发人员都能使用相同的环境和配置,减少了因环境差异而导致的问题。
  3. 协同开发Dev Environments页面使整个团队能够轻松启动项目的完整环境,包括容器、服务和依赖项。这意味着所有开发人员都可以在相同的环境中工作,确保了代码的一致性和可重复性。
  4. 示例运行 :页面还提供了一个示例运行选项,允许你快速了解如何使用Dev Environments页面来管理项目的环境。这有助于新用户迅速掌握该功能的工作原理。

通过这些功能,Dev Environments页面使开发团队更容易定义、分享和协作在统一的开发环境下工作,从而提高了开发效率,减少了环境配置问题,并促进了团队之间的协作和项目的一致性。

点击创建("Create")按钮用于创建一个全面的开发环境:

[5.1 Overview(概览)](#5.1 Overview(概览))

  • 此部分提供了对正在创建的Dev环境的概述。
  • 它描述了Dev环境的主要目的,即在本地使用容器作为完整的开发环境。
  • 强调了能够一键共享代码(包括依赖项)给团队成员的便捷性。
  • 提到了能够在Visual Studio Code中快速切换分支或并行运行它们的功能,以加快开发速度。

[5.2 Setup(设置)](#5.2 Setup(设置))

  • 此步骤通常包括配置Dev环境的详细设置。
  • 用户可能需要选择使用的容器镜像、定义容器的运行参数、指定共享代码的位置等。
  • 这一步旨在确保Dev环境满足特定项目或开发需求。

如果选择一个存在的 Git 仓库,且使用 VSCode ,需要安装"Dev Container"插件:

插件地址为:https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers

[5.3 Preparing(准备)](#5.3 Preparing(准备))

  • 在此阶段,Docker 将根据你的设置创建和配置Dev环境。
  • 这可能涉及拉取和构建容器镜像、设置网络连接以及将项目代码和依赖项加载到容器中。
  • 这是Dev环境准备工作的阶段。

[5.4 Ready(就绪)](#5.4 Ready(就绪))

  • 一旦Dev 环境创建并配置完成,用户将看到Dev环境已经准备就绪。
  • 在此阶段,你可以点击"Start "按钮启动Dev环境,然后就可以开始使用它来开发项目了。
  • 这是Dev环境的最后准备和启动阶段。

创建完成后可以看到已经创建的环境:

[6. Scout(高级图像分析)页面](#6. Scout(高级图像分析)页面)

[6.1 Docker Scout简介](#6.1 Docker Scout简介)

容器镜像通常是由其他容器镜像和软件包的层构建而成的。这些层和包可能包含使你的容器及其运行的应用程序容易受到攻击的漏洞。

Docker Scout 可以帮助你主动发现并修复这些漏洞,帮助你创建更安全的软件供应链。它通过分析你的镜像并创建一个完整的包和层清单,称为 软件物料清单(SBOM。然后,它将此清单与持续更新的漏洞数据库进行关联,以识别你镜像中的漏洞。

你可以在 Docker DesktopDocker HubDocker CLIDocker Scout 仪表板 中使用 Docker ScoutDocker Scout 还支持与第三方系统集成,有关更多信息,请参阅集成 Docker Scout

[6.2 Docker Scout 快速入门](#6.2 Docker Scout 快速入门)

该指南翻译与官方给出的案例,更多信息参考:https://github.com/docker/scout-demo-service

Docker Scout 分析镜像内容并生成包和检测到的漏洞的详细报告。它可以为你提供修复镜像分析发现的问题的建议。

本指南采用一个容易受攻击的容器镜像,向你展示如何使用 Docker Scout 识别和修复漏洞,比较不同时间的镜像版本,并与团队共享结果。

第 1 步:设置

这个示例项目包含一个容易受攻击的 Node.js 应用程序,你可以使用它来跟随操作。

  1. 克隆其仓库:

    console 复制代码
    $ git clone https://github.com/docker/scout-demo-service.git
  2. 进入目录:

    console 复制代码
    $ cd scout-demo-service
  3. 构建镜像,命名为与你将推送到的组织匹配,并标记为 v1

    console 复制代码
    $ docker build -t ORG_NAME/scout-demo:v1 .
  4. 在 Docker Hub 上创建并推送仓库:

    console 复制代码
    $ docker push ORG_NAME/scout-demo:v1

    重要

    在推送前,请确保你已登录到 Docker CLI 或 Docker Desktop。

第 2 步:启用 Docker Scout

Docker Scout 默认分析所有本地镜像。要分析远程仓库中的镜像,你需要首先启用它。你可以从 Docker HubDocker Scout 仪表板和 CLI 进行此操作。在概述指南中了解如何操作

  1. 使用 docker login 命令登录到你的 Docker 帐户,或在 Docker Desktop 中使用登录按钮。

  2. 使用 Docker CLI docker scout repo enable 命令启用现有仓库的分析:

    console 复制代码
    $ docker scout repo enable --org ORG_NAME ORG_NAME/scout-demo
第 3 步:分析镜像漏洞

构建后,你可以使用 Docker Desktopdocker scout CLI 命令查看 Docker Scout 检测到的漏洞。

  1. 使用 Docker Desktop ,在镜像视图中选择镜像名称以查看镜像层视图。在镜像层次结构部分,你可以

看到哪些层引入了漏洞及其详细信息。

  1. 选择第 5 层以重点关注该层引入的漏洞。

  2. 切换express 4.17.1 旁边的披露三角形,然后是 CVE ID (在本例中为 CVE-2022-24999)以查看漏洞的详细信息。

    你也可以使用 Docker CLI 查看相同的结果。

    console 复制代码
    $ docker scout cves ORG_NAME/scout-demo:v1

Docker Scout 通过从多个来源不断地摄取和整合漏洞数据来创建并维护其漏洞数据库。这些来源包括许多可识别的包仓库和值得信赖的安全追踪器。你可以在咨询数据库文档中找到更多详细信息。

提示

了解如何使用 CLI 命令scout cves过滤结果。

第 4 步:修复应用漏洞

Docker Scout 建议的修复方法是将底层容易受攻击的 express 版本更新到 4.17.3 或更高版本。

  1. 使用新的包版本更新 package.json 文件。

    json 复制代码
    ...
    "dependencies": {
         "express": "4.17.3"
         ...
    }
  2. 重建镜像,给它一个新的版本标签:

    console 复制代码
    $ docker build -t ORG_NAME/scout-demo:v2 .
  3. 使用新的版本标签将镜像推送到 Docker Hub 上的同一仓库:

    console 复制代码
    $ docker push ORG_NAME/scout-demo:v2

现在,在 Docker Desktop、Docker Scout 仪表板或 CLI 中查看镜像的最新标签时,你可以看到你已修复漏洞。

第 5 步:修复基础镜像中的漏洞

除了识别应用漏洞外,Docker Scout 还可以帮助你识别并修复你的镜像所使用的基础镜像中的问题。

  1. Docker Scout 仪表板上,你可以通过在镜像层视图中选择推荐修复按钮来查看这些建议。

  2. 从按钮中选择基础镜像的建议 选项。在出现的对话框中,选择你要使用的基础镜像的新版本,并将建议复制到你的 Dockerfile 中。

  3. 再次重建镜像,并带上一个新标签:

    console 复制代码
    $ docker build -t ORG_NAME/scout-demo:v3 .
  4. 使用新版本标签将其推送到 Docker Hub

    console 复制代码
    $ docker push ORG_NAME/scout-demo:v3
  5. Docker DesktopDocker Scout 仪表板中选择新的镜像标签,你可以看到基础镜像已经更新,消除了许多漏洞。

    你也可以使用 Docker CLI 命令查看:

    console 复制代码
    $ docker scout cves ORG_NAME/scout-demo:v3
第 6 步:合作解决漏洞

你可以在 Docker Scout 仪表板上查看并分享有关镜像以及组织中其他镜像的同一漏洞信息。

所有组织成员都可以从集成的容器注册表中看到其所有镜像的概述,并随时获得修复建议。这有助于安全、合规和运营团队成员知道要关注哪些漏洞和问题。

  1. Docker Scout 仪表板上选择 镜像 标签页。
  2. 选择 最新镜像 列下的任一标签,你可以看到与在 Docker DesktopDocker CLI 中看到的相同的漏洞信息,并与组织中的其他人分享此链接。

提示

如果你是多个组织的成员,请确保从右上角的下拉菜单中选择正确的组织。

第 7 步:比较镜像

随着时间的推移,当你构建和推送新标签的镜像时,你可以使用 Docker Scout CLI 和仪表板来比较同一镜像不同标签的漏洞和包的变化。

Docker Scout 仪表板上,从 镜像 列表中选择要比较的仓库。在这个例子中是 scout-demo

选择你在上一步推送的两个标签进行比较,例如 v1v3 ,然后选择 比较镜像

镜像比较 视图显示了这两个标签之间的差异。页面的顶部总结了两个标签,包括漏洞和基础镜像标签之间的差异。

在页面的底部,你可以看到两个标签之间的包和漏洞变化。在 "express" 行中,你可以看到版本从 4.17.1 变更为 4.17.3。切换到 漏洞 标签页,查看两个标签之间的漏洞变化。你可以看到 CVE-2022-24999 不再出现在 v3 标签下。

[6.3 仪表板](#6.3 仪表板)

Docker Scout 仪表板帮助你与团队共享组织中镜像的分析。开发者现在可以看到他们在 Docker Hub 和 Artifactory 的所有镜像的安全状态概览,并且可以轻松获得修复建议。它帮助安全、合规和运营等角色的团队成员知道需要关注哪些漏洞和问题。

概览

概览标签页提供了所选组织中仓库的摘要。

在此页面的顶部,你可以选择要查看的环境 。默认情况下,显示最近推送的镜像。要了解更多关于环境的信息,请参见环境监控

策略 框显示了你当前对每项策略的合规评级,以及所选环境的趋势指示。趋势描述了与上一版本相比,最近镜像的策略变化。关于策略的更多信息,请参见策略评估

漏洞图表显示了所选环境中镜像的总漏洞数随时间的变化。你可以使用下拉菜单配置图表的时间尺度。

使用网站顶部的头部菜单访问 Docker Scout 仪表板的不同主要部分:

镜像

镜像视图显示组织中的镜像列表。你可以使用搜索框搜索特定仓库。

列表中的每个条目显示以下详细信息:

  • 镜像的仓库名称。选择仓库链接将打开该仓库的标签列表
  • 所选环境中镜像的最新标签。选择基础镜像的链接将打开镜像详细视图
  • 镜像的操作系统和架构。
  • 镜像的最后推送日期。
  • 最新镜像版本的漏洞。
  • 策略状态,包括最新版本的变化,以及对不合规镜像的更多详细信息的链接。
仓库标签列表

此页面有两个标签页:

  • 策略标签页显示了镜像的最新版本的策略差异。
  • 标签标签页包含仓库标签列表,并显示了该仓库的所有标签。

标签标签页中,你可以使用搜索框按环境或标签或摘要过滤列表。

列表

中的每个条目显示以下详细信息:

  • 一个复选框,用于将标签标记为与另一个进行比较。

    提示

    通过选择列表顶部的比较镜像按钮,并选中两个镜像标签旁的复选框,比较两个镜像标签。

  • 标签版本或镜像摘要。点击版本链接将打开镜像层视图

  • 分配给镜像的环境

  • 镜像的操作系统和架构。

  • 该标签版本的漏洞。

  • 该标签版本的最后推送日期。

  • 仓库使用的基础镜像和版本,以及该版本的漏洞。

比较镜像

你可以比较列表中的两个或多个镜像。标记你要比较的镜像版本,然后选择比较镜像

比较视图的顶部部分显示了两个选定镜像标签的概览。视图的标签部分显示以下内容:

  • 选择标签以查看每个镜像中添加、删除或更改的包。表格中的每个条目显示了两个镜像中版本和漏洞的差异。选择包旁边的披露三角形可查看变化的漏洞的更多详细信息。
  • 选择漏洞标签以查看每个镜像中出现的漏洞变化。
镜像详细视图

选择镜像标签将进入镜像详细视图。此视图包含两个标签,让你深入了解镜像的组成和策略合规情况:策略状态镜像层

策略状态 镜像层


策略标签向你展示了镜像的策略评估结果。使用右侧的查看详情查看修复链接查看完整的评估结果,并了解如何提高不合规镜像的合规评分。

有关策略的更多信息,请参见策略评估


策略

策略 视图显示所选组织和环境中所有镜像的策略合规情况的分解。你可以使用镜像下拉菜单查看特定环境的策略分解。

有关策略的更多信息,请参见策略评估

基础镜像

基础镜像 视图显示组织中使用的所有基础镜像。

列表中的每个条目显示以下详细信息:

使用基础镜像的镜像

镜像 标签页显示使用特定基础镜像的组织中的所有镜像。

列表中的每个条目显示以下详细信息:

视图显示组织中跨仓库的所有包。

列表中的每个条目显示以下详细信息:

  • 包名称。
  • 包类型。
  • 组织中镜像使用的包的版本。
  • 使用该包的镜像数量。

漏洞

漏洞 视图显示组织中镜像的所有漏洞列表。你可以按严重性对列表进行排序和筛选,并使用搜索框搜索常见漏洞和暴露(CVE)ID。

列表中的每个条目显示以下详细信息:

  • 漏洞的严重性。

    注意

    Docker Scout 基于多种来源的数据计算此严重性等级。

  • 漏洞的严重性。

  • 漏洞的 CVE ID。选择 CVE ID 链接将打开漏洞详细信息页面

  • 受此 CVE 影响的包名称和版本。

  • 漏洞的公共漏洞评分系统(CVSS)分数。Docker Scout 显示多个来源中最高的 CVSS 分数。

  • 组织中使用受此 CVE 影响的包的镜像数量。选择此链接将打开漏洞详细信息页面

  • Docker Scout 是否知道此漏洞的修复方案,如果有,则是修复方案的包版本。

漏洞详细信息页面

漏洞详细信息页面显示了特定 CVE 的详细信息。这个页面是公开的。你可以与你 Docker 组织外的其他人共享特定 CVE 描述的链接。

该页面显示以下信息:

  • CVE ID 和严重性。
  • 漏洞的描述。
  • 受漏洞影响的包数量。
  • 漏洞发布日期。

以下是受漏洞影响的所有仓库列表,可通过镜像名称进行搜索。列表中的每个条目显示以下详细信息:

  • 仓库名称。选择仓库名称链接将打开仓库标签列表视图
  • 镜像的当前标签版本。选择标签名称链接将打开仓库标签列表层视图
  • 镜像最后推送的日期。
  • 存储镜像的注册表。
  • 镜像中受影响的包名称和版本。
设置

网站头部下拉菜单中的设置菜单包含前往集成页面和仓库设置的链接。

集成

集成 页面允许你创建和管理 Docker Scout 集成,如环境集成和注册表集成。有关如何开始使用集成的更多信息,请参见Docker Scout 与其他系统集成

仓库设置

仓库设置 是你启用和禁用组织中仓库的 Docker Scout 分析的地方。

要启用仓库,请选择要在其上启用 Docker Scout 分析的仓库的复选框,然后选择启用镜像分析

当你为仓库启用镜像分析时,Docker Scout 将在你推送到该仓库的新标签时自动进行分析。

通过选择禁用镜像分析 来禁用所选仓库的 Docker Scout 分析。

[7. 扩展(Extension)管理](#7. 扩展(Extension)管理)

Extensions 页面为 Docker 用户提供了一个全面的平台,用于发现、使用、管理以及创建 Docker 扩展,从而大大增强了 Docker Desktop 的功能性和灵活性。

Docker Desktop 的 Extensions 页面由三个子标签页面组成:Browse (浏览)、Manage (管理)和 Create (创建)。这些页面为用户提供了一个丰富的环境来发现、管理和创建 Docker 扩展。以下是对这些标签页功能的具体解析:

[7.1 Browse(浏览)](#7.1 Browse(浏览))

这个标签页充当了一个 Docker 扩展市场,允许用户浏览和发现第三方工具以扩展 Docker Desktop 的功能。

主要特点包括:

  • 扩展列表:展示可用的各种 Docker 扩展,如安全工具、网络工具、性能监控工具等。
  • 详细信息:每个扩展都包括详细的描述、评审状态(如是否已审核)、下载次数和相关信息。
  • 分类和排序:用户可以按类别筛选扩展或按推荐、最新添加等排序。
  • 搜索功能:提供搜索栏,方便用户快速找到特定的扩展。
  • 安装和使用:用户可以从这里直接安装所需的扩展。

在浏览页面。你可以找到很多功能强大的工具。比如如果你不喜欢Docker Desktop UI提供的可视化功能,还可以以插件的形式安装Protainer等第三方工具:

这个插件提供了一个Web版本的可视化UI,在后面将会有介绍。

插件安装成功后,在左侧的插件列表可以看到我们已经安装好了的插件。点击列表中对应的插件项,右侧将打开具体对应的插件页面:

[7.2 Manage(管理)](#7.2 Manage(管理))

Manage 标签页中,用户可以管理已安装的 Docker 扩展。

这个页面的主要功能包括:

  • 已安装扩展列表:显示所有已安装的扩展及其基本信息。
  • 管理选项:提供对每个扩展的管理操作,如更新、移除或配置。
  • 安装状态监控:显示扩展的安装和运行状态。
  • 扩展来源:识别每个扩展是从市场安装的还是自行开发的。

[7.3 Create(创建)](#7.3 Create(创建))

Create 页面专注于扩展开发,为开发者提供必要的资源和指导来创建自己的 Docker 扩展。

其主要特点包括:

  • 开发指引:提供指南和命令来初始化新的扩展项目。
  • 资源链接:连接到文档、教程、社区论坛等,帮助开发者学习如何开发和发布自己的扩展。
  • 样本代码和文档:提供示例代码和详细文档,帮助开发者快速上手。
  • 发布流程 :指导开发者如何将自己开发的扩展发布到 Docker 扩展市场。
  • 社区交流 :链接到 Docker 社区,便于开发者交流和反馈。

[8. 设置相关页面](#8. 设置相关页面)

Docker Desktop 提供了一系列的设置页面,允许用户根据自己的需求对 Docker Desktop 进行个性化设置。以下是这些设置页面及其设置项的详细介绍:

[8.1 设置-总体(General)页面](#8.1 设置-总体(General)页面)

  1. 启动时自动打开 Docker Desktop :在用户登录电脑时自动启动 Docker Desktop

  2. Docker Desktop 启动时打开 Docker Dashboard :启动 Docker Desktop 同时打开 Docker Dashboard

  3. 为 Docker Desktop 选择主题

    • 浅色
    • 深色
    • 使用系统设置
  4. 选择容器终端

    • 集成终端
    • 系统默认

    用于决定从容器打开终端时启动哪个终端。

  5. 在 tcp://localhost:2375 上公开守护进程,不使用 TLS:允许旧版客户端连接到守护进程,但容易受到远程代码执行攻击,需谨慎使用。

  6. 使用基于 WSL 2 的引擎WSL 2 提供比 Hyper-V 更好的性能。

  7. *向主机的 etc/hosts 文件添加 .docker.internal 域名 (需要密码):允许从主机和容器解析 *.docker.internal DNS 名称。

  8. 发送使用统计信息 :发送错误报告、系统版本和语言以及 Docker Desktop 生命周期信息(如启动、停止、重置等)。

  9. 显示 CLI 提示 :在 CLI 中运行 Docker 命令时获取提示和技巧。

  10. SBOM 索引 :启用镜像 SBOM 索引。

  11. 启用后台 SBOM 索引 :自动开始对新构建或拉取的镜像进行 SBOM 索引,并在检查镜像时启动。

[8.2 设置-资源(Resources)页面](#8.2 设置-资源(Resources)页面)

(1)高级
  • 使用 WSL 2 后端,因此 Windows 管理资源限制。
  • 可以在 .wslconfig 文件中配置 WSL 2 分配的内存、CPU 和交换空间的限制。
(2)磁盘镜像位置
  • 浏览
资源节约
  • 启用资源节约模式:在没有运行容器时减少 CPU 和内存使用。当容器启动时,自动退出资源节约模式。
  • 使用滑块设置在没有运行容器和 Docker Desktop 进入资源节约模式之间的时间间隔。
(3)代理
  • 手动代理配置
    • 网络服务器(HTTP
    • 安全网络服务器(HTTPS
    • 绕过这些主机和域的代理设置
(4)网络
  • 配置 Docker 容器与网络的交互方式
    • Docker 子网
      • 默认:192.168.65.0/24
(5)WSL 集成
  • 配置要从中访问 Docker 的 WSL 2 发行版。
  • 启用与我的默认 WSL 发行版的集成
    • 如果没有安装任何 WSL 2 发行版,请转换 WSL 1 发行版为 WSL 2,或安装新的发行版。

[8.3 设置-Docker 引擎页面](#8.3 设置-Docker 引擎页面)

  • 配置 Docker 守护进程:通过键入 json Docker 守护进程配置文件
  • 使用需谨慎,可能会阻止 Docker 启动。
json 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false
}

[8.4 设置-构建器页面](#8.4 设置-构建器页面)

(1)选定的构建器
  • 这是启动构建时默认使用的构建器。
(2)可用构建器
  • 检查和管理构建器。

[8.5 设置-K8s(Kubernetes)设置页面](#8.5 设置-K8s(Kubernetes)设置页面)

  • 启用 Kubernetes :启动 Docker Desktop 时启动 Kubernetes 单节点集群。
  • 显示系统容器(高级):使用 Docker 命令时显示 Kubernetes 内部容器。
  • 重置 Kubernetes 集群:将删除所有堆栈和 Kubernetes 资源。

[8.6 设置-软件更新](#8.6 设置-软件更新)

  • 你已更新至最新版本:Docker Desktop 4.26.1 (131620) 是当前可用的最新版本。(以我截图为例)
  • 检查更新
  • 发布说明
偏好设置
  • 自动检查更新
  • 始终下载更新
  • 自动在后台下载新更新。

[8.7 设置-拓展页面](#8.7 设置-拓展页面)

  • 启用 Docker 扩展:关闭此选项将卸载所有扩展并禁用所有扩展功能。
  • 仅允许通过 Docker Marketplace 分发的扩展:这将阻止通过扩展 SDK 工具安装任何其他扩展。
  • 显示 Docker 扩展系统容器:使用 Docker 命令时显示 Docker Desktop 扩展的内部容器。

[8.8 设置-开发特征页面](#8.8 设置-开发特征页面)

开发中的特征
  • Beta 特征:可以随时停止。这些是潜在未来特征的初始发布版本。参与 Beta 计划的用户有机会验证并提供对未来功能的反馈。
  • 启用 containerd 用于拉取和存储镜像
  • 启用 Wasm :安装运行 Wasm 工作负载 的运行时。
实验性特征
  • 访问实验性特征:在每个版本中,我们可能会添加我们当前正在实验的特征。这些特征处于产品开发生命周期的早期阶段。

[8.9 设置-通知页面](#8.9 设置-通知页面)

  • 设置 Docker Desktop 的通知偏好。

  • 你将始终收到有关错误、新的 Docker Desktop 版本和更新的通知。

  • 状态更新

  • Docker 公告

  • Docker 调查

相关推荐
小徐Chao努力2 小时前
【centos】经常使用的脚本
linux·运维·centos
rainFFrain4 小时前
日志与策略模式
linux·运维·vscode·策略模式
2401_840192277 小时前
k8s的StorageClass存储类和pv、pvc、provisioner、物理存储的链路
docker·容器·kubernetes
无情白7 小时前
k8s运维面试总结(持续更新)
运维·面试·kubernetes
H1346948908 小时前
企业服务器备份软件,企业服务器备份的方法有哪些?
运维·服务器·负载均衡
塔能物联运维10 小时前
塔能科技:精准节能,擎动工厂可持续发展巨轮
大数据·运维
小王努力学编程10 小时前
【Linux系统编程】进程概念,进程状态
linux·运维·服务器·c++
小王不会写code10 小时前
Docker安装、配置Redis
redis·docker
liuliu032311 小时前
戴尔笔记本 ubuntu 22.04 开机后进入initramfs界面
linux·运维·ubuntu
RedCong11 小时前
如何在k8s中对接s3存储
云原生·容器·kubernetes