Docker在Windows下的安装及使用

打印 上一主题 下一主题

主题 656|帖子 656|积分 1968

一、前言

在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 版本信息:
  1. wsl -l
  2. wsl -v
  3. 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格式
  1. "registry-mirrors": [
  2.     "https://mirror.ccs.tencentyun.com",
  3.     "http://hub-mirror.c.163.com",
  4.     "https://registry.docker-cn.com"
  5.   ]
复制代码

三、使用Docker

Docker常用命令:https://blog.csdn.net/mst_sun/article/details/135133934
3.1 安装redis

先有镜像,后有容器。
第一步:拉取镜像
  1. # 以redis:7.0.14版本为例,在cmd中运行以下命令
  2. 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 中换行输入符是 ^
  1. docker run --name redis-dev -d ^
  2. --restart unless-stopped ^
  3. -e TZ=Asia/Shanghai ^
  4. -p 16379:6379 ^
  5. -v D:\Develop\Docker\Data\redis\redis.conf:/etc/redis/redis.conf ^
  6. -v D:\Develop\Docker\Data\redis\data:/data ^
  7. redis:7.0.14 ^
  8. redis-server /etc/redis/redis.conf ^
  9. --requirepass 123456 ^
  10. --appendonly yes
复制代码
参数解释:
  1. --name redis-dev     #给容器命名为redis-dev
  2. -d                   #后台运行容器
  3. --restart unless-stopped        #设置重启策略为在容器手动停止时以外的任何原因退出时重启
  4. -e TZ=Asia/Shanghai  #设置容器的时区
  5. -p 16379:6379        #将容器的6379端口映射到主机的16379端口
  6. -v D:\Develop\Docker\Data\redis\redis.conf:/etc/redis/redis.conf #将配置文件映射到容器
  7. -v D:\Develop\Docker\Data\redis\data:/data                       #将数据目录映射到容器
  8. redis:7.0.14         #使用版本为7.0.14的redis镜像
  9. redis-server /etc/redis/redis.conf     #使用容器内的redis配置启动服务
  10. --requirepass                 #连接密码
  11. --appendonly yes     #开启持久化
复制代码
第四步:验证



3.2 安装mysql

第一步、拉取镜像
  1. # 以mysql8.0.35版本为例
  2. docker pull mysql:8.0.35
复制代码
第二步、创建docker网络
  1. # 创建docker网络,便于容器可以通过网络与宿主机和其他容器通信
  2. docker network create docker-network
复制代码
第三步、创建挂载目次

第四步:创建并运行容器
  1. docker run --name mysql-dev -d ^
  2. --restart unless-stopped ^
  3. -e TZ=Asia/Shanghai ^
  4. --network docker-network ^
  5. -v D:\Develop\Docker\Data\mysql\log:/var/log/mysql ^
  6. -v D:\Develop\Docker\Data\mysql\data:/var/lib/mysql ^
  7. -v D:\Develop\Docker\Data\mysql\conf:/etc/mysql/conf.d ^
  8. -p 13306:3306 ^
  9. -e MYSQL_ROOT_PASSWORD=123456 ^
  10. mysql:8.0.35
复制代码
参数解释:
  1. --name mysql-dev                #指定容器名称
  2. -d                                                #后台运行容器
  3. --restart unless-stopped        #设置重启策略为在容器手动停止时以外的任何原因退出时重启
  4. -e TZ=Asia/Shanghai                #设置容器时区
  5. --network docker-network        #将容器连接到自定义的 Docker网络中
  6. -v                                                #目录挂载
  7. -p 13306:3306                        #将容器的 3306端口映射到宿主机的 13306端口
  8. -e MYSQL_ROOT_PASSWORD=123456        # mysql root用户的密码
  9. mysql:8.0.35                        #使用的mysql镜像版本
复制代码


如果客户端连接时提示:Public Key Retrieval is not allowed,可以尝试将驱动参数allowPublicKeyRetrieval修改为true:

3.3 安装nacos

第一步、拉取镜像
  1. # 以v2.2.3版本为例
  2. docker pull nacos/nacos-server:v2.2.3
复制代码
第二步、拷贝nacos目次及文件到宿主机
1)挂载目次前,先启动一次docker
  1. # 只要启动后是running状态就可以
  2. docker run --name nacos-dev -d ^
  3. -e MODE=standalone ^
  4. -p 18848:8848 ^
  5. -p 19848:9848 ^
  6. -p 19849:9849 ^
  7. nacos/nacos-server:v2.2.3
