Windows 11 专业版 23H2 Docker Desktop 下载 安装 配置 使用

2024-04-01 18:44

本文主要是介绍Windows 11 专业版 23H2 Docker Desktop 下载 安装 配置 使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

博文目录

文章目录

  • Docker Desktop
  • 准备
    • 系统要求 (WSL 2 backend)
    • 在 Windows 上打开 WSL 2 功能
      • 先决条件
      • 开启 WSL 2
  • WSL
  • 下载安装
  • 启动
  • 配置
  • 使用
    • 镜像 Image
    • 卷积 Volumes
    • 容器 Containers
  • 命令
    • Redis
    • MySQL
    • PostGreSQL


Docker Desktop

Overview of Docker Desktop
Docker Desktop 疑难解答 虚拟化

Docker Desktop for Windows, 可以在 Windows 上创建 Docker 环境, 支持在 CMD 中运行 docker 命令, 提供了简单的 GUI 界面, 方便管理镜像, 容器, 数据卷等内容

准备

在 Windows 安装 Docker Desktop 有两种选择

  • WSL 2 backend
  • Hyper-V backend and Windows containers

Docker Desktop 推荐使用 WSL 2 backend, 因为 WSL 2 比 Hyper-V backend 有更好的性能. 后续内容都是基于 WSL 2 来说明

系统要求 (WSL 2 backend)

  • WSL 版本 1.1.3.0 或更高
  • Windows 11 64 位
    • 21H2 或更高版本
  • Windows 10 64 位
    • 建议使用 22H2(内部版本 19045)或更高版本
    • 最低要求 21H2(内部版本 19044)或更高版本
  • 在 Windows 上打开 WSL 2 功能

在 Windows 上打开 WSL 2 功能

先决条件

  • 具有二级地址转换 (SLAT) 的 64 位处理器, 只要电脑不是老古董, 通常都满足
  • 空余的 4GB 系统内存
  • 在 BIOS 中启用硬件虚拟化, 可通过如下方式确认是否已启用虚拟化在这里插入图片描述

开启 WSL 2

开启 WSL 2 有两种方式

  • 以管理员方式运行 wsl --install 并重启系统, 此命令将启用运行 WSL 所需的功能, 并默认安装 Linux 的 Ubuntu 发行版. Docker Desktop 其实并不依赖任何 Linux 发行版, 所以通过该命令安装的 Ubuntu 其实是不必要的
  • 手动分步开启 WSL 2
    • 启用 适用于 Linux 的 Windows 子系统虚拟机平台 两个可选功能, 如果是专业版或企业版系统, 还可以启用 Hyper-V 可选功能, 然后必须重启系统在这里插入图片描述
    • 执行 wsl --update 更新 WSL 到当前最新版, 执行 wsl --status 查看默认版本是否为 2, 如果不是则执行 wsl --set-default-version 2 将默认版本设置为 2

WSL

什么是 WSL
比较 WSL 版本
Docker Desktop WSL 2 backend on Windows

WSL 全称为 Windows Subsystem for Linux, 官网译为: 适用于 Linux 的 Windows 子系统 (WSL)

WSL 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。

WSL 目前有两个模式, 分别是 WSL 1 和 WSL 2, WSL 2 使用最新最好的虚拟化技术在轻量级实用工具虚拟机 (VM) 内运行 Linux 内核. 简单来说, WSL 2 在大多情况下比 WSL 1 性能好兼容性好, 所以默认情况下都是使用 WSL 2 模式

Docker Desktop 不需要我们在 WSL 中安装任何 Linux 发行版。因为 Docker Desktop 自带两个专用的内部 Linux 发行版, 两者是 Docker Desktop 专用的, 不能用作其他用途

  • docker-desktop, 用于运行 Docker 引擎 ( dockerd )
  • docker-desktop-data, 用于存储容器和映像
# 查看 wsl 相关内容的版本
wsl --version
# 查看 wsl 当前状态
wsl --status
# 检查 wsl 各 Linux 发行版的运行模式是 wsl 1 还是 wsl 2
wsl -l -v

下载安装

官网下载

当前 Docker Desktop for Windows 版本是 4.28.0 (139021)

在这里插入图片描述

Docker Desktop 推荐使用 WSL 2 代替 Hyper-V, 默认勾选不要取消, 等待安装完成即可

在这里插入图片描述

启动

在这里插入图片描述

接收 Docker 协议

在这里插入图片描述

先选择不登录, 然后随便选两个角色, 就可以进入 Containers 面板

在这里插入图片描述

如果启动一直卡 Starting the Docker Engine 转圈, 可能是准备工作没有做好, 对照步骤检查一下

配置

在这里插入图片描述

其实也没什么好配置的, 镜像保存位置可以改一改, 这个内容我们也无法直接查看, 而且我只有一个 C 盘, 所以就不改了, 没有必要

有人会在 Docker Engine 配置项中配置镜像加速, 但是我体验下来感觉都不行, 都无法直接在 Docker Desktop 里搜索镜像, 结合我之前使用经验来看, 加速仓库的镜像不够新, 有些版本的镜像不存在, 而且现在拉取镜像好像不需要魔法速度就很快, 所以我觉得使用 Docker Desktop 搜索镜像的时候开一下魔法即可, 选择一个 Tag 版本, 然后通过命令行的方式去拉取镜像

使用

最佳实践

