配置DOCKER DESKTOP(win11)

配置DOCKER DESKTOP(win11)

前言

在win11系统上配置DOCKER DESKTOP遇到了不少问题,不过磕磕绊绊的总算配置成功了,现在将我的配置过程记录下来。

一. 确认虚拟化已启用

1.1 按 Ctrl + Shift + Esc 打开任务管理器 → 切换到 性能 标签。

1.2 查看 CPU 部分,确认 虚拟化 显示为 “已启用”
(若显示“已禁用”,需进入 BIOS 开启。)

二. 启用 WSL 2

在 **PowerShell(管理员)**中运行以下命令,确认输出为 WSL 2

wsl --status                 # 查看 WSL 版本状态
wsl --set-default-version 2  # 设置 WSL 2 为默认版本

在这里插入图片描述
由上图可以看到我现在的版本是WSL2

对于默认分发

  • Docker Desktop 会默认生成一个名为 docker-desktop 的轻量级发行版,专门用于运行 Docker 守护进程(无需用户干预)。

    • 可通过以下命令查看:

      wsl --list -v
      
      NAME                   STATE           VERSION
      docker-desktop         Running         2
      docker-desktop-data    Running         2
      
  • 用户发行版可选
    如果你想在 WSL 2 中直接运行 Linux 命令或开发,可以后续安装其他发行版(如 Ubuntu),但这不是 Docker 运行的必要条件。

相关问题:

没有 Linux 发行版会影响 Docker 使用吗?

  • 不会。Docker 容器本身是独立于发行版的,所有容器操作(如 docker run)均通过 Docker Desktop 的 WSL 2 后端处理。

关于 wsl --status指令运行失败的一种情况

PS C:\Users\Administrator> wsl --status
默认版本:2

适用于 Linux 的 Windows 子系统内核可以使用“wsl --update”手动更新,但由于你的系统设置,无法进行自动更新。
 若要接收自动内核更新,请启用 Windows 更新设置:“在更新 Windows 时接收其他 Microsoft 产品的更新”。
 有关详细信息,请访问https://aka.ms/wsl2kernel。
Windows 更新已暂停。

未找到 WSL 2 内核文件。若要更新或恢复内核,请运行“wsl --update”。

如果通过上述更新指令无法下载更新,建议去官网https://aka.ms/wsl2kernel手动下载最新的WSL内核文件

三. 安装 Docker Desktop

  1. 从官网下载安装包:https://www.docker.com/products/docker-desktop/
  2. 运行安装程序,勾选 “Use WSL 2 based engine”(即使没有发行版也要勾选)。
  3. 完成安装并启动 Docker Desktop。

相关问题:

从官网下载太慢怎么办?

  • 可以去找找国内的镜像,不过我找到的镜像版本太老,下下来后无法正常使用,最后还是去官网下载了
  • 最好别用校园网,我用校园网需要下一天,用流量的话大概需要十几分钟

启动失败怎么办?

在这里插入图片描述

如上图,我在启动 Docker Desktop提示WSL2内核更新未安装,导致系统缺少 WSL 2 Linux 内核更新包,所以我们需要去它所提示的网址https://aka.ms/wsl2kernel, 下载WSL2更新包,注意根据自己的电脑版本下载对应的更新包(x64 或 ARM64):

在这里插入图片描述

下载的更新包双击打开,系统会自动更新WSL2内核。

验证安装

打开 PowerShell 或 CMD,运行:

docker --version
docker run hello-world

如果看到 Hello from Docker!,说明 Docker 已通过 WSL 2 正常运行。

四. DOCKER DESKTOP主要功能

DOCKER DESKTOP版本:

在这里插入图片描述

DOCKER DESKTOP主界面:

在这里插入图片描述

Containers(容器)

  • 功能:管理所有运行中的容器实例。
  • 主要操作
    • 查看容器状态(运行/停止/崩溃)。
    • 启动/停止/删除容器。
    • 查看容器日志和资源占用(CPU/内存)。
  • 界面说明
    • Search:搜索容器(按名称或ID)。
    • Port(s):查看容器端口映射。
    • Show charts:显示资源使用图表。

