Ubuntu 24.04 (WSL2) 上部署 Docker
·
环境要求
- Windows 11/10 with WSL2
- Ubuntu 22.04.5 LTS (jammy)
- WSL2内核版本:5.10.16.3-microsoft-standard-WSL2
- 足够的磁盘空间(建议至少10GB)
- 主机做子系统开启网络镜像,在子系统可使用主机的代理网
一、系统准备
1.1 更新系统
# 更新包列表
sudo apt update
# 升级系统包
sudo apt upgrade -y
# 安装必要的依赖包
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release \
software-properties-common \
iptables \
wget \
jq
1.2 配置iptables(WSL2需要)
# 更新iptables替代方案
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
一、系统准备
2.1 更新系统
# 更新包列表
sudo apt update
# 升级系统包
sudo apt upgrade -y
# 安装必要的依赖包
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release \
software-properties-common \
iptables \
wget \
jq
2.2 配置iptables(WSL2需要)
# 更新iptables替代方案
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
三、Docker仓库配置
3.1 清理可能存在的旧配置
# 删除可能存在的旧配置
sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /usr/share/keyrings/docker-archive-keyring.gpg
sudo rm -f /usr/share/keyrings/docker.gpg
# 确保目录存在
sudo mkdir -p /usr/share/keyrings
3.2 添加Docker官方GPG密钥
# 下载Docker GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
# 设置密钥文件权限
sudo chmod a+r /usr/share/keyrings/docker.gpg
3.3 添加Docker仓库
# 添加Docker仓库到APT源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新包列表
sudo apt update
四、Docker配置(安装前配置)
4.1 创建Docker配置目录
# 创建Docker配置目录
sudo mkdir -p /etc/docker
# 设置配置目录权限
sudo chown root:root /etc/docker
sudo chmod 755 /etc/docker
4.2 创建daemon.json配置文件
# 创建优化的Docker配置文件
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"data-root": "/opt/docker",
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://cjie.eu.org"
],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"iptables": true,
"ip-forward": true,
"bridge": "docker0",
"default-address-pools": [
{
"base": "172.17.0.0/16",
"size": 24
}
],
"experimental": false,
"features": {
"buildkit": true
},
"insecure-registries": []
}
EOF
五、安装、启动和配置Docker服务
5.1 安装Docker Engine
# 安装Docker CE及相关组件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5.2 启动Docker服务
# 启动Docker服务
sudo service docker start
六、配置普通用户免sudo使用Docker
7.1 创建docker用户组并添加用户
# 检查docker组是否存在
getent group docker || echo "docker组不存在,需要创建"
# 创建docker用户组(如果不存在)
sudo groupadd docker 2>/dev/null || echo "docker组已存在"
# 将当前用户添加到docker组
sudo usermod -aG docker $USER
7.2 配置Docker socket权限
# 设置Docker socket权限
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
7.3 应用用户组权限
# 使用newgrp命令(当前会话生效)
newgrp docker
八、故障排除指南
8.1 GPG密钥错误
# 如果遇到GPG密钥问题
echo "=== 修复GPG密钥问题 ==="
# 清理旧密钥
sudo rm -f /usr/share/keyrings/docker*
# 重新下载密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
sudo chmod a+r /usr/share/keyrings/docker.gpg
# 验证密钥
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/docker.gpg --list-keys
8.2 用户权限问题
# 修复用户权限问题
echo "=== 修复用户权限问题 ==="
# 确保docker组存在
sudo groupadd docker 2>/dev/null || echo "docker组已存在"
# 重新添加用户到docker组
sudo usermod -aG docker $USER
# 修复socket权限
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
# 应用权限
echo "请选择以下方法之一应用权限:"
echo "1. 运行: newgrp docker"
echo "2. 重新登录WSL终端"
echo "3. 在PowerShell中运行: wsl --terminate Ubuntu-24.04"
8.3 数据目录权限问题
# 修复数据目录权限
echo "=== 修复数据目录权限问题 ==="
# 修复目录权限
sudo chown -R root:root /opt/docker
sudo chmod -R 755 /opt/docker
# 如果/opt/docker有问题,使用备用目录
if [ ! -w /opt/docker ]; then
echo "⚠️ /opt/docker权限有问题,建议使用备用目录"
echo "1. 创建备用目录: sudo mkdir -p /home/docker-data"
echo "2. 修改配置: sudo nano /etc/docker/daemon.json"
echo "3. 将data-root改为: /home/docker-data"
echo "4. 重启Docker: sudo service docker restart"
fi
8.4 WSL2网络问题
# 修复WSL2网络问题
echo "=== 修复WSL2网络问题 ==="
# 重启Docker网络
sudo service docker restart
# 检查iptables
sudo iptables -L -n | head -10
# 重新配置iptables
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# 如果还有问题,在Windows中重启WSL2
echo "如果网络仍有问题,在Windows PowerShell中运行:"
echo "wsl --shutdown"
echo "然后重新打开WSL终端"更多推荐


所有评论(0)