WSL和Hyper-V
WSL,Windows Subsystem for Linux,在Windows10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。
Hyper-V,完整的硬件虚拟化平台,WSL(特别是 WSL 2)是基于Hyper-V架构的轻量级Linux子系统,两者在资源占用、启动速度和使用场景上有明显区别,可根据开发需求选择搭配使用。微软官方提供了详细的启用指南与架构说明。
WSL的操作
# 查看已安装WSL列表
wsl --list --verbose
# 简写
wsl -l -v
# 一键关闭所有WSL实例
wsl --shutdown
# 先关闭再启动
wsl --shutdown
wsl
# 安装Ubuntu
wsl --install
wsl --install -d Ubuntu-24.04 --web-download
wsl --install -d Ubuntu-24.04 --location "D:\WSL\Ubuntu24" --web-download
# 注销/彻底删除实例(慎用)
wsl --unregister Ubuntu
# 查看WSL真实内网 IP
ip addr show eth0
# 获取 IP
hostname -I
# 查看监听端口
ss -tlnp
# 或
netstat -tulpn
Ubuntu安装docker
Docker,容器化平台,打包应用、依赖、配置成独立容器,一处打包、随处运行。Docker 容器:共享宿主系统内核,体积小、速度快。
核心概念: 镜像Image:程序模板,相当于安装包;容器Container:镜像运行实例,独立隔离运行环境;仓库 Registry:存放镜像的公共/私有仓库;数据卷 Volume:持久化存储,容器删数据不丢。
安装docker
#先更新系统包
sudo apt update && sudo apt upgrade -y
# 安装依赖
sudo apt install ca-certificates curl gnupg lsb-release -y
# 先清理旧文件
sudo rm -f /etc/apt/trusted.gpg.d/docker.gpg
sudo rm -f /etc/apt/sources.list.d/docker.list
# 下载 国内阿里云 Docker 密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
# 添加 国内阿里云 Docker 源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/trusted.gpg.d/docker.gpg] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
# 免sudo使用
sudo usermod -aG docker $USER
# 配置国内镜像源
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io"
]
}
# 查看镜像源
docker info | grep -A 10 "Registry Mirrors"
# 确认是否启动成功
sudo service docker start
sudo service docker status
# 重启 Docker
sudo service docker restart
#退出重进 WSL(必须)
exit
# 重新打开WSL后运行
docker --version
docker run hello-world
docker pull 镜像名 # 拉镜像
docker run # 启动容器
docker ps # 查看运行容器
docker exec -it # 进入容器
docker start/stop # 启停容器
docker volume # 管理数据卷
Docker安装Redis
安装Redis7
# 拉取镜像
docker pull redis:7
# 查看本地下载好的镜像
docker images
# 启动(/后不能有空格和制表符)
docker run -d \
--name redis \
-p 6379:6379 \
-v redis-data:/data \
--restart always \
redis:7 \
redis-server \
--appendonly yes \
--requirepass 123456
# 数据卷:-v redis-data:/data
docker volume inspect redis-data
docker volume ls
# 启动(Windows目录不支持Linux权限)
docker run -d \
--name redis7 \
--restart always \
-p 6379:6379 \
-v /mnt/c/Users/super/.redis/data:/data \
redis:7 \
redis-server \
--requirepass 123456 \
--appendonly yes
# 查看Docker容器正在运行的实例
docker ps
# 查看Docker容器所有的的实例
docker ps -a
# 进入Redis 7客户端
docker exec -it redis7 redis-cli
# 输入密码
auth 123456
# 停止/启动
docker stop redis7
docker start redis7
# 删除docker容器实例
docker rm -f [容器ID/名称]
Docker安装MySQL
安装MySQL8:
# 拉取镜像
docker pull mysql:8.0
# 查看本地下载好的镜像
docker images
# 启动(/后不能有空格和制表符)
docker run -d \
--name mysql8 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v mysql-data:/var/lib/mysql \
--restart=always \
mysql:8.0
# 数据卷:-v mysql-data:/var/lib/mysql
docker volume inspect mysql-data
docker volume ls
# 启动(Windows目录不支持Linux权限)
docker run -d \
--name mysql8 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /mnt/c/Users/super/.mysql/data:/var/lib/mysql/ \
--restart=always \
mysql:8.0
# 查看Docker容器正在运行的实例
docker ps
# 查看Docker容器所有的的实例
docker ps -a
# 进入MySQL客户端
docker exec -it mysql8 /bin/bash
# 停止/启动
docker stop mysql8
docker start mysql8
# 删除docker容器实例
docker rm -f [容器ID/名称]
Docker安装PostgreSQL
安装PostgreSQL16:
# 拉取镜像
docker pull postgres:16
# 查看本地下载好的镜像
docker images
# 启动(/后不能有空格和制表符)
docker run -d \
--name postgres16 \
--restart=always \
-p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-e POSTGRES_USER=postgres \
-e POSTGRES_DB=postgres \
-v postgres-data:/var/lib/postgresql/data \
postgres:16
参数:
-e POSTGRES_USER=safe,可选,默认 postgres。
-e POSTGRES_DB=app,可选,创建初始数据库。
-v postgres-data:/var/lib/postgresql/data,数据持久化。
--restart unless-stopped,自动重启。
# 数据卷: -v postgres-data:/var/lib/postgresql/data
docker volume inspect postgres-data
docker volume ls
# 查看Docker容器正在运行的实例
docker ps
# 查看Docker容器所有的的实例
docker ps -a
# 进入MySQL客户端
docker exec -it postgres16 /bin/bash
# 停止/启动
docker stop postgres16
docker start postgres16
# 删除docker容器实例
docker rm -f postgres16
docker rm -f [容器ID/名称]
-v mysql-data:/var/lib/mysql
docker run -d \
--name redis \
-p 6379:6379 \
-v redis-data:/data \
--restart always \
redis:7 \
redis-server \
--appendonly yes \
--requirepass 123456
# 数据卷:-v redis-data:/data
docker volume inspect redis-data
Docker安装RabbitMQ
安装RabbitMQ4.2:
# 再拉取镜像
docker pull rabbitmq:4.2-management
# 查看本地下载好的镜像
docker images
# 启动(/后不能有空格和制表符)
# 版本:4.2(带管理面板)
# 容器名:rabbitmq,
# AMQP 端口:5672(程序连接用)
# WEB 管理端口:15672(浏览器访问)
# 默认账号:admin,默认密码:123456
# 数据卷:rabbitmq-data(不丢数据、不权限报错)
# 访问地址: http://localhost:15672/
docker run -d \
--name rabbitmq \
--restart=always \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=123456 \
-v rabbitmq-data:/var/lib/rabbitmq \
rabbitmq:4.2-management
# 查看数据卷
docker volume ls
# 查看Docker容器正在运行的实例
docker ps
# 查看Docker容器所有的的实例
docker ps -a
# 进入MySQL客户端
docker exec -it rabbitmq /bin/bash
# 停止/启动
docker stop rabbitmq
docker start rabbitmq
# 删除docker容器实例
docker rm -f rabbitmq