Windows10下使用WSL安装 Docker和docker compose完整教程

哈喽小伙们好!我是CSDN猫哥。网上大多数的教程都是讲如何在服务器上装Docker,正式用没问题,但测试期间完全可以在自己的win10系统上部署使用。本教程详细介绍在Windows10企业版系统上使用WSL安装Ubuntu 24.04 LTS ,再在Ubuntu 24.04 系统上安装 Docker 的完整步骤。

WSL介绍

还在windows系统上用虚拟机?既庞大又不够流畅,试试WSL。WSL(Windows Subsystem for Linux)允许你直接在 Windows 上运行 Linux 环境,无需启动虚拟机或双系统。WSL 2 是 WSL 的第二个版本,改进了性能和功能,提供了更接近原生 Linux 的体验。

WSL2 (Windows Subsystem for Linux 2)是微软在Windows 10和Windows 11上引入的一项功能,允许用户在Windows操作系统上运行Linux环境及其相关命令和应用程序,而无需使用虚拟机或安装双系统‌‌。WSL2基于 Hyper-V 的轻量级虚拟机,运行完整的Linux内核,提供了更好的性能和更高的兼容性‌。

有了WSL,可以在上面安装Ubuntu 24.04系统了,再在Ubuntu 24.04上安装Docker的步骤同样也适用于linux服务器环境,包含详细的命令解释、国内镜像源配置和用户权限设置。基于实际测试环境编写,确保每一步都可成功执行!喜欢的小伙伴可以点击收藏。

🖥️ 环境说明

项目 说明
Win10专业版 22H02
WSL系统 安装Ubuntu 24.04
SSH工具 MobaXterm
用户 root用户
网络 国内网络环境

📋 系统要求

  • ✅ Win10专业版 /企业版
  • ✅ 64位操作系统
  • ✅ 至少 2GB RAM
  • ✅ 10GB 可用磁盘空间
  • ✅ 稳定的网络连接

🔧 前期准备

在Win10系统上安装好WSL环境,并安装Ubuntu 24.04镜像。

关于如何安装WSL环境,参见猫哥的另一篇文章很详细:《在 Windows 10 上安装和使用 WSL 2 安装 Ubuntu24详细指南

1. 验证当前系统是否安装Docker

安装完成WSL后,可以启动Ubuntu24系统,之后输出以下命令:

bash 复制代码
docker -v

💡 提示:如果系统未安装Docker,会显示安装建议。推荐使用Docker官方源安装最新版本。

由于我已经安装好了,所以查看到了版本号,版本挺新的。

注: 非常不建议直接使用apt get install docker的方式安装。那样安装的是很老的1.x的版本且很可能安装不成功。推荐按猫哥的教程一步步成功安装最新版docker和docker compose。

2. 更新系统包索引

bash 复制代码
sudo apt update

⚠️ 注意:安装软件前推荐先执行此命令,确保获取最新版本信息。

3. 卸载旧版本 Docker(如有)

bash 复制代码
sudo apt remove docker docker-engine docker.io containerd runc

4. 安装必要的依赖包

bash 复制代码
sudo apt install -y ca-certificates curl

依赖包说明:

  • ca-certificates:允许系统信任HTTPS证书,用于安全访问网络源
  • curl:命令行工具,用于从网络下载文件

🚀 安装步骤(使用国内镜像源)

步骤1:创建密钥目录

bash 复制代码
sudo install -m 0755 -d /etc/apt/keyrings

说明install命令比mkdirchmod的组合更简洁,-m 0755设置标准权限。

步骤2:下载Docker官方GPG密钥(使用阿里云镜像)

bash 复制代码
sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

curl参数说明:

  • -f/--fail:服务器错误时静默失败
  • -s/--silent:静默模式,不显示进度条
  • -S/--show-error:失败时显示错误信息
  • -L/--location:自动跟随重定向

🔐 安全说明:GPG密钥用于验证Docker软件包的身份和完整性,确保软件包来自可信源头。

步骤3:更改密钥文件权限

bash 复制代码
sudo chmod a+r /etc/apt/keyrings/docker.asc

说明:为所有用户添加可读权限,确保所有用户都能通过密钥验证软件包。

步骤4:添加Docker软件源(使用阿里云镜像)

bash 复制代码
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

命令解析:

  • arch=$(dpkg --print-architecture):自动检测系统架构(amd64/arm64)
  • signed-by=/etc/apt/keyrings/docker.asc:指定用于验证的GPG密钥
  • $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}"):获取Ubuntu版本代号
  • stable:使用Docker稳定版发布通道

步骤5:再次更新软件包索引

bash 复制代码
sudo apt update

⚠️ 必须执行:让APT知道新的Docker源存在并获取可用软件包列表。

步骤6:安装Docker及相关组件

bash 复制代码
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