Images(镜像)

  • 功能:管理本地存储的 Docker 镜像。
  • 主要操作
    • 拉取(Pull)新镜像。
    • 删除(Remove)无用镜像。
    • 构建(Build)自定义镜像(需 Dockerfile)。
  • 界面说明
    • 显示镜像大小、创建时间和标签。

Volumes(数据卷)

  • 功能:管理持久化存储卷。
  • 主要操作
    • 创建/删除数据卷。
    • 查看卷的存储路径(宿主机目录)。
  • 用途
    • 防止容器删除后数据丢失。

Builds(构建记录)

  • 功能:查看通过 Dockerfile 构建镜像的历史记录。
  • 主要操作
    • 重新构建失败的镜像。
    • 查看构建日志。

Docker Hub

  • 功能:连接 Docker 官方镜像仓库。
  • 主要操作
    • 搜索/下载公共镜像(如 nginxmysql)。
    • 登录账号管理个人镜像。

Docker Scout(安全扫描)

  • 功能:镜像漏洞扫描与安全分析。
  • 主要操作
    • 检查镜像中的安全风险。
    • 获取修复建议(如升级基础镜像)。

Extensions(扩展插件)

  • 功能:安装第三方工具增强 Docker 功能。
  • 常用插件
    • Portainer:图形化管理容器。
    • Trivy:镜像漏洞扫描。
    • RedisInsight:Redis 数据库管理。

相关问题:

DOCKER DESKTOP频繁弹窗

  • 在使用DOCKER DESKTOP时,它总是过一会就跳出至当前页面,比如在浏览器中打字搜索时,打字打到一半,DOCKER DESKTOP会突然弹出变为系统主界面,导致我后续打的字都打到DOCKER DESKTOP里了。
  • 我的解决方案是注册一个账户登录DOCKER DESKTOP就好了。

五. 创建示例

5.1 载入国内镜像

  • 由于物理距离和网络带宽的限制,从国外的服务器下载大文件(如操作系统镜像、软件包等)时,可能会遇到速度较慢的情况。
  • 国内的镜像站点一般会与用户距离较近,减少了跨境网络传输的延迟和带宽瓶颈,从而提高了下载速度。

方法一:

通过DOCKER DESKTOP的可视化界面,进入设置界面->选择Docker Engine->在右侧json格式框内做出如下修改(增加国内镜像节点):

  "registry-mirrors": [
    "https://lispy.org",
    "https://docker.imgdb.de",
    "https://docker.hlmirror.com",
    "https://docker.1ms.run",
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ]

修改后选择右下角Apply&restart 保存修改。

方法二:

通过修改DOCKER DESKTOP的配置文件daemon.json,增加国内镜像(不同版本可能配置文件所在位置不同,下面是我的配置文件所在路径):

在这里插入图片描述

通过记事本将方法一中的国内镜像节点写入该配置文件,保存后重启docker服务。

验证镜像节点是否挂载:

PS C:\Windows\system32> docker info | Select-String "Registry Mirrors" -Context 0,1
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: DOCKER_INSECURE_NO_IPTABLES_RAW is set
WARNING: daemon is not using the default seccomp profile

>  Registry Mirrors:
    https://lispy.org

上面的警告对于DOCKER DESKTOP的基本功能没有影响,只要Registry Mirrors:下面能显示出我们增加的一个镜像节点就说明它已经成功挂载


或者通过指令docker info来查看docker的所有配置信息
如果从中找到前面配置的镜像节点,说明挂载成功
Registry Mirrors:
  https://lispy.org/
  https://docker.imgdb.de/
  https://docker.hlmirror.com/
  https://docker.1ms.run/
  https://docker.xuanyuan.me/

ps:镜像节点可能失效,若下载镜像失败,记得更新镜像节点。

相关问题:

  • 使用阿里云镜像下载postgres sql镜像时出现连接超时,请求失败的问题
PS C:\Windows\system32> docker pull postgres
>>
Using default tag: latest
Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded

