win10系统使用WSL2安装ubuntu22.04并且安装docker

目录

一 对于win10操作系统版本检查和简单配置WSL2

 1 启用虚拟功能并需要重启电脑完成配置。

2 下载Linux内核更新程序包

3 设置 WSL 默认大版本 

4 一些常用的 wsl 命令 

二 Linux 发行版安装

1 微软商店安装(默认安装到C盘)

2 手动安装(可以安装到非C盘)

 三 更换ubuntu22.04的源为国内的阿里云源并进行一些简单的小配置

1.更换阿里云源

2 解决 systemctl 命令无法使用问题

3 安装防火墙服务

 四 安装docker

 1 验证 Docker 是否安装成功

2 windows ubantu子系统启动docker失败

 3 配置docker镜像加速(阿里云)


一 对于win10操作系统版本检查和简单配置WSL2

  • 对于x64系统: 版本1903 或更好版本, 采用 内部版本18362 或更高版本。
  • 对于 ARM64系统: 版本2004 或更高版本, 采用 内部版本19041 或更高版本。

低版本可能安装不了wsl2 我的版本是:

 1 启用虚拟功能并需要重启电脑完成配置。

也可以在powshell中以管理员身份运行下面命令以确保开启适用于Linux的Windows子系统,和虚拟机平台服务配置项,并重启电脑完成配置。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

对于powershell的使用建议安装微软商店自带的 Windows Terminal (win11默认安装)可以更友好的使用powershell 和后续安装的ubunto22.04虚拟机,Windows Terminal 可以集成多个shell,如powershell、cmd、git bash,安装完的Linux发行版的终端也会自动集成到 Windows Terminal 中。另外,已经启动的 Linux 发行版,可以打开多个终端界面,不会相互影响。

2 下载Linux内核更新程序包

下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

 上一步命令运行完必须重启,否则该步安装更新包将报错。

3 设置 WSL 默认大版本 

 命令安装默认 WSL 大版本为 2,手动安装默认为 1,通过以下方式更改 WSL 版本:

# 这里我将默认版本设为 2
wsl --set-default-version 2
4 一些常用的 wsl 命令 
# 列出可安装的 Linux 发行版
wsl --list --online 或 wsl -l -o

# 列出已安装的 Linux 发行版
wsl --list --verbose 或 wsl -l -v

# 导出镜像(备份)
wsl --export <Distribution Name> <FileName>

# 导入镜像(还原)
wsl --import <Distribution Name> <InstallLocation> <FileName>
# 命令检查已安装的版本及运行状态
wsl -l -v
#关闭ubuntu
wsl --shutdown

二 Linux 发行版安装

1 微软商店安装(默认安装到C盘)

在 Microsoft Store 中搜索 Linux,查看可安装的Linux发行版,如选择Ubuntu 20.04.5 LTS,”免费下载“直接下载安装。安装完成后会弹出一个terminal,设置用户名和密码,设置完成即可进入Ubuntu。

2 手动安装(可以安装到非C盘)

 从官网下载想要安装的Linux发行版:Manual installation steps for older versions of WSL | Microsoft Learn

以我下载的Ubuntu 22.04 LTS为例,在D盘新建 WSL 文件夹,将下载得到的 AppxBundle 文件放到 WSL 文件夹下,修改后缀名为 .zip ,然后解压文件会得到:

将Ubuntu_2204.1.7.0_x64.appx 修改后缀名为 .zip 再次解压得到:

点击ubuntu.exe 进行安装虚拟机(当前目录为安装的目录)

输入用户名和密码 注意 我这里不能输入root为用户名,显示已经存在root 所有后面还需要重新切换root用户并设置root密码

 切换root用户并重新设置密码

#切换root用户并且设置密码
sudo passwd root 
#之后需要输入你刚创建的非root用户的密码 我的是cust用户的密码,提示输入新密码就是root的密码
之后使用su命令进行切换用户

手动安装ubuntu22.04成功后续使用Windows Terminal进行演示

 三 更换ubuntu22.04的源为国内的阿里云源并进行一些简单的小配置

1.更换阿里云源

ubuntu镜像_ubuntu下载地址_ubuntu安装教程-阿里巴巴开源镜像站 阿里云镜像站

按照官方教程操作

#打开配置文件
vi /etc/apt/sources.list
#替换文件所有内容
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

检查一下并且更新apt

#查看文件是否更改成功
cat /etc/apt/sources.list
#更新源
sudo apt-get update
#更新软件,国内源很快
sudo apt-get dist-upgrade
sudo apt-get upgrade

更换源成功 

2 解决 systemctl 命令无法使用问题

 现象为在命令行执行systemctl命令,报如下错误:

解决方案如下:

#安装daemonize和fontconfig
apt install -y fontconfig daemonize

编辑脚本指令vi /etc/profile,并加入如下内容:

SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')