组件详细说明:

组件 功能描述
docker-ce Docker引擎核心,负责管理镜像、容器、网络和存储卷
docker-ce-cli Docker命令行工具,用户与Docker引擎交互的客户端
containerd.io 行业标准容器运行时,负责容器生命周期的底层操作
docker-buildx-plugin 下一代镜像构建插件,支持多平台构建和并行构建
docker-compose-plugin 多容器应用管理插件,通过docker-compose.yml定义和运行应用

步骤7:验证安装是否成功

bash 复制代码
docker -v

成功标志 :成功安装后,会显示Docker版本信息。

步骤8:检查开机自启状态

bash 复制代码
systemctl is-enabled docker

💡 预期输出 :输出应为enabled,表示Docker已设置为开机自动启动。

⚙️ 配置国内镜像源(中国用户必备)

⚠️ 重要提醒:国内访问Docker Hub可能受限,建议配置国内镜像源以提升拉取速度。

1. 创建配置文件

bash 复制代码
sudo vim /etc/docker/daemon.json

2. 添加镜像源配置

json 复制代码
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "http://hub-mirror.c.163.com",
    "https://docker.nju.edu.cn"
  ]
}

推荐镜像源说明:

镜像源 地址 特点
DaoCloud镜像站 https://docker.m.daocloud.io 国内老牌服务商,稳定可靠
网易云镜像 http://hub-mirror.c.163.com 多节点覆盖
南京大学镜像站 https://docker.nju.edu.cn 支持多种容器仓库

3. 重启Docker服务

bash 复制代码
sudo systemctl restart docker

4. 验证配置

bash 复制代码
sudo docker info

🔍 查看重点 :查看输出中的Registry Mirrors部分,确认镜像源已生效。

5. 测试拉取镜像

bash 复制代码
sudo docker container run hello-world

成功标志:如果能正常输出"Hello from Docker!"等信息,表明配置成功。

👥 配置用户权限

💡 权限说明:默认情况下,只有root用户和docker组用户才能执行Docker命令。

权限原理说明

Docker守护进程创建Unix套接字文件:/var/run/docker.sock

bash 复制代码
ls -l /var/run/docker.sock

权限:srw-rw----(docker组具有读写权限)

1. 查看docker用户组

bash 复制代码
grep docker /etc/group

💡 提示 :如果没有返回结果,可执行sudo groupadd docker创建用户组。

2. 添加当前用户到docker组

bash 复制代码
sudo usermod -aG docker $USER

参数说明:

  • usermod:修改用户属性的命令
  • -aG:追加到附加组
  • $USER:当前用户名

3. 使组权限生效

bash 复制代码
newgrp docker

⚠️ 替代方案:或者注销重新登录,新的组权限会自动生效。

4. 测试权限

bash 复制代码
docker images

成功标志:如果命令正常执行,说明用户权限配置成功。

过程总结

🎯 验证安装和基本使用

1. 验证安装

bash 复制代码
# 查看版本信息
docker --version

# 查看详细信息
docker info

# 运行测试容器
docker run hello-world

2. 基本命令速查

容器管理:

bash 复制代码
# 查看运行中的容器
docker ps

# 查看所有容器
docker ps -a

# 停止容器
docker stop CONTAINER_ID

# 启动容器
docker start CONTAINER_ID

# 删除容器
docker rm CONTAINER_ID

# 查看容器日志
docker logs CONTAINER_ID

镜像管理:

bash 复制代码
# 查看本地镜像
docker images

# 拉取镜像
docker pull IMAGE_NAME

# 删除镜像
docker rmi IMAGE_ID

# 构建镜像
docker build -t IMAGE_NAME .

🐳 Docker Compose 使用

验证Docker Compose安装

bash 复制代码
docker compose version

💡 注意 :从Docker 20.10版本开始,Compose作为插件集成,使用docker compose命令。

Docker Compose基本用法

bash 复制代码
# 启动服务
docker compose up -d

# 停止服务
docker compose down

# 查看服务状态
docker compose ps

# 查看日志
docker compose logs

🔧 高级配置和优化

1. 日志管理配置

创建配置文件限制日志大小:

bash 复制代码
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "http://hub-mirror.c.163.com",
    "https://docker.nju.edu.cn"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF

sudo systemctl restart docker

2. 资源限制

运行容器时限制资源使用:

bash 复制代码
# 限制内存和CPU
docker run -m 512m --cpus="0.5" nginx

# 限制I/O
docker run --device-read-bps /dev/sda:1mb ubuntu

3. 定期清理

bash 复制代码
# 清理未使用的容器、镜像、卷和网络
docker system prune -a

# 查看Docker磁盘使用情况
docker system df

# 仅清理未使用的容器
docker container prune

# 仅清理未使用的镜像
docker image prune -a

🛠️ 故障排除指南