这是因为国内有些镜像节点没有所下载的镜像,拉取不了,最后走国外的官方节点下载,结果因为网络限制下载失败。

解决方法就是更换国内其他的镜像节点下载。

5.2 建立一个postgres容器(在PowerShell(管理员)窗口)

拉取最新的postgres镜像:

PS C:\Windows\system32> docker pull postgres:latest     // (可选)指定版本,如 `postgres:14`
>>
Using default tag: latest
latest: Pulling from library/postgres
latest: Pulling from library/postgres
8a628cdd7ccc: Pull complete
e4847368ad17: Pull complete
97cdd47d9131: Pull complete
2817206b0512: Pull complete
3a6f8814136c: Pull complete
07db60713289: Pull complete
0c942aac37b1: Pull complete
8c63b71925de: Pull complete
97f28320a07a: Pull complete
2a08aad74366: Pull complete
6cea4d95608f: Pull complete
c1b7de8085d1: Pull complete
f15c43cffa70: Pull complete
6948dc7760c1: Pull complete
Digest: sha256:fe3f571d128e8efadcd8b2fde0e2b73ebab6dbec33f6bfe69d98c682c7d8f7bd
Status: Downloaded newer image for postgres:latest
docker.io/library/postgres:latest

What's next:
    View a summary of image vulnerabilities and recommendations → docker scout quickview postgres
    
以上结果表示从国内镜像节点完整下载了postgres镜像

启动 PostgreSQL 容器

PS C:\Windows\system32> docker run --name postgres-container -e POSTGRES_USER=myuser -e POSTGRES_PASSWORD=mypassword -e POSTGRES_DB=mydb -p 5432:5432 -d postgres
>>
856c795cce4843f5d79d3661ac0f20dbdc71bf0d0fa9299c713b73b53edd3eb9

以上结果表示已经成功创建(自动)并运行了 PostgreSQL 容器,并且获得了容器 ID 856c795cce4843f5d79d3661ac0f20dbdc71bf0d0fa9299c713b73b53edd3eb9。这个 ID 表示容器正在后台运行。
  • --name my-postgres:将容器命名为 “postgres-container”。
  • -e POSTGRES_USER:数据库用户名(默认 postgres)。
  • -e POSTGRES_PASSWORD:数据库密码(必须设置)。
  • -e POSTGRES_DB:初始数据库名称(可选)。
  • -p 5432:5432:将主机的 5432 端口映射到容器的 5432 端口(PostgreSQL 的默认端口)。
  • -d:让容器在后台运行。

连接 PostgreSQL 数据库:

PS C:\Windows\system32>  docker exec -it postgres-container psql -U myuser -d mydb
psql (17.4 (Debian 17.4-1.pgdg120+2))
Type "help" for help.

mydb=#

psql (17.4 (Debian 17.4-1.pgdg120+2)) 表示你正在使用 PostgreSQL 17.4 版本的命令行客户端(psql),这是 PostgreSQL 数据库的一个客户端工具,用于执行 SQL 查询和管理数据库。
以上结果说明已经成功连接到了 PostgreSQL 数据库,并且现在位于 mydb 数据库的命令行界面了,可以开始执行 SQL 查询了。
以下是一些基础的 PostgreSQL指令:
1. 查看当前数据库中的表:
你可以使用以下命令来列出当前数据库中的所有表:
\dt

2. 创建新的表:
你可以创建一个新表。例如,创建一个名为 users 的表:
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

3. 插入数据:
你可以向 users 表中插入一些数据:
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');

4. 查询数据:
执行查询以查看 users 表中的数据:
SELECT * FROM users;

5. 退出 psql:
如果你想退出 PostgreSQL 命令行界面,可以输入:
\q

ps:上述连接指令没有输入密码就连接上数据库 ,可能是因为容器内的 PostgreSQL 配置默认使用了 trust 认证方式,或者是本地连接的认证配置没有强制要求密码。你可以通过修改 pg_hba.conf 配置文件来更改这一行为,强制要求密码。

DOCKER DESKTOP中可以利用可视化界面管理容器
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值