podman WSL2 使用记录
wsl中使用docker需要配置systemd,要用windows中的客户端,比较麻烦。
这里我们使用podman的方案,不需要systemd运行
使用cgroupfs 替换 systemd
cp /usr/share/containers/containers.conf /etc/containers/
实际上这一步并不是必须的, 即使没有替换podman仍然可以启动VM容器, 只是不支持service podman start
启动container的时候报错,Your kernel does not support pids limit capabilities or the cgroup is not mounted. PIDs limit discarded.
BIOS没有启用CPU虚拟化的时候 cgroup mount是这样的
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
正常的cgroup mount是这样的
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu type cgroup (rw,nosuid,nodev,noexec,relatime,cpu)
cgroup on /sys/fs/cgroup/cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
联想的新电脑BIOS界面变了, CPU虚拟化默认没有启动。
还有些电脑 bios里没有CPU虚拟化的配置,但不表示虚拟化没有启用,可以去任务管理器确认一下
虚拟化启用后,wsl --update
更新到最新版本, 需要重新安装ubuntu,已安装的虚拟机cgroup mount还是不正确
WSL2支持systemd了
在 /etc/wsl.conf
中配置
[boot]
systemd=true
然后重启 wsl --shutdown
配置阿里云的镜像
ubuntu镜像:https://developer.aliyun.com/mirror/ubuntu
docker镜像:获取mirror地址 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
root@DESKTOP-40DNL8N:~# cat /etc/containers/registries.conf | grep -v '#'
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "docker.io"
[[registry.mirror]]
location = "xxxx.mirror.aliyuncs.com" # 这里配置的时候不能是https开头
如果使用http, 把下面那个insecure = true打开
pull image时报错,提示需要认证
docker login --username=yszzu1 registry.cn-hangzhou.aliyuncs.com
不能直接docker login, 后面要加上镜像站的domain
有些最新的image tag拉取不了,比如postgres:15, 而postgres:14却能拉取。
在idea中写.bat
脚本(可以直接运行),bat脚本中调用WSL .sh
文件
mvn package -DskipTests=true && bash docker-build-latest.sh
cmd bat文件调用其他脚本时需要使用call/start
, 否则第二行之后不会执行。比如这个mvn实际指到mvn.bat文件
call mvn compile
echo "bb"