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
# 导入镜像(还原)
wsl --import
# 命令检查已安装的版本及运行状态
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博客