Docker在Windows下的安装及使用

本文详细介绍了如何在Windows环境下安装Docker,包括使用WSL2和Hyper-V后端的区别,以及如何配置DockerDesktop,以及通过docker-compose管理容器,如安装和配置Redis、MySQL、Nacos、Minio和Xxl-job。

一、前言

在Windows上安装Docker时,可以选择使用不同的后端。
其中两个常见的选择是:WSL 2(Windows Subsystem for Linux 2)和 Hyper-V 后端。此外,还可以选择使用Windows容器。
三者的区别了解即可,推荐用WSL 2,因为虚拟机太重了…懂的都懂。

1. WSL 2 后端:

  • 使用WSL 2后端时,Docker将与WSL 2集成,利用WSL 2提供的Linux内核。这使得Docker容器在Windows上运行时,实际上是在WSL 2中运行的,享受到了与Linux系统更为接近的环境。WSL 2能够提供更好的性能和与Linux相似的开发体验。
  • 优点:更轻量,性能较好,支持在Windows和Linux之间无缝切换。
  • 缺点:可能不支持所有Windows特性,对于某些特殊应用可能存在兼容性问题。

2. Hyper-V 后端:

  • 使用Hyper-V后端时,Docker容器将在Hyper-V虚拟机中运行,与主机Windows系统隔离。这种方式比较传统,类似于在虚拟机中运行Docker。
  • 优点:更好的隔离性,适用于需要强大隔离的场景。
  • 缺点:相对于WSL 2,可能稍显重量级,性能稍逊一些。

3. Windows容器:

  • Windows容器是一种与Hyper-V相似的隔离技术,允许在Windows上运行基于Windows的Docker容器。与Linux容器相比,Windows容器更适用于运行基于Windows的应用程序。
  • 优点:对于Windows应用程序的兼容性更好。
  • 缺点:相较于WSL 2,可能性能较差,并且一些Linux特性可能不支持。

Docker提供了GUI前端 Docker Desktop,下面会介绍。
本人电脑是Win10专业版,默认安装完是WSL 2(Windows Subsystem for Linux)。

在这里插入图片描述

在 cmd 中查看 wsl 版本信息:

wsl -l

wsl -v

wsl -l -v

二、安装Docker

2.1 安装 docker desktop

官方下载地址:https://docs.docker.com/desktop/install/windows-install/
在这里插入图片描述
下载完成后进行安装,只能装在C盘,不支持更改安装目录。

可以在cmd中执行:docker version来验证是否安装成功。

2.2 修改 docker desktop 配置

1)开启WSL 2运行Docker,正常是默认开启的
在这里插入图片描述

2)修改资源存储目录:
在这里插入图片描述

3)配置国内镜像源,可以添加多个,json格式

"registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "http://hub-mirror.c.163.com",
    "https://registry.docker-cn.com"
  ]

在这里插入图片描述

三、使用Docker

Docker常用命令:https://blog.youkuaiyun.com/mst_sun/article/details/135133934

3.1 安装redis

先有镜像,后有容器。

第一步:拉取镜像

# 以redis:7.0.14版本为例,在cmd中运行以下命令
docker pull redis:7.0.14

第二步:创建挂载目录

在这里插入图片描述
1)创建挂载目录data
2)下载相应版本的redis.conf 文件:https://github.com/redis/redis/tags
3)修改 redis.conf 文件中的参数 bind 为 0.0.0.0

第三步:创建并运行容器

Linux 中换行输入符是 \
Windows cmd 中换行输入符是 ^

docker run --name redis-dev -d ^
--restart unless-stopped ^
-e TZ=Asia/Shanghai ^
-p 16379:6379 ^
-v D:\Develop\Docker\Data\redis\redis.conf:/etc/redis/redis.conf ^
-v D:\Develop\Docker\Data\redis\data:/data ^
redis:7.0.14 ^
redis-server /etc/redis/redis.conf ^
--requirepass 123456 ^
--appendonly yes

参数解释:

--name redis-dev     #给容器命名为redis-dev
-d                   #后台运行容器
--restart unless-stopped	#设置重启策略为在容器手动停止时以外的任何原因退出时重启
-e TZ=Asia/Shanghai  #设置容器的时区
-p 16379:6379        #将容器的6379端口映射到主机的16379端口
-v D:\Develop\Docker\Data\redis\redis.conf:/etc/redis/redis.conf #将配置文件映射到容器
-v D:\Develop\Docker\Data\redis\data:/data                       #将数据目录映射到容器
redis:7.0.14         #使用版本为7.0.14的redis镜像
redis-server /etc/redis/redis.conf     #使用容器内的redis配置启动服务
--requirepass		 #连接密码
--appendonly yes     #开启持久化