复制代码
2)拷贝nacos目次到宿主机
  1. docker cp nacos-dev:/home/nacos/bin D:\Develop\Docker\Data\nacos
  2. docker cp nacos-dev:/home/nacos/conf D:\Develop\Docker\Data\nacos
  3. docker cp nacos-dev:/home/nacos/data D:\Develop\Docker\Data\nacos
  4. docker cp nacos-dev:/home/nacos/logs D:\Develop\Docker\Data\nacos
复制代码
3)停止并删除容器
  1. docker stop nacos-dev && docker rm nacos-dev
复制代码
第三步:在mysql中实行nacos sql脚本
1)创建数据库:nacos(名称自定义)
2)实行sql脚本(mysql-schema.sql):

实行后会创建如下10几张表:

第四步:创建并以挂载目次的方式启动容器
  1. docker run --name nacos-dev -d ^
  2. --restart unless-stopped ^
  3. --network docker-network ^
  4. --privileged=true ^
  5. -p 18848:8848 ^
  6. -p 19848:9848 ^
  7. -p 19849:9849 ^
  8. -e PREFER_HOST_MODE=hostname ^
  9. -e MODE=standalone ^
  10. -e SPRING_DATASOURCE_PLATFORM=mysql ^
  11. -e MYSQL_SERVICE_HOST=mysql-dev ^
  12. -e MYSQL_SERVICE_PORT=3306 ^
  13. -e MYSQL_SERVICE_DB_NAME=nacos ^
  14. -e MYSQL_SERVICE_USER=root ^
  15. -e MYSQL_SERVICE_PASSWORD=123456 ^
  16. -e JVM_XMS=512m ^
  17. -e JVM_XMX=512m ^
  18. -e JVM_XMN=256m ^
  19. -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" ^
  20. -v D:\Develop\Docker\Data\nacos\bin:/home/nacos/bin ^
  21. -v D:\Develop\Docker\Data\nacos\conf:/home/nacos/conf ^
  22. -v D:\Develop\Docker\Data\nacos\data:/home/nacos/data ^
  23. -v D:\Develop\Docker\Data\nacos\logs:/home/nacos/logs ^
  24. nacos/nacos-server:v2.2.3
复制代码
参数解释
  1. --name nacos-dev                # 容器名称
  2. -d                                                # 后台运行容器
  3. --restart unless-stopped        #设置重启策略为在容器手动停止时以外的任何原因退出时重启
  4. --network docker-network        # 将容器连接到自定义的 Docker网络中
  5. --privileged=true                # 提供一些额外的权限给容器
  6. -p 18848:8848                        # 将容器的 8848端口映射到宿主机的 18848端口
  7. -p 19848:9848                        # 将容器的 9848端口映射到宿主机的 19848端口
  8. -p 19849:9849                        # 将容器的 9849端口映射到宿主机的 19849端口
  9. -e PREFER_HOST_MODE=hostname                # 设置 Nacos使用主机名模式
  10. -e MODE=standalone                # 设置 Nacos运行模式为单机模式
  11. -e SPRING_DATASOURCE_PLATFORM=mysql                # 设置数据源平台为 MySQL
  12. -e MYSQL_SERVICE_HOST=mysql-dev                        # Mysql容器名
  13. -e MYSQL_SERVICE_PORT=3306                                # Mysql容器端口
  14. -e MYSQL_SERVICE_DB_NAME=nacos                        # nacos数据库
  15. -e MYSQL_SERVICE_USER=root                                # 连接Mysql用户
  16. -e MYSQL_SERVICE_PASSWORD=123456                # 连接Mysql密码
  17. -e JVM_XMS=512m                        # 设置 Java 虚拟机的初始堆大小为 512MB
  18. -e JVM_XMX=512m                        # 设置 Java 虚拟机的最大堆大小为 512MB
  19. -e JVM_XMN=256m                        # 设置 Java 虚拟机的新生代堆大小为 256MB
  20. -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" # 设置MySQL连接的参数
  21. -v D:\Develop\Docker\Data\nacos\bin:/home/nacos/bin        # 挂载宿主机的 Nacos bin 目录到容器
  22. -v D:\Develop\Docker\Data\nacos\conf:/home/nacos/conf        # 挂载宿主机的 Nacos 配置目录到容器
  23. -v D:\Develop\Docker\Data\nacos\data:/home/nacos/data        # 挂载宿主机的 Nacos 数据目录到容器
  24. -v D:\Develop\Docker\Data\nacos\logs:/home/nacos/logs        # 挂载宿主机的 Nacos 日志目录到容器
  25. nacos/nacos-server:v2.2.3  # 使用的 Nacos镜像版本
