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

news2024/12/27 11:09:39

博文目录

文章目录

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSTI 服务器端模板注入(Server-Side Template Injection)

1.Web_python_template_injection {{}}是变量包裹标识符&#xff0c;里面存放的是一个变量&#xff0c;当你输入 http://61.147.171.105:55121/{{8*8}} 执行成功&#xff0c;说明存在模版注入。接下来&#xff0c;开始想办法编代码拿到服务器的控制台权限 。 首先&#xff0c…

用于网站域名备案的服务器最便宜多少钱?30元备案5个网站

用于备案的服务器多少钱&#xff1f;阿里云30元3个月&#xff0c;腾讯云62元一年&#xff0c;符合ICP备案的服务器只要满足3个月时长就够用&#xff0c;并且一台云服务器可以备案5个网站域名或APP。云服务器吧yunfuwuqiba.com分享阿里云最便宜备案服务器价格和腾讯云ICP备案服务…

MES_ENT_STD

生产执行系统&#xff08;企业标准版&#xff09;MES_ENT_STD ERP_ENT_STD_59438.ieqq.ent-CSDN博客 OAMS_ENT_STD-CSDN博客

笔试——3.31腾讯笔试

整体难度尚可&#xff0c;ac了三道半&#xff0c;第四题没什么时间了没怎么看。 第一题 #include<bits/stdc.h> using namespace std;vector<vector<pair<int, int>>>arr; vector<int>visited; //res 1 white 0 int cnt 0;void dfs(int x) {if…

基于OrangePi Zero2的智能家居项目(开发阶段)

智能家居项目的软件实现 紧接上文 基于OrangePi Zero2的智能家居项目&#xff08;准备阶段&#xff09;-CSDN博客 目录 一、项目整体设计 1.1项目整体设计 1.2具体划分 二、开发工作的前期准备 1、进行分类&#xff0c;并用Makefile文件进行管理 参考&#xff1a;自己创…

pajamas 0 publish repo fst in gitee

0. 好久没有blog了&#xff0c;真的好久了&#xff0c;先交代一波 因为半年来发生了很多&#xff0c;计划有变&#xff0c;辞工作&#xff0c;出去耍&#xff0c;找工作&#xff0c;重新计划… 从半年前开始&#xff0c;就想好了&#xff0c;最近这两年应该优先会写代码 &…

一篇讲明白 Hadoop 生态的三大部件

文章目录 每日一句正能量前言01 HDFS02 Yarn03 Hive04 HBase05 Spark及Spark Streaming关于作者推荐理由后记赠书活动 每日一句正能量 黎明时怀着飞扬的心醒来&#xff0c;致谢爱的又一天&#xff0c;正午时沉醉于爱的狂喜中休憩&#xff0c;黄昏时带着感恩归家&#xff0c;然后…

python实现模糊神经网络(pytorch版)

1 理论 模糊神经网络是一种基于模糊逻辑的神经网络模型&#xff0c;其主要用于处理模糊信息和不确定性的问题。模糊神经网络可以将输入数据映射到一个模糊集合中&#xff0c;然后通过一系列的模糊规则进行求解&#xff0c;最终输出一个模糊集合。 模糊神经网络的基本原理是将…

AMD GPUs - Radeon™ PRO W7900与NVIDIA 4000系列GPU性能

文心一言 RTX 4090的性能高于AMD Radeon PRO W7900。 RTX 4090具有760亿个晶体管、16384个CUDA核心和24GB高速镁光GDDR6X显存&#xff0c;在4K分辨率的游戏中持续以超过100FPS运行。RTX 4090采用全新的DLSS 3技术&#xff0c;相比3090TI&#xff0c;性能提升可达2~4倍&#x…

CSS实现元素边框渐变动画