第四步:验证
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 安装mysql

第一步、拉取镜像

# 以mysql8.0.35版本为例
docker pull mysql:8.0.35

第二步、创建docker网络

# 创建docker网络,便于容器可以通过网络与宿主机和其他容器通信
docker network create docker-network

第三步、创建挂载目录
在这里插入图片描述
第四步:创建并运行容器

docker run --name mysql-dev -d ^
--restart unless-stopped ^
-e TZ=Asia/Shanghai ^
--network docker-network ^
-v D:\Develop\Docker\Data\mysql\log:/var/log/mysql ^
-v D:\Develop\Docker\Data\mysql\data:/var/lib/mysql ^
-v D:\Develop\Docker\Data\mysql\conf:/etc/mysql/conf.d ^
-p 13306:3306 ^
-e MYSQL_ROOT_PASSWORD=123456 ^
mysql:8.0.35

参数解释:

--name mysql-dev		#指定容器名称
-d						#后台运行容器
--restart unless-stopped	#设置重启策略为在容器手动停止时以外的任何原因退出时重启
-e TZ=Asia/Shanghai		#设置容器时区
--network docker-network	#将容器连接到自定义的 Docker网络中
-v						#目录挂载
-p 13306:3306			#将容器的 3306端口映射到宿主机的 13306端口
-e MYSQL_ROOT_PASSWORD=123456	# mysql root用户的密码
mysql:8.0.35			#使用的mysql镜像版本

在这里插入图片描述

在这里插入图片描述

如果客户端连接时提示:Public Key Retrieval is not allowed,可以尝试将驱动参数allowPublicKeyRetrieval修改为true:
在这里插入图片描述

3.3 安装nacos

第一步、拉取镜像

# 以v2.2.3版本为例
docker pull nacos/nacos-server:v2.2.3

第二步、拷贝nacos目录及文件到宿主机

1)挂载目录前,先启动一次docker

# 只要启动后是running状态就可以
docker run --name nacos-dev -d ^
-e MODE=standalone ^
-p 18848:8848 ^
-p 19848:9848 ^
-p 19849:9849 ^
nacos/nacos-server:v2.2.3

2)拷贝nacos目录到宿主机

docker cp nacos-dev:/home/nacos/bin D:\Develop\Docker\Data\nacos
docker cp nacos-dev:/home/nacos/conf D:\Develop\Docker\Data\nacos
docker cp nacos-dev:/home/nacos/data D:\Develop\Docker\Data\nacos
docker cp nacos-dev:/home/nacos/logs D:\Develop\Docker\Data\nacos

3)停止并删除容器

docker stop nacos-dev && docker rm nacos-dev

第三步:在mysql中执行nacos sql脚本

1)创建数据库:nacos(名称自定义)

2)执行sql脚本(mysql-schema.sql):
在这里插入图片描述
执行后会创建如下10几张表:
在这里插入图片描述

第四步:创建并以挂载目录的方式启动容器

docker run --name nacos-dev -d ^
--restart unless-stopped ^
--network docker-network ^
--privileged=true ^
-p 18848:8848 ^
-p 19848:9848 ^
-p 19849:9849 ^
-e PREFER_HOST_MODE=hostname ^
-e MODE=standalone ^
-e SPRING_DATASOURCE_PLATFORM=mysql ^
-e MYSQL_SERVICE_HOST=mysql-dev ^
-e MYSQL_SERVICE_PORT=3306 ^
-e MYSQL_SERVICE_DB_NAME=nacos ^
-e MYSQL_SERVICE_USER=root ^
-e MYSQL_SERVICE_PASSWORD=123456 ^
-e JVM_XMS=512m ^
-e JVM_XMX=512m ^
-e JVM_XMN=256m ^
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" ^
-v D:\Develop\Docker\Data\nacos\bin:/home/nacos/bin ^
-v D:\Develop\Docker\Data\nacos\conf:/home/nacos/conf ^
-v D:\Develop\Docker\Data\nacos\data:/home/nacos/data ^
-v D:\Develop\Docker\Data\nacos\logs:/home/nacos/logs ^
nacos/nacos-server:v2.2.3

参数解释

