Windows10 wsl2 ubuntu22.04 docker安装

1. 环境准备

首先需要明确 Windows 安装 Docker 的一些先决条件:

  1. 确保 Window 版本在 10/11 以上
  2. 确保系统启用了 虚拟化支持
  3. 确保系统支持 HyperV 组件
  4. 确保系统安装了 WSL2 最新版本
  5. 确保虚拟化所需的 Windows 功能服务已经开启
HyperV 组件支持
json 复制代码
systeminfo | findstr /C:"Hyper-V"
Hyper-V 要求:     已检测到虚拟机监控程序。将不显示 Hyper-V 所需的功能。

一般的 Windows 个人家庭版默认不带 HyperV,如果发现 HyperV组件未安装,可通过脚本进行安装。

bash 复制代码
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

将以上脚本保存为 hyperv.cmd 文件,双击运行可完成安装。

脚本执行完成后,重新检查以确认 HyperV 安装完成。

安装 WSL2 最新版本

访问如下地址获取安装包进行安装:

https://github.com/microsoft/WSL/releases

安装完成之后,设置版本并检查状态:

vbnet 复制代码
> wsl --set-default-version 2
> wsl -v
WSL 版本: 2.6.1.0
内核版本: 6.6.87.2-1
WSLg 版本: 1.0.66
MSRDC 版本: 1.2.6353
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows: 10.0.19045.5965

ps:如果wsl -v失败,进入:https://learn.microsoft.com/en-us/windows/wsl/install-manual

下载:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi 然后双击运行

配置wsl2

编辑 %USER_HOME%/.wslconfig文件:

对于 Windows 10 版本,采用如下配置:

json 复制代码
[wsl2]
networkingMode=nat
memory=4GB # 限制 WSL 2 VM 使用的内存不超过 4GB
processors=2 # 设置 WSL 2 VM 使用两个虚拟处理器
swap=8GB # 设置交换分区大小为 8GB


[experimental]
autoMemoryReclaim=dropcache

保存 .wslconfig 文件,重启wsl服务:

jsoncss 复制代码
 wsl --shutdown 
 wsl
开启虚拟化服务功能

打开控制面板 -> 程序 -> 启用或关闭系统功能,

将如下系统功能打开:

  • 虚拟机平台
  • HyperV
  • 适用于WIndows的Linux子系统

启用后根据提示重启系统后生效。

安装 Linux 发行版

离线安装,参考文档:

https://learn.microsoft.com/en-us/windows/wsl/install-manual

我下载的Ubuntu22.04,大家可以自行选择

D盘创建WSL文件夹

提前下载7zip

将下载的 Ubuntu2204-221101.AppxBundle 放到 WSL 文件夹中

使用7zip解压 Ubuntu2204-221101.AppxBundle 到 Ubuntu2204-221101 目录,进入 Ubuntu2204-221101

将 Ubuntu_2204.1.7.0_x64 目录移动到 D:/WSL目录下 ,进入 Ubuntu_2204.1.7.0_x64 ,双击执行 ubuntu.exe

2. Ubuntu初始化

换源

备份原来源

shell 复制代码
# 备份原来源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

打开/etc/apt/sources.list

shell 复制代码
sudo vim /etc/apt/sources.list
# 使用vim打开后,英文输入a,进编辑模式,输入下边内容
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# 然后按 Esc 输入:wq

保存修改后的源文件后,更新源以使其生效:

shell 复制代码
sudo apt update
sudo apt upgrade -y
开通ssh服务
sh 复制代码
sudo apt install openssh-server -y
sudo vim /etc/ssh/sshd_config
# 使用vim打开后,英文输入a,进编辑模式
PermitRootLogin yes
Port 22

# 然后按 Esc 输入:wq
sudo systemctl restart ssh

完事后使用xshell登录操作更方便

Ubuntu上安装Docker准备

检查系统环境
bash 复制代码
# 检查系统版本
lsb_release -a

# 检查内核版本
uname -r

# 检查磁盘空间
df -h

# 检查当前用户
whoami
id

# 安装必要的依赖包
sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release \
    software-properties-common \
    iptables \
    wget \
    jq
配置iptables(WSL2需要)
bash 复制代码
# 更新iptables替代方案
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

# 验证iptables配置
sudo iptables --version
创建Docker数据目录
bash 复制代码
# 创建Docker数据目录
sudo mkdir -p /opt/docker

# 设置目录所有者和权限
sudo chown root:root /opt/docker
sudo chmod 755 /opt/docker

# 验证目录创建
ls -ld /opt/docker
创建Docker子目录结构
bash 复制代码
# 预创建一些重要的子目录
sudo mkdir -p /opt/docker/{containers,image,network,volumes,swarm,tmp,plugins}