if [ -z "$SYSTEMD_PID" ]; then
   sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
   SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
fi

if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
    exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -m -p su - $LOGNAME
fi

编辑脚本指令vi /etc/sudoers,加入如下内容使用wq!强制保存:

%sudo ALL=(ALL) NOPASSWD: /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
%sudo ALL=(ALL) NOPASSWD: /usr/bin/nsenter -t [0-9]* -a su - [a-zA-Z0-9]*

执行source /etc/profile或者是重新打开terminal,执行systemctl验证是否能够正常操作。 

3 安装防火墙服务

ubuntu22.04使用命令启动防火墙会报错

#安装防火墙firewalld
sudo apt-get install firewalld

 常用的防火墙指令

#防火墙的开启、关闭、禁用命令
(1)设置开机启用防火墙:systemctl enable firewalld

(2)设置开机禁用防火墙:systemctl disable firewalld

(3)启动防火墙:systemctl start firewalld

(4)关闭防火墙:systemctl stop firewalld 或 systemctl stop firewalld.service

(5)检查防火墙状态 systemctl status firewalld

#使用firewall-cmd配置端口
(1)查看防火墙状态:firewall-cmd --state

(2)重新加载配置:firewall-cmd --reload

(3)查看开放的端口:firewall-cmd --list-ports

(4)开启防火墙端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent

 检查状态 systemctl status firewalld 成功

 四 安装docker

docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站 可以查看官方教程

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Step 3: 写入软件源信息
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
 1 验证 Docker 是否安装成功
#查看docker状态
sudo systemctl status docker

2 windows ubantu子系统启动docker失败
#查看docker报错信息
dockerd --log-level error
#我当时的报错
Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.8.2 (nf_tables):  CHAIN_ADD failed (No such file or directory): chain PREROUTING
 (exit status 4)

故障原因是Docker用iptables初始化NAT网络,而Debian buster使用 nftables 而不是 iptables,导致dockerd不能正常完成NAT初始化,出错退出。

处理方法是调用update-alternatives强制Debian用iptables而不是nftables。

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
# for ipv6
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

如果还运行失败还需要关闭防火墙后再启动docker

#查看防火墙状态
systemctl status firewalld
#设置开机禁用防火墙
systemctl disable firewalld
#关闭防火墙
systemctl stop firewalld
#启动docker
systemctl start docker

运行成功

 3 配置docker镜像加速(阿里云)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://自己的阿里云镜像.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

发现上面的不好使

使用下面的

创建配置文件目录(已存在可跳过)
sudo mkdir -p /etc/docker 
 
通过命令行生成配置(推荐新手)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.imgdb.de",
        "https://docker-0.unsee.tech",
        "https://docker.hlmirror.com"
    ]
}
EOF 
 
应用配置(必须执行)
sudo systemctl daemon-reload 
sudo systemctl restart docker 

五 java部署

剩下的看jt项目使用docker部署springboot项目_jt 部署-CSDN博客

### 安装和配置DockerWSL2上的Ubuntu 22.04 #### 准备工作 确保已成功安装并配置好带有所需用户名的Ubuntu 22.04版本,这标志着基础环境搭建完毕[^1]。 #### 添加Docker官方GPG密钥 为了安全下载软件包,需先导入Docker仓库的GPG公钥至系统中。执行如下命令来完成操作: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg ``` 该指令会从指定URL获取GPG签名文件并通过管道传递给`gpg`工具处理,最终保存到系统的APT密钥环内[^3]。 #### 设置稳定的Apt源 接着设置apt源以便后续能够顺利安装Docker及其组件。创建或编辑/etc/apt/sources.list.d/docker.list 文件加入以下内容: ```plaintext deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable ``` 上述配置指定了针对AMD架构机器使用的稳定版Docker镜像地址以及对应的GPG验证路径。 #### 更新本地索引与安装Docker Engine 更新本地APT缓存以反映最新的可用软件列表,并通过下面两条命令依次安装最新版本的Docker引擎及相关依赖项: ```bash sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 这条组合命令首先刷新了APT数据库中的记录,随后一次性完成了所有必要的安装过程。 #### 解决启动问题 由于WSL特性,在尝试使用`systemctl`管理服务时可能会遇到权限不足或其他兼容性障碍。对于这种情况,推荐采用替代方案直接调用初始化脚本来激活Docker守护进程: ```bash sudo service docker start ``` 或者如果上述方法不可行,则可考虑利用更底层的方式手动触发启动流程: ```bash sudo dockerd & ``` 这两种方式都能有效绕过因缺少Systemd支持而导致的服务控制难题[^2]。 #### 验证安装成果 最后一步是确认Docker已经正常运作。可以通过运行简单的测试容器来进行检验: ```bash docker run hello-world ``` 当看到预期的信息输出即表示整个部署顺利完成;反之则可能需要排查是否存在其他潜在的问题阻碍着Docker Daemon的工作状态[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值