安装 Docker Desktop for Windows 后, 就可以像在 Linux 一样在 CMD 里执行 docker 命令, GUI 算是一个补充功能, 能简化一些操作, 但是一些复杂操作或者特殊操作或者是 GUI 无法做到的操作, 都可以通过命令行得方式来执行. GUI 和 CMD 都是 Docker Engine 的一个操作入口, 其状态是完全一致的

镜像 Image

在这里插入图片描述

在不开魔法的情况下, 搜索不到镜像, 即使配置了镜像加速也没有效果, 所以我推荐这里开魔法

在这里插入图片描述

打开魔法之后, 可以正常搜索到镜像, 比如第一个就是官方提供的 Redis 镜像

在这里插入图片描述

这里有一个问题, 提供的 Tag 列表里没有 latest, 可能是因为该列表只显示最近的几个 Tag 而不是完整 Tag 列表, 可以点开 Redis 去看详细信息

在这里插入图片描述

点开详情后, 我们看到是有 latest Tag 的, 且 latest 版本就是 7.2.4 (一行的多个 Tag 都是同一个版本), 这时候我们可以关闭魔法, 通过 CMD 执行 docker pull redis:7.2.4 来拉取最新的 Redis 镜像, 速度非常快

在这里插入图片描述
在这里插入图片描述

拉取成功后, 在 Docker Desktop 的 Images 面板中就会显示出来

卷积 Volumes

在这里插入图片描述

在 Volumes 面板可以创建 Volume, 等效于执行 docker volume create 命令, 创建的 Volume 印射在 Windows 的 \\wsl.localhost\docker-desktop-data\data\docker\volumes 路径, 有读写权限, 可以通过 Windows 资源管理器 直接操作

docker run -v <host-path>:<container-path>, Docker Desktop 建议 host-path 使用 Linux 容器中的路径而不是 Windows 路径, 这样可以充分利用文件系统性能. 由于我们不是直接使用 Linux 环境, 不确定 -v 参数指定 Linux 文件路径是否可行, 而 Volume 由 Docker 控制, 使用的是 Linux 容器中的路径, 而且也印射到了 Windows 资源管理器, 所以我认为使用 Volume 是比较好的方式

在这里插入图片描述

容器 Containers

在这里插入图片描述

在 Images 面板可以点击 Action 的 Run 按钮来创建并启动一个容器, 在这里, 我设置容器名称为 redis, 印射的主机端口为 6379, 印射的主机路径为一个名为 redis 的 volume, 而不是一个 Windows 路径, 印射的容器路径为 /data, 然后启动容器, 等效于执行如下命令, 使用的是 Redis 默认配置

docker run --name redis -p 6379:6379 -v redis:/data redis:7.2.4 redis-server

通常我们启动 Redis 容器会指定一个自定义的配置文件 redis.conf, 该配置文件放到 redis 这个 volume 下, 用于控制 Redis 的行为, 执行命令如下, 这种后面带参数的命令, 通过 GUI 无法做到, 所以需要通过 CMD 来执行

docker run -d --name redis -p 6379:6379 -v redis:/data redis:7.2.4 redis-server /data/redis.conf

在这里插入图片描述

在 Container 面板, 可以看到各容器的状态, 能够简单操作容器, 比如启动, 停止, 删除等

在这里插入图片描述

点到容器内, 可以直接看到容器执行日志 Logs

在这里插入图片描述

容器的信息 Inspect, 可以点击 Platform, Cmd, State 等标签直接跳转到信息的对应位置查看关键信息

在这里插入图片描述

容器的文件 Files, 可以看到容器内的文件系统

在这里插入图片描述

容器的状态 State, 可以看到容器的运行情况, 资源占用情况等信息

在这里插入图片描述

可以在容器的 Exec 里执行命令, 相当于执行了 docker exec -it redis /bin/bash 命令进入了容器, 进而在容器内部执行命令

命令

Redis

redis.conf, 放到卷 redis 中

# bind 127.0.0.1 # 解除只允许环回地址访问的限制
daemonize no # 修改为yes会使docker使用配置文件方式启动redis失败
save 900 1 # 如果上个900秒内有超过1次写操作,则保存快照
save 300 10
save 60 10000
requirepass Mrv587.. # 密码
docker run \
-d \
--name redis \
-p 6379:6379 \
-v redis:/data \
redis:7.2.4 \
redis-server /data/redis.conf
docker run -d --name redis -p 6379:6379 -v redis:/data redis:7.2.4 redis-server /data/redis.conf

MySQL

my.cnf, 放到卷 mysql.config 中

[mysql]
# 设置mysql客户端默认字符集
default-character-set=UTF8MB4
[mysqld]
# 设置3306端口
port=3306
# 服务端使用的字符集
character-set-server=UTF8MB4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
docker run \
-d \
--name mysql \
-p 3306:3306 \
-v mysql:/var/lib/mysql \
-v mysql.config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=Mrv587.. \
mysql:8.3.0
docker run -d --name mysql -p 3306:3306 -v mysql:/var/lib/mysql -v mysql.config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=Mrv587.. mysql:8.3.0

PostGreSQL

docker run -d --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=Mrv587.. -e ALLOW_IP_RANGE=0.0.0.0/0 -v postgres:/var/lib/postgresql/data postgres:16.2

修改 pg_hba.conf 里的 host all all all scram-sha-256host all all all trust 才能连接

这篇关于Windows 11 专业版 23H2 Docker Desktop 下载 安装 配置 使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/867879

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意