安装 Docker
官网(以 Ubuntu 为例):https://docs.docker.com/engine/install/ubuntu/
获取 WSL 的 Docker 安装脚本
sudo curl -fsSL https://get.docker.com -o get-docker.sh
执行安装脚本
sudo sh get-docker.sh
执行脚本安装过程中,提示“建议使用Docker Desktop for windows”,20s内按Ctrl+C会退出安装,所以需要等待20s。
启动 Docker 守护进程
sudo service docker start
检查 Docker 守护进程状态
sudo service docker status
设置开机启动
sudo /lib/systemd/systemd-sysv-install enable docker
注意:不同于完全Linux虚拟机方式,WLS2 下通过
apt install docker-ce
命令安装的 Docker 无法启动,因为 WSL2 方式的 Ubuntu 里面没有 systemd。上述官方 get-docker.sh 安装的 Docker,Docker 进程是用 Ubuntu 传统的 init 方式而非 systemd 启动的。
Docker 容器间通信
容器之间是相互隔离的,可以通过使用同一个网络来互相通信。
# 查看网络
docker network ls
# 创建网络
docker network create test
# 启动容器 test1,使用网络 test,设置网络别名为 net1
docker run -e renv=dev --name test1 --network test --network-alias net1 -it -d -p 8081:8081 test1
# 启动容器 test2,使用网络 test,设置网络别名为 net2
docker run -e renv=dev --name test2 --network secp --network-alias net2 -it -d -p 8082:8082 test2
比如 test2 容器访问 test1 容器则使用 网络别名:端口 访问即可,net1:8081
。
配置固定 IP
由于 WLS 是使用 Windows 的 Hyper-V 虚拟平台创建,所以每次重启 Windows 之后,Hyper-V 会重新启动,IP 也会重新分配,所以可以新建一个批处理文件 WSL固定IP.bat
放到 %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
开机启动文件夹中:
:: 在 Ubuntu(启动后才可以添加)中添加 IP 地址 172.16.0.1,名为 eth0:1
wsl -d Ubuntu-20.04 -u root ip addr add 172.16.0.1/24 broadcast 172.16.0.255 dev eth0 label eth0:1
:: 在 Win10 中添加 IP 地址 172.16.0.10
netsh interface ip add address "vEthernet (WSL)" 172.16.0.10 255.255.255.0
:: 将来,访问 Ubuntu 时将使用 172.16.0.1,访问 Win10 时将使用 172.16.0.10。