--name nacos-dev		# 容器名称
-d						# 后台运行容器
--restart unless-stopped	#设置重启策略为在容器手动停止时以外的任何原因退出时重启
--network docker-network	# 将容器连接到自定义的 Docker网络中
--privileged=true		# 提供一些额外的权限给容器
-p 18848:8848			# 将容器的 8848端口映射到宿主机的 18848端口
-p 19848:9848			# 将容器的 9848端口映射到宿主机的 19848端口
-p 19849:9849			# 将容器的 9849端口映射到宿主机的 19849端口
-e PREFER_HOST_MODE=hostname		# 设置 Nacos使用主机名模式
-e MODE=standalone		# 设置 Nacos运行模式为单机模式
-e SPRING_DATASOURCE_PLATFORM=mysql		# 设置数据源平台为 MySQL
-e MYSQL_SERVICE_HOST=mysql-dev			# Mysql容器名
-e MYSQL_SERVICE_PORT=3306				# Mysql容器端口
-e MYSQL_SERVICE_DB_NAME=nacos			# nacos数据库
-e MYSQL_SERVICE_USER=root				# 连接Mysql用户
-e MYSQL_SERVICE_PASSWORD=123456		# 连接Mysql密码
-e JVM_XMS=512m			# 设置 Java 虚拟机的初始堆大小为 512MB
-e JVM_XMX=512m			# 设置 Java 虚拟机的最大堆大小为 512MB
-e JVM_XMN=256m			# 设置 Java 虚拟机的新生代堆大小为 256MB
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" # 设置MySQL连接的参数
-v D:\Develop\Docker\Data\nacos\bin:/home/nacos/bin	# 挂载宿主机的 Nacos bin 目录到容器
-v D:\Develop\Docker\Data\nacos\conf:/home/nacos/conf	# 挂载宿主机的 Nacos 配置目录到容器
-v D:\Develop\Docker\Data\nacos\data:/home/nacos/data	# 挂载宿主机的 Nacos 数据目录到容器
-v D:\Develop\Docker\Data\nacos\logs:/home/nacos/logs	# 挂载宿主机的 Nacos 日志目录到容器
nacos/nacos-server:v2.2.3  # 使用的 Nacos镜像版本

第五步:验证

1)在浏览器中访问:http://localhost:18848/nacos
默认用户:nacos,密码:nacos
在这里插入图片描述

2)创建命名空间:
在这里插入图片描述

命名空间保存到了mysql,说明本次安装成功了。
在这里插入图片描述

3.4 安装minio

第一步、拉取镜像

docker pull minio/minio

第二步、创建挂载目录
在这里插入图片描述
第三步:创建并运行容器

docker run --name minio -d ^
-e TZ=Asia/Shanghai ^
-e "MINIO_ACCESS_KEY=minioadmin" ^
-e "MINIO_SECRET_KEY=minioadmin" ^
-p 9000:9000 ^
-p 9001:9001 ^
-v D:\Develop\Docker\Data\minio\data:/data ^
-v D:\Develop\Docker\Data\minio\config:/root/.minio ^
minio/minio:latest server /data --console-address ":9001"

第四步:验证
访问 http://127.0.0.1:9000http://127.0.0.1:9001
用户名、密码:minioadmin
在这里插入图片描述
在这里插入图片描述

3.5 安装xxl-job

官方文档:快速入门

第一步、拉取镜像

docker pull xuxueli/xxl-job-admin:2.4.0

第二步、执行初始化脚本
下载地址:tables_xxl_job.sql

第三步、创建挂载目录
在这里插入图片描述在这里插入图片描述
配置文件下载:application.properties

修改 mysql 连接信息:

spring.datasource.url=jdbc:mysql://[IP 或 容器名]:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

第四步:创建并运行容器

docker run --name xxl-job -d ^
--network docker-network ^
-e TZ=Asia/Shanghai ^
-e PARAMS="--spring.config.location=/application.properties" ^
-p 8081:8080 ^
-v D:\Develop\Docker\Data\xxl-job\logs:/data/applogs ^
-v D:\Develop\Docker\Data\xxl-job\conf\application.properties:/application.properties ^
xuxueli/xxl-job-admin:2.4.0

第五步:验证
http://localhost:8081/xxl-job-admin/
用户名:admin
密码:123456
在这里插入图片描述

新增一个任务:
在这里插入图片描述
查看数据库:
在这里插入图片描述

四、使用 docker-compose 管理容器

4.1 创建 docker-compose.yml 文件

