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"
posted @ 2022-03-08 19:18  funny_coding  阅读(549)  评论(0编辑  收藏  举报
build beautiful things, share happiness