# 验证目录结构
sudo ls -la /opt/docker/
Docker仓库配置
清理可能存在的旧配置
bash 复制代码
# 删除可能存在的旧配置
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
添加Docker官方GPG密钥
bash 复制代码
# 下载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
添加Docker仓库
bash 复制代码
# 添加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

# 验证仓库配置
cat /etc/apt/sources.list.d/docker.list

# 更新包列表
sudo apt update
验证Docker仓库
bash 复制代码
# 检查Docker包是否可用
apt-cache policy docker-ce

# 查看可用的Docker版本
apt-cache madison docker-ce | head -5
创建Docker配置目录
bash 复制代码
# 创建Docker配置目录
sudo mkdir -p /etc/docker

# 设置配置目录权限
sudo chown root:root /etc/docker
sudo chmod 755 /etc/docker
创建daemon.json配置文件
bash 复制代码
# 创建优化的Docker配置文件
sudo vim /etc/docker/daemon.json
# 使用vim打开后,英文输入a,进编辑模式,输入下边内容
{
  "data-root": "/opt/docker",
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "registry-mirrors": [
	  "https://docker.registry.cyou",
	  "https://docker-cf.registry.cyou",
	  "https://dockercf.jsdelivr.fyi",
	  "https://docker.jsdelivr.fyi",
	  "https://dockertest.jsdelivr.fyi",
	  "https://mirror.aliyuncs.com",
	  "https://dockerproxy.com",
	  "https://mirror.baidubce.com",
	  "https://docker.m.daocloud.io",
	  "https://docker.nju.edu.cn",
	  "https://docker.mirrors.sjtug.sjtu.edu.cn",
	  "https://docker.mirrors.ustc.edu.cn",
	  "https://mirror.iscas.ac.cn",
	  "https://docker.rainbond.cc",
	  "https://do.nark.eu.org",
	  "https://dc.j8.work",
	  "https://dockerproxy.com",
	  "https://gst6rzl9.mirror.aliyuncs.com",
	  "https://registry.docker-cn.com",
	  "http://hub-mirror.c.163.com",
	  "http://mirrors.ustc.edu.cn/",
	  "https://mirrors.tuna.tsinghua.edu.cn/",
	  "http://mirrors.sohu.com/"
  ],
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 5,
  "iptables": true,
  "ip-forward": true,
  "bridge": "docker0",
  "default-address-pools": [
    {
      "base": "172.19.0.0/16",
      "size": 24
    }
  ],
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "insecure-registries": [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ]
}
安装Docker Engine
bash 复制代码
# 安装Docker CE及相关组件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 验证安装
docker --version
docker compose version
启动和配置Docker服务
启动Docker服务
bash 复制代码
# 启动Docker服务
sudo service docker start

# 等待服务启动


# 检查服务状态
sudo service docker status

# 检查Docker进程
ps aux | grep dockerd | grep -v grep
验证目录结构
bash 复制代码
# 检查/opt/docker目录结构
echo "Docker数据目录结构:"
sudo ls -la /opt/docker/

# 注意:Docker子目录是按需创建的,运行容器后才会出现
echo ""
echo "注意:以下目录由Docker按需创建,初始安装后可能不存在:"
for dir in containers image network volumes; do
    if [ -d "/opt/docker/$dir" ]; then
        echo "✓ $dir 目录存在"
    else
        echo "• $dir 目录将在使用时自动创建"
    fi
done

# 验证Docker是否能在此目录中工作
echo ""
echo "验证Docker数据目录功能:"
if docker info | grep -q "/opt/docker"; then
    echo "✓ Docker数据根目录配置正确"
else
    echo "✗ Docker数据根目录配置可能有问题"
fi

使用Docker

参照菜鸟教程:https://www.runoob.com/docker/docker-container-usage.html

相关推荐
longerxin20202 小时前
ubuntu所有版本镜像下载链接
linux·运维·ubuntu
数据雕塑家2 小时前
Linux下的花式「隔空」文件传输魔法
linux·运维·服务器
muyesouu2 小时前
kubernetes 安装配置 需要有两个地方配置国内镜像地址
云原生·容器·kubernetes
橘子真甜~3 小时前
C/C++ Linux网络编程2 - Socket编程与简单UDP服务器客户端
linux·运维·服务器·网络编程api·udp协议·udp通信
深圳市恒讯科技3 小时前
服务器与普通个人电脑的主要区别是什么?
运维·服务器
qq_281317473 小时前
nginx安装配置、故障处置、性能优化
运维·nginx
未来之窗软件服务4 小时前
服务器运维(十一)SQLite3 php封装——东方仙盟炼气期
运维·服务器·sqlite·服务器运维·数据库驱动·东方仙盟
yachuan_qiao4 小时前
专业的建筑设备监控管理系统选哪家
大数据·运维·python
cccccc语言我来了5 小时前
深入理解 Linux(7) 命令与动态库:从文件操作到程序链接的实践指南
android·linux·运维