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 才能连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/507281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

揭秘五五复制模式,助力平台用户快速裂变至百万级!

你是否时常为平台的用户增长缓慢而倍感压力&#xff1f;是否渴望找到一种方法&#xff0c;让平台用户迅速扩张&#xff0c;实现百万级用户量的突破&#xff1f;今天&#xff0c;我将为大家揭晓一种创新的商业模式——五五复制模式&#xff0c;它或许能成为你实现梦想的关键。 五…

位运算

本文用于记录个人算法竞赛学习&#xff0c;仅供参考 目录 一.n的二进制表示中第k位x 二.通过lowbit操作返回x的最后一位1 1.lowbit实现&#xff1a;x & (-x) 2. lowbit具体作用 一.n的二进制表示中第k位x n 15 &#xff08;1111&#xff09;2 操作&#xff1a;1.x …

Redis主从同步机制

一、步骤如下&#xff1a;&#xff08;全量&#xff09; 1.从服务器向主服务器发送同步命令 sync&#xff1b; 2.主数据库接收到同步命令后&#xff0c;会执行 bgsave 命令&#xff0c;在后台生成一个 rdb 文件&#xff0c;并使用一个缓冲区记录从现在开始执行的所有写命令&a…

苏州金龙新V系客车创新打造,剑指新标杆

诞生于2004年的苏州金龙V系客车在20年时间里销售了6万多辆&#xff0c;用户超过5000家&#xff0c;用户的反复选择体现了它超强的产品力。3月下旬&#xff0c;全新打造的苏州金龙新V系客车震撼登场&#xff0c;拥趸们发现&#xff0c;该系列客车在智能化、网联化及设计语言方面…

如何使用剪映专业版剪辑视频

1.操作界面功能介绍 2.时间线的使用 拖动前端后端缩减时长&#xff0c;有多个素材可以拖动调节前后顺序拼接。 分割视频 删除

基于无迹卡尔曼滤波的路面附着系数估计算法

基于无迹卡尔曼滤波的路面附着系数估计算法 附赠自动驾驶学习资料和量产经验&#xff1a;链接 路面附着系数作为车辆底盘动力学反馈控制中的重要变量&#xff0c;对它的精确估计直接关系到控制系统的平稳运行和车辆行驶安全。但是由于无法通过直接测量获得某些状态参数或者测…

手册更新 | RK3588开发板适配Android13系统

iTOP-RK3588开发板使用手册更新&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 本次更新内容为《iTOP-3588开发板源码编译手册》&#xff0c;RK3588开发板适配了Android13系统&#xff0c;手册同步添加了And…

@所与人「要复现」文献调研与需求收集

鉴于上次的「下一个要知道什么」调查结果&#xff0c;我发现「复现文献」的呼声不是一般的高&#xff0c;那是相当的高呐&#xff01; 所以&#xff01;新的调查又来了&#xff01;文献数量和类型实在是太太太太太太庞大了&#xff01;所以我就想征询一下大家的需求&#xff0c…

新人必看,轻松学会品牌360百科词条创建

品牌在当今互联网时代的重要性不言而喻。随着人们对信息的需求和获取渠道的多样化&#xff0c;品牌需要在各个平台上展示自己的形象&#xff0c;其中包括360百科这样的综合性知识平台。创建360百科词条可以为品牌增加曝光度、提升信誉度&#xff0c;进而吸引更多潜在客户和粉丝…

机器学习实战17-高斯朴素贝叶斯(GaussianNB)模型的实际应用,结合生活中的生动例子帮助大家理解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战17-高斯朴素贝叶斯(GaussianNB)模型的实际应用&#xff0c;结合生活中的生动例子帮助大家理解。GaussianNB&#xff0c;即高斯朴素贝叶斯模型&#xff0c;是一种基于概率论的分类算法&#xff0c;广泛应…

HCIA复习

OSI --开放式系统互联参考模型 --- 7层参考模型 TCP/IP协议栈道 --- 4层或5层 OSI&#xff1a; 应用层 抽象语言 -->编码 表示层 编码-->二进制 表示层以下都是二进制-----data&#xff08;数据&#xff09; 会话层 提供应用程序的会话地址 上三层为应用…

刷题记录-leetcode字母异位词分组

给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat", &qu…

分享 5 个提高技术领导力的技巧

技术领导力于很多人而言都是谜一般的存在。有观点认为&#xff0c;实战经验丰富的资深开发最终只有成为技术管理者才能继续成长。从某些方面来看&#xff0c;这可能是对的&#xff0c;但考虑到公司结构和规章制度等&#xff0c;想要完成从「个人贡献者」到「技术管理者」的跨越…

Linux 查看磁盘信息:df与du命令详解

一、df 1.简介 df 是 disk free的缩写&#xff0c;从UNIX和类UNIX操作系统的早期开始&#xff0c;它就是UNIX和类UNIX操作系统的一部分。它被设计为一种工具&#xff0c;用于监视系统上已使用和可用的磁盘空间数量。 df 命令主要用于需要检查文件系统上已使用和可用的磁盘空…

【Servlet】生命周期

文章目录 一、生命周期二、错误实例三、修改Servlet的初始化时机 一、生命周期 生命周期&#xff1a;实例化、初始化、服务、销毁 从出生到死亡的过程。对应Servlet中的三个方法&#xff1a;init()&#xff0c;service()&#xff0c;destroy() 被创建&#xff1a;执行init方法…

磁性脂质体MLs纳米药物载体

磁性脂质体&#xff08;magnetoliposomes, MLs&#xff09;是一种结合了脂质体和磁性纳米颗粒&#xff08;MNPs&#xff09;的复合纳米结构&#xff0c;这种结构兼具了脂质体的生物相容性和磁性纳米颗粒的磁响应性&#xff0c;使其成为生物医学领域尤其是在药物递送系统中非常有…

算法学习——LeetCode力扣动态规划篇3(494. 目标和、474. 一和零、518. 零钱兑换 II)

算法学习——LeetCode力扣动态规划篇3 494. 目标和 494. 目标和 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 …

sk-learn 特征数据预处理方式汇总

数据集及基本操作 1&#xff09;数据集的组成 数据集由特征(feature)与标签(label)构成。 特征是输入数据。 什么是特征&#xff08;Features&#xff09;: 机器学习中输入数据&#xff0c;被称为特征。通常特征不止1个&#xff0c;可以用 n 维向量表示n个特征。 Features 数…

智能仪器替代技术工程师重复工作 专注生产方案优化!

关键词&#xff1a;智能仪器,测径仪,测宽仪,测厚仪,直线度测量仪 在当今竞争激烈的市场环境下&#xff0c;企业需要不断提高生产效率和质量&#xff0c;以满足客户的需求。而技术工程师在生产过程中扮演着至关重要的角色&#xff0c;但他们的时间和精力往往被重复的工作所占据&…

【爬虫框架Scrapy】02 Scrapy入门案例

接下来介绍一个简单的项目&#xff0c;完成一遍 Scrapy 抓取流程。通过这个过程&#xff0c;我们可以对 Scrapy 的基本用法和原理有大体了解。 1. 本节目标 本节要完成的任务如下。 创建一个 Scrapy 项目。 创建一个 Spider 来抓取站点和处理数据。 通过命令行将抓取的内容…