一、重要事项放最前,如无需则跳过:

1.更改Docker安装目录

背景需求

Windows版本(Windows 10 wsl 2)docker 默认程序安装到c盘,数据存放于 C:\Users\当前用户名\AppData\Local\Docker\wsl\data\ext4.vhdx 这样会导致docker使用量上去C盘的空间越来越大。为了解决这个问题我们一般习惯性将数据部分移动到其他盘。

1.1. 通过windows系统的界面操作停止

通过windows系统的界面操作停止:

打开cmd窗口。查看停止情况:

C:\Users\xxx>wsl --list -vNAME                   STATE           VERSION
* docker-desktop         Running         2docker-desktop-data    Running         2C:\Users\xxx>wsl --list -vNAME                   STATE           VERSION
* docker-desktop         Stopped         2docker-desktop-data    Stopped         2

1.2. 备份导出目前已有的数据

C:\Users\xxx> mkdir D:\docker\wsl\data\
C:\Users\xxx> wsl --export docker-desktop-data "D:\docker\wsl\data\docker-desktop-data.tar"

1.3. 删除原有数据

C:\Users\xxx> wsl --unregister docker-desktop-data
正在注销...
C:\Users\xxx> wsl --list -vNAME              STATE           VERSION
* docker-desktop    Stopped         2

1.4. 导入数据到新盘

C:\Users\xxx> wsl --import docker-desktop-data "D:\docker\wsl\data" "D:\docker\wsl\data\docker-desktop-data.tar" --version 2
C:\Users\xxx> wsl --list -vNAME                   STATE           VERSION
* docker-desktop         Stopped         2docker-desktop-data    Stopped         2

导入备份的文件完成后在虚拟磁盘路径( D:\docker\wsl\data)目录下会生成一个 ext4.vhdx 文件 ,而备份的文件D:\docker\wsl\data\docker-desktop-data.tar可根据情况删除

1.5. 修改Docker默认安装路径

通过创建链接的方式,管理员身份打开cmd命令行

mklink /j "C:\Program Files\Docker" "D:\docker"

1.6. 启动Docker

点击docker运行程序就行了

2.无法绑定端口情况

Docker-for-Windows 和 Hyper-V 排除但不使用重要端口范围

据查找网上资料,Hyper-V 会为自己动态保留一个端口范围,处于端口范围的则无法使用。

2.1. 首先,检查是否保留了所需的端口:

netsh interface ipv4 show excludedportrange protocol=tcp

2.2. 如果您的端口在某个范围内,请停止 winnat:

net stop winnat

2.3. 禁止对所需端口进行动态保留(例如,7788,如原始问题中所述):

netsh int ipv4 add excludedportrange protocol=tcp startport=7788 numberofports=1

2.4. 重启winnat:

net start winnat

3.创建容器时注意/usr/sbin/init和/bin/bash(默认)的区别

创建容器时指定:--privileged=true 得使用 /usr/sbin/init

比如创建centos容器时指定--privileged=true 和/bin/bash(默认),

使用命令systemctl xxx xxx来管理服务,就有问题,提示如下

Failed to get D-Bus connection: Operation not permitted

因为dbus-daemon没能启动。其实systemctl并不是不可以使用。将你的CMD或者entrypoint设置

为/usr/sbin/init即可。这样就会自动将dbus等服务启动起来,然后就能正常使用systemctl了。

二、下面进入正题:

1.创建自定义网桥,为后面创建容器设置固定IP准备

1.1 创建网桥

docker network create --subnet=172.172.0.0/24 lan

备注:

1.2 删除网桥

docker network rm lan

2.创建Centos容器

2.1 拉取指定版本的 CentOS 镜像,这里我们安装指定版本为例(centos7):

docker pull centos:7

2.2 运行容器,并且可以通过 exec 命令进入 CentOS 容器