复制代码
第五步:验证
1)在浏览器中访问:http://localhost:18848/nacos
默认用户:nacos,暗码:nacos

2)创建命名空间:

命名空间生存到了mysql,说明本次安装乐成了。

3.4 安装minio

第一步、拉取镜像
  1. docker pull minio/minio
复制代码
第二步、创建挂载目次

第三步:创建并运行容器
  1. docker run --name minio -d ^
  2. -e TZ=Asia/Shanghai ^
  3. -e "MINIO_ACCESS_KEY=minioadmin" ^
  4. -e "MINIO_SECRET_KEY=minioadmin" ^
  5. -p 9000:9000 ^
  6. -p 9001:9001 ^
  7. -v D:\Develop\Docker\Data\minio\data:/data ^
  8. -v D:\Develop\Docker\Data\minio\config:/root/.minio ^
  9. minio/minio:latest server /data --console-address ":9001"
复制代码
第四步:验证
访问 http://127.0.0.1:9000 或 http://127.0.0.1:9001
用户名、暗码:minioadmin


3.5 安装xxl-job

官方文档:快速入门
第一步、拉取镜像
  1. docker pull xuxueli/xxl-job-admin:2.4.0
复制代码
第二步、实行初始化脚本
下载地点:tables_xxl_job.sql
第三步、创建挂载目次

配置文件下载:application.properties
修改 mysql 连接信息:
  1. spring.datasource.url=jdbc:mysql://[IP 或 容器名]:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
  2. spring.datasource.username=root
  3. spring.datasource.password=123456
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
复制代码
第四步:创建并运行容器
  1. docker run --name xxl-job -d ^
  2. --network docker-network ^
  3. -e TZ=Asia/Shanghai ^
  4. -e PARAMS="--spring.config.location=/application.properties" ^
  5. -p 8081:8080 ^
  6. -v D:\Develop\Docker\Data\xxl-job\logs:/data/applogs ^
  7. -v D:\Develop\Docker\Data\xxl-job\conf\application.properties:/application.properties ^
  8. xuxueli/xxl-job-admin:2.4.0
复制代码
第五步:验证
http://localhost:8081/xxl-job-admin/
用户名:admin
暗码:123456

新增一个任务:

查看数据库:

四、使用 docker-compose 管理容器

