【Docker】Linux与Windows系统安装Docker+Docker上简单安装MySQL
一、Windows安装Docker
由于我在许多平台搜索Windows下安装Docker的方法,都提到了Win10家庭版无法直接安装Docker。个人电脑就是Win10家庭版,本着实践出真知的想法,个人在本机Win10家庭版实验结果为需要采用下述传统手动安装的办法;同时,在自己Vmware虚拟机上安装了Win10专业版进行演示命令行自动安装步骤。
1.1 更新Windows10系统
如果是Win11系统可以跳过更新步骤。Win10选择更新系统至1903或更高版本,如果版本低于1903,可使用 Windows 10 易升工具手动升级。下载 Windows 10 易升工具(https://www.microsoft.com/zh-cn/software-download/windows10)。查看本机Windows版本,可在CMD(命令提示符)窗口或者Powershell窗口输入:winver 进行查看。
1.2打开Powershell输入指令进行安装
1.2 WSL的两种安装方法
俩种方法选择其中一种即可,微软官方文档:Microsoft WSL文档,其中Win11和Win10的windows10版本2004(内部版本19041或更高)推荐方法二:命令行自动安装。
1.3.1方法一:传统手动安装
运行如下指令启用适用于Linux的Windwos子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
运行如下指令启用启用“虚拟机平台”可选功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
下载Linux内核更新包
下载前尽量重启一下电脑,下载地址https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4%E2%80%94download-the-linux-kernel-update-package。具体下载类型请看官方文档,根据自己电脑类型进行选择。
双击wsl_update_x64.msl文件运行即可。
将WSL2设置为默认版本
打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
下载/安装 Linux 分发版
打开Windows系统自带的Microsoft Store。如果出现无法加载页面等情况,参考Microsoft Store 无法加载页面。应该是不需要用到科学上网。
搜索栏输入Ubuntu或者直接点击下方链接进行加载
- Ubuntu 18.04 LTS
- Ubuntu 20.04 LTS
- Ubuntu 22.04 LTS
- openSUSE Leap 15.1
- SUSE Linux Enterprise Server 12 SP5
- SUSE Linux Enterprise Server 15 SP1
- Kali Linux
- Debian GNU/Linux
- Fedora Remix for WSL
- Pengwin
- Pengwin Enterprise
- Alpine WSL
- Raft(免费试用版)
- Alma Linux
点击获取后就自动下载并安装了
如果不想使用自己电脑上的Microsoft Store,可以选择官网提供的几个版本,点击链接应该就直接下载了:
- Ubuntu
- Ubuntu 24.04
- Ubuntu 22.04 LTS
- Ubuntu 20.04
- Ubuntu 20.04 ARM
- Ubuntu 18.04
- Ubuntu 18.04 ARM
- Ubuntu 16.04
- Debian GNU/Linux
- Kali Linux
- SUSE Linux Enterprise Server 12
- SUSE Linux Enterprise Server 15 SP2
- SUSE Linux Enterprise Server 15 SP3
- openSUSE Tumbleweed
- openSUSE Leap 15.3
- openSUSE Leap 15.2
- Oracle Linux 8.5
- Oracle Linux 7.9
- Fedora Remix for WSL
Microsoft Store 无法加载页面
按“Win+R”键,在运行窗口中,键入 WSReset.exe并点击“ 确定 ”
以管理员方式打开Powershell,依次执行如下两个指令:
# 1.删除、卸载当前Microsoft Store
get-appxpackage *store* | remove-Appxpackage
# 2.添加、安装Microsoft Store
add-appxpackage -register "C:\Program Files\WindowsApps\*Store*\AppxManifest.xml" -disabledevelopmentmode
如果依旧无法打开,重启下电脑,我是重启完之后才可以正常使用的。
运行刚安装的WSL
设置虚拟机的新用户名和密码(与之后安装Docker无关),注意!输入密码时,控制台上不会有任何反应,大胆去输入就好了。
1.3.2 方法二:命令行自动安装
运行如下指令启用适用于Linux的Windwos子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
运行如下指令启用启用“虚拟机平台”可选功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
建议此时重启一下电脑
powershell中输入指令
对于windows10版本2004版本及更新版本或者windows11,可以直接一行命令符安装
# 很多网站上都说在powershell中输入这个指令就能自动安装
wsl --install
# 实际上,我自己实验成功的是输入如下指令成功的
wsl --install -d <DistroName>
# <DistroName>是自己指定的WSL虚拟机系统,示例:
wsl --install -d Ubuntu
执行完指令后需要略微等待十几秒后才会有反应,然后安装Ubuntu也需要等待。
1.4 安装Docker Desktop
根据自己Windows版本选择下方对应版本,参考文档Docker Desktop for Windows
可以访问参考文档去下载,也可以直接复制下方圆括号内链接下载(本机markdown下能够正常显示,CSDN上不懂怎么就错误了)
[Docker Desktop for Windows - x86_64](https://desktop.docker.com/win/main/amd64/Docker Desktop Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-win-amd64&_gl=11vzs4as_gcl_auMzE1MjQxMTgzLjE3MzIwMjQxNzE._gaNDY4ODQyNjcxLjE3MzIwMjQxNzI._ga_XJWPQMJYHQ*MTczMzExMzcxNi41LjEuMTczMzExMzkzMC40Ni4wLjA.)
[Docker Desktop for Windows - Arm Beta](https://desktop.docker.com/win/main/arm64/Docker Desktop Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-win-arm64)
下载完之后双击运行,点击OK(如果有关于WSL2的选项建议勾选,没有的不用管)
安装完之后,会有个 log out 的按钮,确保你当前电脑其他文件都已经保存完毕,并自己手动关掉,因为你点击log out 之后,电脑会立刻重启。
1.5 运行Docker
双击图标运行,选择接受协议(Accept)。
先跳过登录,也可以跳过调查问卷。
1.6 配置Docker镜像源
在里面添加一行,格式为如下,不知道如何获取自己阿里云镜像URL的,去查看配置镜像加速,也可以直接使用下方镜像。
"registry-mirrors": ["https://docker.linkedbus.com","https://docker.xuanyuan.me","https://docker.hpcloud.cloud","https://docker.m.daocloud.io","https://docker.unsee.tech","https://docker.1panel.live","http://mirrors.ustc.edu.cn","https://docker.chenby.cn","http://mirror.azure.cn","https://dockerpull.org","https://dockerhub.icu","https://hub.rat.dev","http://hub-mirror.c.163.com","http://hub-mirror.c.163.com","https://registry.docker-cn.com"]
1.7 docker校验
打开powershell,终端中输入如下指令
# 显示版本信息
docker --version
# 显示当前docker本地镜像
docker images
# 运行第一个helloworld镜像,测试使用,可以不执行
docker run hello-world
# 显示运行中的容器
docker ps
二、CentOS7安装Docker
Docker官方文档
2.0配置yum进行软件安装
如果之前已经给yum换过国内镜像的可以跳过,我最终用的是方法二,方法一里提供的镜像好像也有东西下不了。
yum换源方案一
# 不会vim的也可以使用gedit,更新YUM仓库源为阿里云镜像源:
sudo vim /etc/yum.repos.d/CentOS-Base.repo
将文件中内容换成如下:
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
清理并重建缓存
sudo yum clean all
sudo yum makecache
sudo yum update
yum换源方法二
# 先安装wget
yum -y install wget
# 使用阿里云镜像
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2.1卸载旧版本:
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2.2配置Docker的yum库
首先安装对应的yum工具
yum install -y yum-utils
安装成功后,配置Docker的yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2.3安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2.4查看版本
docker -v
2.5启动docker
# 设置开机自启
sudo systemctl enable --now docker
# 启动docker
systemctl start docker
2.6校验
# 需要root权限
sudo docker images
2.7 配置镜像加速
此处以阿里云为例,其他云也可以
2.7.1登录阿里云
https://www.aliyun.com
2.7.2开启容器镜像服务ACR
如果是第一次,直接开通即可,免费!
点击镜像工具->镜像加速器
按照阿里云的操作文档进行
# registry-mirrors 可以换成自己的镜像地址 当然我获取的阿里镜像似乎有问题 所以换成了下方这两个
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.linkedbus.com","https://docker.xuanyuan.me","https://docker.hpcloud.cloud","https://docker.m.daocloud.io","https://docker.unsee.tech","https://docker.1panel.live","http://mirrors.ustc.edu.cn","https://docker.chenby.cn","http://mirror.azure.cn","https://dockerpull.org","https://dockerhub.icu","https://hub.rat.dev","http://hub-mirror.c.163.com","http://hub-mirror.c.163.com","https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
三、Docker实战——安装MySQL
Windows上Docker安装MySQL
安装MySQL
# 默认拉取最新版本
docker pull mysql
# 拉取指定版本MySQL
docker pull mysql:5.7
启动MySQL
3306:3306前面的是mysql在windows里端口,后面的是mysql在docker里端口,如果windows外面安装了mysql,端口也是3306,那么要先关闭windows的mysql,不然会有端口冲突:
# 最新版本,mysql_docker_lcx是自定义的名字,-e MYSQL_ROOT_PASSWORD=123456指定MySQL密码
docker run --restart=always --privileged=true -p 3306:3306 --name mysql_docker_lcx -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_ROOT_HOST=% -d mysql
docker run
:这是 Docker 的命令,用于创建一个新的容器并运行一个命令。--restart=always
:这个选项指定了容器的重启策略。always
表示无论容器因为什么原因退出,Docker 都会自动重启它。--privileged=true
:这个选项给予容器额外的权限,使其能够访问宿主机的所有设备,并且有能力执行一些需要高级权限的操作。-p 3306:3306
:这个选项将容器内部的端口映射到宿主机的端口。这里将容器的 3306 端口映射到宿主机的 3306 端口,MySQL 默认使用 3306 端口。--name mysql_docker_lcx
:这个选项为容器指定一个名称,这里名称为mysql_docker_lcx
,这是自定义的名字,可以根据需要修改。-e MYSQL_ROOT_PASSWORD=123456
:这个选项设置环境变量,用于指定 MySQL 的 root 用户的密码。这里设置的密码是123456
。-e MYSQL_ROOT_HOST=%
:这个选项同样设置环境变量,用于指定允许连接到 MySQL root 用户的主机。%
表示允许任何主机连接。-d mysql
:这个选项让 Docker 在后台运行容器,-d
是--detach
的简写。mysql
是 Docker Hub 上的官方 MySQL 镜像名称
# 进入mysql容器内部
docker exec -it mysql_docker_lcx /bin/bash
# 启动
mysql -uroot -p
# 然后输入刚才设置的密码MYSQL_ROOT_PASSWORD=123456
123456
# 退出bash
exit
使用Navicat或其他工具测试MySQL连接
Linux上Docker安装MySQL
安装MySQL
# 这里 \ 是用作换行,实际情况下如果放在一行去写,就可以删掉\
docker run --name mysql_docker_lcx \
--restart=always \
--privileged=true \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_ROOT_HOST=% \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf \
-v /etc/localtime:/etc/localtime:ro \
-d mysql
docker run
:这是 Docker 的命令,用于创建并启动一个新的容器。--name mysql_docker_lcx
:为容器指定一个名称,这里名称为mysql_docker_lcx
。--restart=always
:设置容器的重启策略为always
,意味着无论容器因为什么原因退出,Docker 都会自动重启它。--privileged=true
:给予容器额外的权限,使其能够访问宿主机的所有设备,并且有能力执行一些需要高级权限的操作。-p 3306:3306
:将容器内部的 3306 端口映射到宿主机的 3306 端口,这样可以通过宿主机的 3306 端口访问 MySQL 服务。-e MYSQL_ROOT_PASSWORD=123456
:设置环境变量,指定 MySQL 的 root 用户密码为123456
。-e MYSQL_ROOT_HOST=%
:设置环境变量,指定 MySQL 的 root 用户允许从任何主机连接。-v /usr/local/mysql/log:/var/log/mysql
:挂载宿主机的/usr/local/mysql/log
目录到容器的/var/log/mysql
目录,用于持久化 MySQL 的日志文件。-v /usr/local/mysql/data:/var/lib/mysql
:挂载宿主机的/usr/local/mysql/data
目录到容器的/var/lib/mysql
目录,用于持久化 MySQL 的数据文件。-v /usr/local/mysql/conf:/etc/mysql/conf
:挂载宿主机的/usr/local/mysql/conf
目录到容器的/etc/mysql/conf
目录,用于持久化 MySQL 的配置文件。-v /etc/localtime:/etc/localtime:ro
:挂载宿主机的/etc/localtime
文件到容器的/etc/localtime
文件,用于同步宿主机的时间设置,ro
表示以只读方式挂载。-d mysql
:以分离模式(后台模式)运行容器,mysql
是 Docker Hub 上的官方 MySQL 镜像名称。