docker run -itd -p 20:20 -p 21:21 -p 22:22 -p 880:80 -p 8443:443 -p 888:888 -p 7777:7777 -p 7788:7788 -p 9682:9682 --privileged=true --net lan --ip 172.172.0.10 -v /d:/home/vd --name centos7_d0 centos:centos7 /usr/sbin/init

-i=false: 保持输入流开放即使没有附加输入流
-t=false: 分配一个伪造的终端输入
-d=false: 分离模式,在后台运行容器,并且打印出容器ID
-p=[]: 匹配镜像内的网络端口号
--privileged=true:给容器开启特权
--net=bridge: 指定使用某bridge
--ip=172.x.x.x: 指定ip地址
--restart=always:设置docker重启时自动跟随重启
-e=[]:设置环境变量
-v /宿主机目录:/容器目录,用于设置挂载目录
--name xxx:为容器指定一个名称

2.3 开启ssh远程

参考 Docker Centos添加SSH服务 - 简书

3、创建mysql容器

3.1 拉取指定版本的 MySql 镜像,这里我们安装指定版本为例(5.7):

docker pull mysql:5.7

3.2 运行容器

docker run -itd -p 3306:3306 --privileged=true --net lan --ip 172.172.0.11 --restart=always -e MYSQL_ROOT_PASSWORD=123456  -v /d/docker/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /d/docker/mysql/data:/var/lib/mysql   -v /d/docker/mysql/log:/var/log/mysql --name mysql mysql:5.7

3.3 如参数MYSQL_ROOT_PASSWORD=123456不生效

可自行修改root密码:

SET PASSWORD FOR 'root' = PASSWORD('123456');
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('123456');

问题:

mysql启动时报错如下,这时你的配置是没有生效的

mysql: [Warning] World-writable config file '/etc/mysql/mysql.conf.d/mysqld.cnf' is ignored.

解决:

这时候需要将mysql.conf.d文件通过chmod进行权限降级

sudo chmod 644 mysql.conf.d

然后重启容器

4、创建redis容器

4.1 拉取redis最新镜像

docker pull redis

4.2 运行容器

docker run -itd -p 6379:6379 --privileged=true --net lan --ip 172.172.0.12 -v /d/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /d/docker/redis/data:/data --name redis redis:latest redis-server /etc/redis/redis.conf --appendonly yes

5、创建mongo容器

5.1 拉取mongo最新镜像

docker pull mongo:latest

5.2 运行容器

docker run --name mongo -p 27017:27017 --privileged=true --net lan --ip 172.172.0.13 -v /d/docker/mongo:/data/db -d mongo

6、创建memcached容器

6.1 拉取memcached最新镜像

docker pull memcached

6.2 运行容器

docker run -p 11211:11211 --privileged=true --net lan --ip 172.172.0.14 --name memcached memcached

三、解决docker无法使用table键补齐命令

在docker容器中安装bash-completion

apt install bash-completion
或
yum install bash-completion

source一下

source /usr/share/bash-completion/bash_completion

四、同步docker中的容器时间和宿主机相同

1、在容器中修改下/etc/localtime文件的名称,避免冲突

mv /etc/localtime /etc/localtime.bak

2、修改时区为上海

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3、然后查看是否一致时间

# date
Wed Feb  9 07:36:36 UTC 2022
# mv /etc/localtime /etc/localtime.bak
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# date
Wed Feb  9 15:36:50 CST 2022