前言&#xff1a; 边框流动动画是一种非常常见的效果&#xff0c;能够让网页看起来更加生动有趣。通过使用 CSS3&#xff0c;我们可以轻松地实现这种动画效果。本文将介绍如何使用 CSS3 实现边框流动效果&#xff0c;下面一起来看看吧。 示例图&#xff1a;边框是动画持续变化的…

MCRNet:用于乳腺超声成像语义分割的多级上下文细化网络

MCRNet&#xff1a;用于乳腺超声成像语义分割的多级上下文细化网络 摘要引言方法 MCRNet_ Multi-level context refinement network for semantic segmentation in breast ultrasound imaging 摘要 由于对比度差、目标边界模糊和大量阴影的不利影响&#xff0c;乳腺超声成像中…

文献阅读:通过 NeuronChat 从单细胞转录组推断神经元-神经元通信

文献介绍 「文献题目」 Inferring neuron-neuron communications from single-cell transcriptomics through NeuronChat 「研究团队」 聂青&#xff08;加利福尼亚大学欧文分校&#xff09; 「发表时间」 2023-02-28 「发表期刊」 Nature Communications 「影响因子」 16.6…

mysql8 功能特点

1.查询缓存 删除了 2.secondary engine 设置&#xff1a; MySQL默认的存储引擎是InnoDB&#xff0c;而引入Secondary Engine&#xff0c;用来实现同时支持多引擎&#xff0c;在同一个MySQL Server上挂多个存储引擎&#xff0c;在支持InnoDB的同时&#xff0c;还可以把数据存放…

CommunityToolkit.Mvvm----配置

一、介绍&#xff1a; CommunityToolkit.Mvvm 包&#xff08;又名 MVVM 工具包&#xff0c;以前称为 Microsoft.Toolkit.Mvvm&#xff09;是一个现代、快速和模块化的 MVVM 库。 它是 .NET 社区工具包的一部分&#xff0c;围绕以下原则生成&#xff1a; 独立于平台和运行时 - …

Pandas | value_counts() 的详细用法

value_counts() 函数得作用 用来统计数据表中&#xff0c;指定列里有多少个不同的数据值&#xff0c;并计算每个不同值有在该列中的个数&#xff0c;同时还能根据指定得参数返回排序后结果。 返回得是Series对象 value_counts(values,sortTrue, ascendingFalse, normalizeFal…

《Linux运维实战:达梦DM8数据库之基本操作》

一、创建表空间 1.1、使用客户端工具创建 1、使用 SYSDBA 用户登录 DM 管理工具。右键表空间模块&#xff0c;点击【新建表空间】&#xff0c;如下图所示&#xff1a; 2、可根据项目需要&#xff0c;修改表空间文件、路径、大小、是否自动扩充、扩充上限等信息&#xff0c;如下…

网络类型整理

1、点到点 &#xff1a;在一个网段内只能存在&#xff0c;两个物理节点 MA-多路访问 -- 在一个网段内物理节点的数量不限制 MA--- BMA NBMA 2、BMA -- 广播型多路访问 3、NBMA--非广播型多路访问 注&#xff1a;不同网络类型实际为不同的数据链路层技术&#xff1b;由于二…

力扣--对链表进行插入排序--147

该题是不带哨兵位的&#xff01;&#xff01;&#xff01; 目录 该题是不带哨兵位的&#xff01;&#xff01;&#xff01; 首先先进行带哨兵位的代码展示&#xff1a; 但是就提论题&#xff0c;力扣上的这道题&#xff0c;没有明确说明附带哨兵位&#xff0c;我们一律按照…

11-SpringSecurity:Session共享,菜鸟驿站java面试题

pom依赖 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-data-redis org.springframework.session spring-session-data-redis org.projectlombok lombok …

1.java 安装

操作步骤 下载: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html1 通过Xftp将下载下来的jdk上传到指定虚拟机上传到/usr目录下 2 通过Xshell连接到虚拟机&#xff0c;执行如下命令&#xff0c;解压文件&#xff1a; $ tar zxvf jdk-8u…