4.1 创建 docker-compose.yml 文件

  1. # 定义compose语义版本
  2. version: '3.8'
  3. # 定义服务
  4. services:
  5.   redis:
  6.     image: redis:7.0.14
  7.     container_name: redis
  8.     # 重启策略:在容器手动停止时以外的任何原因退出时重启
  9.     restart: unless-stopped
  10.     # 启动redis服务;设置密码为123456;开启redis持久化
  11.     command: redis-server /etc/redis/redis.conf --requirepass 123456 --appendonly yes
  12.     # 设置容器时区、语言环境
  13.     environment:
  14.       TZ: Asia/Shanghai
  15.       LANG: en_US.UTF-8
  16.     volumes:
  17.       # 需要下载相应版本的redis.conf文件,下载地址:https://github.com/redis/redis/tags
  18.       - "D:\\Develop\\Docker\\Data\\redis\\redis.conf:/etc/redis/redis.conf"
  19.       # 挂载持久化数据目录
  20.       - "D:\\Develop\\Docker\\Data\\redis\\data:/data"
  21.     ports:
  22.       # 端口映射
  23.       - "6379:6379"
  24.     networks:
  25.       - docker-network
  26.       
  27.   mysql:
  28.     image: mysql:8.0.35
  29.     container_name: mysql
  30.     restart: unless-stopped
  31.     environment:
  32.       TZ: Asia/Shanghai
  33.       MYSQL_ROOT_PASSWORD: 123456
  34.       MYSQL_ROOT_AUTH_PLUGIN: caching_sha2_password
  35.       LANG: en_US.UTF-8
  36.     ports:
  37.       - "3306:3306"
  38.     # 设置MySQL服务器的最大连接数、指定MySQL服务器的默认字符集、指定MySQL服务器的默认排序规则
  39.     command:
  40.       --max_connections=1000
  41.       --character-set-server=utf8mb4
  42.       --collation-server=utf8mb4_general_ci
  43.     volumes:
  44.       - "D:\\Develop\\Docker\\Data\\mysql\\log:/var/log/mysql"
  45.       - "D:\\Develop\\Docker\\Data\\mysql\\data:/var/lib/mysql"
  46.       - "D:\\Develop\\Docker\\Data\\mysql\\conf:/etc/mysql/conf.d"
  47.     networks:
  48.       - docker-network
  49.     healthcheck:
  50.       test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
  51.       retries: 10
  52.       
  53.   nacos:
  54.     image: nacos/nacos-server:v2.2.3
  55.     container_name: nacos
  56.     restart: unless-stopped
  57.     volumes:
  58.       - "D:\\Develop\\Docker\\Data\\nacos\\bin:/home/nacos/bin"
  59.       - "D:\\Develop\\Docker\\Data\\nacos\\conf:/home/nacos/conf"
  60.       - "D:\\Develop\\Docker\\Data\\nacos\\data:/home/nacos/data"
  61.       - "D:\\Develop\\Docker\\Data\\nacos\\logs:/home/nacos/logs"
  62.     environment:
  63.       - PREFER_HOST_MODE=hostname
  64.       - MODE=standalone
  65.       - SPRING_DATASOURCE_PLATFORM=mysql
  66.       # 修改mysql连接信息
  67.       - MYSQL_SERVICE_HOST=mysql    # 注意:因为是容器间通信,这里要设置mysql容器名,`127.0.0.1`或`localhost`不好使
  68.       - MYSQL_SERVICE_DB_NAME=nacos
  69.       - MYSQL_SERVICE_PORT=3306
  70.       - MYSQL_SERVICE_USER=root
  71.       - MYSQL_SERVICE_PASSWORD=123456
  72.       # 修改JVM参数
  73.       - JVM_XMS=256m   #-Xms  default: 1g
  74.       - JVM_XMX=256m   #-Xmx  default: 1g
  75.       - JVM_XMN=128m   #-Xmn  default: 512m
  76.       - JVM_MS=32m     #-XX:MetaspaceSize  default: 128m
  77.       - JVM_MMS=64m    #-XX:MaxMetaspaceSize  default: 320m
  78.       - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
  79.     ports:
  80.       - "8848:8848"
  81.       - "9848:9848"
  82.       - "9849:9849"
  83.     networks:
  84.       - docker-network
  85.     healthcheck:
  86.       test: ["CMD-SHELL", "echo 'ruok' | curl -s telnet://localhost:8848 || exit 1"]
  87.       retries: 10
  88.     depends_on:
  89.       mysql:
  90.         condition: service_healthy
  91.   minio:
  92.     image: minio/minio:latest
  93.     container_name: minio
  94.     restart: no
  95.     command: server /data --console-address ":9001"
  96.     environment:
  97.       TZ: Asia/Shanghai
  98.       LANG: en_US.UTF-8
  99.     volumes:
  100.       - "D:\\Develop\\Docker\\Data\\minio\\data:/data"
  101.       - "D:\\Develop\\Docker\\Data\\minio\\config:/root/.minio"
  102.     ports:
  103.       - "9000:9000"
  104.       - "9001:9001"
  105.     networks:
  106.       - docker-network
  107.   xxl-job:
  108.     image: xuxueli/xxl-job-admin:2.4.0
  109.     container_name: xxl-job
  110.     restart: no
  111.     environment:
  112.       TZ: Asia/Shanghai
  113.       LANG: en_US.UTF-8
  114.       PARAMS: '--spring.config.location=/application.properties'
  115.     volumes:
  116.       - "D:\\Develop\\Docker\\Data\\xxl-job\\logs:/data/applogs"
  117.       - "D:\\Develop\\Docker\\Data\\xxl-job\\conf\\application.properties:/application.properties"
  118.     ports:
  119.       - "8081:8080"
  120.     depends_on:
  121.       - mysql
  122.     networks:
  123.       - docker-network
  124. networks:
  125.   docker-network:
  126.     external: true
复制代码
4.2 启动服务

  1. # 进入 docker-compose.yml 所在目录,执行以下命令
  2. docker-compose up -d
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户国营

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表