Win10下使用Docker创建调试环境相关推荐

  1. Win10下配置Docker

    Win10下配置Docker 前言: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器 ...

  2. apt ubuntu 指定ipv4_macOS 下使用 Docker 搭建 ubuntu 环境

    学习网络开发过程中不想"污染"macOS,考虑到之后部署网络应用主要是与linux打交道,所以安装了 ubuntu 虚拟机以满足短期的知识学习需求.十里安装了 ubuntu 虚拟机 ...

  3. docker ubuntu镜像_macOS 下使用 Docker 搭建 ubuntu 环境

    学习网络开发过程中不想"污染"macOS,考虑到之后部署网络应用主要是与linux打交道,所以安装了 ubuntu 虚拟机以满足短期的知识学习需求.十里安装了 ubuntu 虚拟机 ...

  4. virtualbox php mac,详解mac下通过docker搭建LEMP环境

    在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...

  5. win10下 VS2019 C#创建web项目并发布部署在iis

    win10下 VS2019 C#创建web项目并发布部署在iis 安装iis: 安装完成后在浏览器输入:http://localhost/ 说明安装成功 创建web项目: 添加新窗体 编写内容 设置发 ...

  6. win10下安装BC3.1精简环境

    win10下安装BC3.1精简环境学习uCOS-II 为了学习UCOS-II,参考任哲老师的嵌入式实时操作系统uCOS-II原理及应用,但是在WIN10下安装uCOS-II时出现了版本不兼容的问题,于 ...

  7. Win10下安装docker并拉取redis镜像启动

    闲来无事学习新知识,准备学习一下当下比较热的docker,本篇主要介绍在win10系统下安装docker并拉取redis镜像进行启动,win10系统需要是专业版的,如果是家庭版则需要下载docker- ...

  8. win10下vscode配置c语言环境

    1.C编译器下载 C编译器(MinGW-W64 GCC)的下载:点击官方下载 或者点击网盘下载提取码为karj 下载完成后解压,将解压后的文件夹放到合适的位置,点开其bin子文件夹,复制路径. 2.w ...

  9. jlink怎么调试linux程序_纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)

    一直想摆脱windows环境,在纯linux下进行arm裸机开发,但是由于一直不知道JLink如何在linux下运行和配置,一直无法进行下去. 以前都是windows+AXD调试.包括本人用的FL24 ...

最新文章

  1. Dubbo 同步、异步调用的几种方式
  2. html5知识总结,HTML5初级知识总结
  3. 用Hibernate Tools生成Hibernate Mapping映射文件
  4. hdu2152(普通母函数)
  5. 一个哈工大计算机系的在读博士,勤思考爱分享的超级大佬!
  6. 【报告分享】中国数据智能应用趋势报告:解码数据中台最佳实践,企业数字化转型新引擎.pdf(附下载链接)...
  7. java获取当前执行文件的路径
  8. Jbpm工作流表补数记录
  9. Mac实用软件及功能总结
  10. H3C 无线控制器+瘦ap 配置
  11. ddr5内存上市时间_DDR5内存年底开始量产,2022年成为主流!
  12. 社交网络的数据挖掘与分析,什么是社交网络分析
  13. web前端之跳一跳网页版小游戏
  14. oracle现金流量表逻辑,财务学习:现金流量表内在逻辑研究
  15. 【蓝牙系列】蓝牙5.4到底更新了什么(2)
  16. 基于java的简单英雄联盟胜率计算
  17. 算法交易系统市场现状-
  18. 使用计算机设备管理办法,计算机设备管理实施办法
  19. 【HCIA-Datacom V1.0培训教材】数据通信网络基础
  20. android合并 工具下载,m3u8合并工具安卓版

热门文章

  1. BiFinance币慧交易所全球首发GES,上线一周涨幅已达12000%
  2. ubuntumysql卸载
  3. Windows线程池使用方法
  4. 如何解决计算机系统错误的是,电脑开机disk错误进不了系统怎么解决
  5. 计算机视觉系列(六)——图像增强
  6. python学习——设置pandas plot为副坐标轴
  7. cent os 7 mysql_cent os + MySQL Cluster 7.3.7 集群配置
  8. adidas最软的鞋_十大脚感王者鞋款推荐!最软弹、最便宜的都有!还有你没见过的...
  9. Python 项目打包(exe文件运行)
  10. 字节跳动官方回应锤子科技员工改签,锤子二号员工入职OPPO...