Maples Blog

时光静好,与君语;细水流年,与君同。

0%

WSL2 Ubuntu2020.04子系统Docker安装

由于默认非root账号登录,大部分指令都需要加上 sudo,若权限不足加入sudo执行即可。

如果嫌麻烦可以启用并切换至root用户:

1
2
3
4
# 设置root用户密码
sudo passwd root
# 切换root用户
su root

更换镜像源

备份默认源:

1
cp /etc/apt/sources.list /etc/apt/sourses.list.bak

编辑文件:

1
vim /etc/apt/sources.list

删除原有内容并替换为:

1
2
3
4
5
6
7
8
9
10
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

更新源:

1
2
apt-get update
apt-get upgrade

Doker安装

卸载旧版本(如果有):

1
apt-get remove docker docker-engine docker.io containerd runc

设置存储库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装软件包以允许 apt 通过 HTTPS 使用存储库
apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 添加 Docker 的官方 GPG 密钥
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 设置稳定的存储库
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 更新 apt 包索引
apt-get update

若秘钥未配置更新索引时可能会出现异常:

秘钥未配置

安装最新版本的 Docker Engine-Community 和 containerd

1
apt-get install docker-ce docker-ce-cli containerd.io

查看是否安装成功:

1
2
3
docker --version
# 启动docker
service docker start

版本号

配置镜像源:

1
2
3
4
5
6
7
8
# 创建文件夹 不先创建保存文件可能提示权限不足(root用户忽略)
mkdir /etc/docker
# 编辑文件
vim /etc/docker/daemon.json
# 文件内容
{
"registry-mirrors": ["https://hub-mirror.c.163.com"]
}

重启docker:

1
service docker restart 

在Idea中访问

开启远程访问端口:

1
2
3
4
# 编辑配置
vim /etc/default/docker
# 配置内容
DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"

image-20200713145647547

重启服务:

1
service docker restart 

确认端口状态:

1
netstat -tunlp

端口运行状态

由于目前外部程序连接无法直接通过localhost访问(浏览器似乎可以localhost:2375/info),需要使用子系统ip访问。

localhost访问

查询子系统ip:

1
ip addr

查询ip

Idea setting -> Build,Execution,Deployment -> Docker新增配置

Idea docker配置

配置完成可以在管理窗口看到容器与镜像信息。

docker管理窗口

处理IP变化问题

由于子系统IP总是变化,外部访问时如果用IP就会很麻烦,可以借助wsl2host配置host改善。

下载:

下载

下载完毕后使用Cmd或PowerShell运行:

1
.\wsl2host.exe install

输入系统用户名密码,无异常则安装成功。

wsl2host安装

安装成功到计算机->管理->服务和应用程序->服务 在服务列表中找到WSL2 Host并启动。

WSL2 Host服务

若启动失败并提示登录失败,右键点击服务->属性 在登录页签变更用户密码。

登录失败

修改密码

服务正常启动,将在host文件写入一行。

1
[WSL2 ip] ubuntu2004.wsl

之后我们都使用ubuntu2004.wsl访问服务即可。

访问服务


参考资料:

解决Win10 WSL2 IP地址经常变动导致docker容器无法正常访问

欢迎关注我的其它发布渠道