2026-03-01-Windows wsl安装docker

1375 个字
7 分钟
2026-03-01-Windows wsl安装docker

Docker是一个开源的容器平台,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。

第一步:系统准备#

1.1 检查系统环境#

Terminal window
# 检查系统版本
lsb_release -a
# 检查内核版本
uname -r
# 检查磁盘空间
df -h
# 检查当前用户
whoami
id

1.2 更新系统#

Terminal window
# 更新包列表
sudo apt update
# 升级系统包
sudo apt upgrade

1.3 配置iptables(WSL2)#

Terminal window
# 更新iptables替代方案
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# 验证iptables配置
sudo iptables --version

验证目录结构#

Terminal window
sudo ls -la /opt/docker/

第三步:Docker仓库配置#

3.1 清理可能存在的旧配置#

Terminal window
# 删除可能存在的旧配置
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密钥#

Terminal window
# 下载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
# 验证密钥文件
ls -la /usr/share/keyrings/docker.gpg
# 验证密钥内容
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/docker.gpg --list-keys

3.3 添加Docker仓库#

Terminal window
# 添加Docker仓库到APT源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
trixie stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 验证仓库配置
cat /etc/apt/sources.list.d/docker.list
# 更新包列表
sudo apt update

3.4 验证Docker仓库#

Terminal window
# 检查Docker包是否可用
apt-cache policy docker-ce
# 查看可用的Docker版本
apt-cache madison docker-ce | head -5

第四步:Docker配置(安装前配置)#

4.1 创建Docker配置目录#

Terminal window
# 创建Docker配置目录
sudo mkdir -p /etc/docker
# 设置配置目录权限
sudo chown root:root /etc/docker
sudo chmod 755 /etc/docker

4.2 创建daemon.json配置文件#

Terminal window
# 创建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.1ms.run"
],
"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
# 验证配置文件
echo "Docker daemon配置:"
cat /etc/docker/daemon.json
# 验证JSON格式
jq . /etc/docker/daemon.json && echo "配置文件格式正确" || echo "配置文件格式错误"

第五步:安装Docker#

5.1 安装Docker Engine#

Terminal window
# 安装Docker CE及相关组件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 验证安装
docker --version
docker compose version

5.2 验证Docker安装#

Terminal window
# 检查Docker二进制文件
which docker
which dockerd
# 检查Docker组件
dpkg -l | grep docker

第六步:启动和配置Docker服务#

6.1 启动Docker服务#

Terminal window
# 启动Docker服务
sudo service docker start
# 等待服务启动
sleep 5
# 检查服务状态
sudo service docker status
# 检查Docker进程
ps aux | grep dockerd | grep -v grep

6.2 验证Docker守护进程#

Terminal window
# 检查Docker守护进程配置
sudo docker info | head -20
# 验证数据目录配置
echo "Docker数据根目录:"
sudo docker info | grep "Docker Root Dir"
# 检查Docker socket
ls -la /var/run/docker.sock

第七步:配置普通用户免sudo使用Docker#

7.1 创建docker用户组并添加用户#

Terminal window
# 检查docker组是否存在
getent group docker || echo "docker组不存在,需要创建"
# 创建docker用户组(如果不存在)
sudo groupadd docker 2>/dev/null || echo "docker组已存在"
# 将当前用户添加到docker组
sudo usermod -aG docker $USER
# 验证用户组配置
echo "当前用户组信息:"
id $USER
# 显示docker组成员
echo "docker组成员:"
getent group docker

7.2 配置Docker socket权限#

Terminal window
# 设置Docker socket权限
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
# 验证socket权限
echo "Docker socket权限:"
ls -la /var/run/docker.sock

7.3 应用用户组权限#

Terminal window
# 方法1: 使用newgrp命令(当前会话生效)
echo "使用newgrp命令应用权限..."
newgrp docker

7.4 测试普通用户权限#

Terminal window
# 测试不使用sudo的Docker命令
echo "测试普通用户Docker权限..."
docker --version
docker info | head -5

8.1 基本功能#

Terminal window
# 运行hello-world测试(不使用sudo)
docker run hello-world
# 检查镜像是否正确存储
docker images
# 检查容器历史
docker ps -a
Terminal window
# 测试网络功能
docker network ls
# 创建测试网络
docker network create test-network
# 验证网络配置文件
sudo ls -la /opt/docker/network/
# 删除测试网络
docker network rm test-network
Terminal window
# 测试卷功能
docker volume create test-volume
# 查看卷列表
docker volume ls
# 检查卷存储位置
sudo ls -la /opt/docker/volumes/
# 删除测试卷
docker volume rm test-volume
Terminal window
# 运行一个更复杂的测试容器
docker run -d --name test-nginx -p 8080:80 nginx:alpine
# 检查容器状态
docker ps
# 测试网络连接
sleep 3
curl -I http://localhost:8080 2>/dev/null && echo "容器网络正常" || echo "网络连接失败(可能端口被占用)"
# 检查容器数据存储
sudo ls -la /opt/docker/containers/
# 查看容器日志
docker logs test-nginx
# 清理测试容器
docker stop test-nginx
docker rm test-nginx
docker rmi nginx:alpine hello-world

基本命令#

Terminal window
# 查看状态
dstatus # 查看详细状态
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker images # 查看镜像
# 启动/停止服务
dstart # 启动Docker服务
dstop # 停止Docker服务
drestart # 重启Docker服务
zz
# 资源管理
dclean # 清理未使用的资源
dsize # 查看数据目录大小
dspace # 查看磁盘使用情况
dmaintenance # 运行完整维护
# 容器操作
docker run -it ubuntu bash # 交互式运行容器
docker run -d --name myapp nginx # 后台运行容器
docker exec -it myapp bash # 进入运行中的容器
docker logs myapp # 查看容器日志
docker stop myapp # 停止容器
docker rm myapp # 删除容器

数据持久化#

Terminal window
# 使用卷持久化数据
docker volume create mydata
docker run -d -v mydata:/data nginx
# 绑定主机目录
docker run -d -v /home/user/data:/data nginx

网络配置#

Terminal window
# 创建自定义网络
docker network create mynetwork
docker run -d --network mynetwork nginx

分享到社交平台

将本文分享给你的朋友们

2026-03-01-Windows wsl安装docker
https://firefly.cuteleaf.cn/posts/2026-03-01-windows-wsl安装docker/
作者
Zhongye
发布于
2026-03-01
版权声明
CC BY-NC-SA 4.0

评论

Profile Image of the Author
Zhongye
南漂中
公告
新的博客站!旧站点传送门 zhongye1.github.io/Arknight-notes
音乐
专辑封面

音乐

暂无播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章数
142
分类数
14
标签数
214
总字数
339,690
运行天数
0
最后更新
0 天前

目录