常见问题及解决方案

1. 权限问题

错误信息Got permission denied while trying to connect to Docker daemon

解决方案

bash 复制代码
# 检查用户组
groups $USER

# 重新添加用户到docker组
sudo usermod -aG docker $USER

# 立即生效
newgrp docker
2. 无法连接到 Docker 守护进程

错误信息Cannot connect to the Docker daemon

解决方案

bash 复制代码
# 检查服务状态
sudo systemctl status docker

# 启动服务
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

# 检查日志
sudo journalctl -u docker -f
3. 镜像拉取失败

错误信息:网络问题导致镜像下载失败

解决方案

  • ✅ 检查网络连接
  • ✅ 配置国内镜像加速器
  • ✅ 尝试使用代理
  • ✅ 检查DNS设置
4. 磁盘空间不足

错误信息no space left on device

解决方案

bash 复制代码
# 清理未使用的资源
docker system prune -a

# 查看磁盘使用情况
docker system df

# 清理日志文件
sudo find /var/lib/docker -name "*.log" -delete

🗑️ 卸载 Docker(如需要)

完全卸载步骤

bash 复制代码
# 停止 Docker 服务
sudo systemctl stop docker
sudo systemctl stop containerd

# 卸载 Docker 包
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

# 删除 Docker 相关文件
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm -rf /etc/docker

# 删除用户配置
rm -rf ~/.docker

清理用户组

bash 复制代码
# 删除docker用户组(可选)
sudo groupdel docker

🎉 安装完成总结

✅ 成功安装的标志

  • Docker引擎已成功安装并配置
  • 国内镜像源已配置,提升拉取速度
  • 用户权限已配置,无需sudo即可运行Docker命令
  • 开机自启已设置

🚀 下一步学习建议

  1. 学习Docker基础概念

    • 镜像(Image)
    • 容器(Container)
    • 仓库(Repository)
  2. 掌握常用命令

    • 容器生命周期管理
    • 镜像构建和管理
    • 网络和数据卷配置
  3. 进阶学习

    • Docker Compose多容器编排
    • Docker网络配置
    • Docker数据管理
    • Docker安全性配置
  4. 实践项目

    • 构建自己的Docker镜像
    • 部署简单的Web应用
    • 使用Docker Compose管理多服务应用
    • 使用docker安装pgsql数据库

📚 相关资源


最佳实践

1. 定期清理

bash 复制代码
# 清理未使用的容器、镜像、卷和网络
docker system prune -a

# 仅清理未使用的容器
docker container prune

# 仅清理未使用的镜像
docker image prune -a

2. 资源限制

bash 复制代码
# 运行容器时限制资源
docker run -m 512m --cpus="0.5" nginx

3. 日志管理

bash 复制代码
# 配置日志驱动和大小限制
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF

sudo systemctl restart docker

总结

本教程涵盖了在 Windows10上先安装Ubuntu 24.04 系统,再在上面安装和配置 Docker 的完整流程。

包括:

  • Win10系统安装WSL环境
  • 系统准备和依赖安装
  • Docker 的多种安装方法
  • 基本配置和验证
  • 常用命令和最佳实践
  • 故障排除和安全设置

按照本教程操作,您将能够成功在Win10 系统上成功安装并运行 Docker,为容器化应用部署打下坚实基础。遇到任何问题,欢迎留言反馈!

相关资源


相关推荐
姚青&2 小时前
三.文件处理命令-文件查看
linux·运维·服务器
逆天小北鼻2 小时前
FTP链接失败pam_unix(sshd:account): expired password for user
linux·运维·服务器
Coder_Boy_2 小时前
基于SpringAI的智能AIOps项目:微服务与DDD多模块融合设计概述
java·运维·人工智能·微服务·faiss
翼龙云_cloud2 小时前
亚马逊云渠道商:如何解决AWS EC2搭建的网站无法访问?
运维·云计算·aws
老兵发新帖2 小时前
open-notebook开源项目分析
linux·运维·ubuntu
qq_317620312 小时前
002:windows命令速查手册
windows·powershell·cmd
未来之窗软件服务2 小时前
服务器运维(二十一)阿里云系统镜像本地装机img文件—东方仙盟练气期
运维·服务器·阿里云·仙盟创梦ide·东方仙盟·国产化操作系统·img镜像
无心水3 小时前
【神经风格迁移:工程化】27、神经风格迁移全栈进阶实战:Docker容器化与K8s部署,从单机到云原生
docker·云原生·架构·神经风格迁移·docker容器化·ai部署·vgg算法
victory04313 小时前
K8S 从Harbor当中拉取镜像 连接方法
云原生·容器·kubernetes
陈陈CHENCHEN3 小时前
【Kubernetes】K8s 1.35 配置 Docker 作为容器运行时
docker·kubernetes