# 定义compose语义版本
version: '3.8'
# 定义服务
services:
  redis:
    image: redis:7.0.14
    container_name: redis
    # 重启策略:在容器手动停止时以外的任何原因退出时重启
    restart: unless-stopped
    # 启动redis服务;设置密码为123456;开启redis持久化
    command: redis-server /etc/redis/redis.conf --requirepass 123456 --appendonly yes
    # 设置容器时区、语言环境
    environment:
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
    volumes:
      # 需要下载相应版本的redis.conf文件,下载地址:https://github.com/redis/redis/tags
      - "D:\\Develop\\Docker\\Data\\redis\\redis.conf:/etc/redis/redis.conf"
      # 挂载持久化数据目录
      - "D:\\Develop\\Docker\\Data\\redis\\data:/data"
    ports:
      # 端口映射
      - "6379:6379"
    networks:
      - docker-network
      
  mysql:
    image: mysql:8.0.35
    container_name: mysql
    restart: unless-stopped
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_ROOT_AUTH_PLUGIN: caching_sha2_password
      LANG: en_US.UTF-8
    ports:
      - "3306:3306"
    # 设置MySQL服务器的最大连接数、指定MySQL服务器的默认字符集、指定MySQL服务器的默认排序规则
    command:
      --max_connections=1000
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
    volumes:
      - "D:\\Develop\\Docker\\Data\\mysql\\log:/var/log/mysql"
      - "D:\\Develop\\Docker\\Data\\mysql\\data:/var/lib/mysql"
      - "D:\\Develop\\Docker\\Data\\mysql\\conf:/etc/mysql/conf.d"
    networks:
      - docker-network
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      retries: 10
      
  nacos:
    image: nacos/nacos-server:v2.2.3
    container_name: nacos
    restart: unless-stopped
    volumes:
      - "D:\\Develop\\Docker\\Data\\nacos\\bin:/home/nacos/bin"
      - "D:\\Develop\\Docker\\Data\\nacos\\conf:/home/nacos/conf"
      - "D:\\Develop\\Docker\\Data\\nacos\\data:/home/nacos/data"
      - "D:\\Develop\\Docker\\Data\\nacos\\logs:/home/nacos/logs"
    environment:
      - PREFER_HOST_MODE=hostname
      - MODE=standalone
      - SPRING_DATASOURCE_PLATFORM=mysql
      # 修改mysql连接信息
      - MYSQL_SERVICE_HOST=mysql    # 注意:因为是容器间通信,这里要设置mysql容器名,`127.0.0.1`或`localhost`不好使
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=123456
      # 修改JVM参数
      - JVM_XMS=256m   #-Xms  default: 1g
      - JVM_XMX=256m   #-Xmx  default: 1g
      - JVM_XMN=128m   #-Xmn  default: 512m
      - JVM_MS=32m     #-XX:MetaspaceSize  default: 128m
      - JVM_MMS=64m    #-XX:MaxMetaspaceSize  default: 320m
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
    networks:
      - docker-network
    healthcheck:
      test: ["CMD-SHELL", "echo 'ruok' | curl -s telnet://localhost:8848 || exit 1"]
      retries: 10
    depends_on:
      mysql:
        condition: service_healthy

  minio:
    image: minio/minio:latest
    container_name: minio
    restart: no
    command: server /data --console-address ":9001"
    environment:
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
    volumes:
      - "D:\\Develop\\Docker\\Data\\minio\\data:/data"
      - "D:\\Develop\\Docker\\Data\\minio\\config:/root/.minio"
    ports:
      - "9000:9000"
      - "9001:9001"
    networks:
      - docker-network

  xxl-job:
    image: xuxueli/xxl-job-admin:2.4.0
    container_name: xxl-job
    restart: no
    environment:
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      PARAMS: '--spring.config.location=/application.properties'
    volumes:
      - "D:\\Develop\\Docker\\Data\\xxl-job\\logs:/data/applogs"
      - "D:\\Develop\\Docker\\Data\\xxl-job\\conf\\application.properties:/application.properties"
    ports:
      - "8081:8080"
    depends_on:
      - mysql
    networks:
      - docker-network

networks:
  docker-network:
    external: true

4.2 启动服务

# 进入 docker-compose.yml 所在目录,执行以下命令
docker-compose up -d

在这里插入图片描述

<think>好的,我现在需要帮助用户了解如何在Windows系统上安装Docker。用户提到了Docker for Windows安装教程,并且系统级指令要求用中文回答,生成相关问题,同时引用提供的参考资料。首先,我需要整理出安装步骤,确保符合用户的需求和引用正确的来源。 首先,检查系统要求。根据引用[1]和[3],Docker for Windows需要64位的Windows 10 Pro、Enterprise或Education版本,或者Windows 11。家庭版可能需要额外步骤,如引用[3]提到的,可能需要使用Docker Desktop而不是Toolbox。用户可能需要确认他们的Windows版本,特别是如果使用的是家庭版的话。 接下来是启用Hyper-V和WSL 2。引用[4]提到安装前需要重启电脑,这可能涉及到启用这些功能后的重启。步骤包括在“启用或关闭Windows功能”中勾选Hyper-V和适用于Linux的Windows子系统,然后安装WSL 2内核更新。这部分需要详细说明,因为用户可能不熟悉这些步骤。 然后是下载Docker Desktop。引用[1]提供了官网下载链接,用户需要访问Docker官网下载安装程序。安装过程应该相对直接,但引用[4]强调安装前重启的重要性,以避免安装过程中的问题,比如Docker Engine启动失败。 安装完成后,启动Docker Desktop并检查状态。引用[4]提到可能出现Starting the Docker Engine一直转圈的情况,这时候可能需要进一步排查。验证安装可以通过命令行运行docker version和docker run hello-world,这些命令能确认Docker是否正确安装。 针对Windows 10家庭版用户,引用[3]指出可能需要额外步骤,比如安装WSL 2或使用替代方法。这部分需要单独说明,以帮助不同版本的用户解决问题。 最后,生成相关问题。根据用户提供的示例,问题应围绕常见安装问题、家庭版安装、Hyper-V和WSL 2的作用,以及验证安装的方法。需要确保每个问题都能引导用户进一步解决可能遇到的困难。 在整理过程中,要确保引用正确,比如引用[1]到[4]对应的内容,并在回答末尾添加引用标识。同时,按照系统指令,所有数学表达式用$...$格式,独立公式用$$...$$,但在这个问题中可能用不上数学公式,所以主要关注安装步骤和引用格式。 需要检查是否有遗漏的步骤,例如是否需要管理员权限、网络配置或者其他依赖项。根据提供的引用,主要步骤已经涵盖,但可能还需要提醒用户注意系统更新和驱动程序兼容性,尤其是在安装Hyper-V和WSL时。 总结下来,回答的结构应该是分步骤说明安装过程,引用对应的资料,末尾生成相关问题,确保用户能按部就班完成安装,并解决可能遇到的问题。</think>### 如何在Windows系统上安装Docker 以下是安装Docker for Windows的详细步骤: --- #### **1. 检查系统要求** - **操作系统**:Windows 10 64位专业版、企业版或教育版(Build 19041及以上),或Windows 11[^1][^3]。 - **内存**:建议4GB以上。 - **需要启用Hyper-V和WSL 2**(若为家庭版,需额外配置,见步骤5)[^3][^4]。 --- #### **2. 启用Hyper-V和WSL 2** - **步骤**: 1. 搜索并打开**“启用或关闭Windows功能”**。 2. 勾选 **Hyper-V** 和 **适用于Linux的Windows子系统**,点击确定后重启电脑。 3. 下载并安装 **[WSL 2 Linux内核更新包](https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package)**[^4]。 --- #### **3. 下载Docker Desktop** - 访问官网下载安装包: [Docker Desktop for Windows](https://store.docker.com/editions/community/docker-ce-desktop-windows)[^2]。 选择稳定版(Stable)并保存到本地。 --- #### **4. 安装并配置Docker** 1. 双击安装程序,按提示完成安装。 2. 安装完成后,启动Docker Desktop。 3. 在系统托盘图标右键选择**“Settings”**,确保以下配置: - **WSL 2 Integration**:启用与Linux子系统的集成[^4]。 - **Resources**:根据需求分配CPU和内存。 --- #### **5. 针对Windows 10家庭版的额外步骤** 若系统是Windows 10家庭版,需先安装WSL 2: 1. 以管理员身份运行PowerShell,输入: ```bash wsl --install ``` 2. 重启电脑后,继续执行步骤2-4。 --- #### **6. 验证安装** 1. 打开命令行工具(CMD或PowerShell),输入: ```bash docker version ``` 若显示客户端和服务端版本,则安装成功。 2. 运行测试容器: ```bash docker run hello-world ``` 若输出“Hello from Docker!”,说明运行正常。 --- ###
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qiye丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值