WSL2에 Docker 대신 Nerdctl 추가

관련 기사:
WSL에 Docker 대신 Podman을 추가해 보십시오.
Distrod를 사용하여 WSL에서 시스템 이동
실패하면 기사가 늘어나는 법칙.
앞의 책은 여기서부터 ↓---------
예전에 Distrod를 사용하여 WSL에서 시스템 이동라는 기사를 썼어요.
시스템드가 왜 필요하냐면요.
WSL에서 이동containerd하기 위해서다.
설치 과정에서 시스템드가 필요하다는 걸 알고 포기했습니다.
다른 분야의 조사에서 디스트로드가 발견되었다
그렇다면 가입containerd해 보자.
한편 필자는 docker(d)와containerd의 차이를 전혀 모른다.
ヾ(・ω<)"3,3● 동그랗게 굴러갑니다."
주제는 여기서부터↓-------

사전 준비


시스템d에 가입한 고객 OS 설정


이번 게스트 OS도 Ubuntu(WSL 버전)를 사용했습니다.
wsl --install ubuntu
먼저 WSL에 systemd를 포함해야 합니다.
아래 문장을 참고하시오
Distrod를 사용하여 WSL에서 시스템 이동

사전 설정


설치 프로그램을 시작하기 전에 각종 준비를 해야 한다
필요한 추가 소프트웨어 패키지 설치
sudo apt install -y uidmap fuse-overlayfs
비 루트 사용자가 시스템ctl을 실행할 수 있도록 미리 설정
런타임을 통과하는 경로입니다.
사용자 이름이 dozo인 경우
sudo loginctl enable-linger $(id -un)
ls /run/user/$(id -u)
export XDG_RUNTIME_DIR=/run/user/$(id -u)

nerdctl 설치


공식 Giithub에서 설치nerdctl.
https://github.com/containerd/nerdctl/releases
이거 컨테이너 넣는 김에.
일반 버전이랑 풀 버전이 있는 것 같아요.
full 버전을 선택합니다.
설치 장소는 ~/입니다.local이나/usr/local인 것 같습니다.
mkdir .local
cd .local/
wget https://github.com/containerd/nerdctl/releases/download/v0.15.0/nerdctl-full-0.15.0-linux-amd64.tar.gz
tar xfz nerdctl-full-0.15.0-linux-amd64.tar.gz
cd ~/
bin 디렉터리의 경로를 통해 설치 실행
export PATH=$HOME/.local/bin:$PATH
containerd-rootless-setuptool.sh install
 [INFO] Checking RootlessKit functionality
pgrep contain -a
 615 containerd
---------↓ 후문은 여기서부터 ↓---------
이번 사고도 많이 발생했다.
이 편에서는 굉장히 깔끔하게 잘 돼 있는 것 같아요.
실제로는 완전히 다르다.

문제 해결


시스템을 찾을 수 없습니다.


dozo@WARDOG:~$ containerd-rootless-setuptool.sh install
[ERROR] Needs systemd (systemctl --user)
(゜Д왜?
그럼 그렇겠지.
지정한 지령을 입력해 보다
systemctl --user
Failed to connect to bus: No such file or directory
(゜Д゜)(゜Д한신이랑 상관없죠.
상세한 상황은 명확하지 않지만, 아래의 명령을 집행해야 한다.
sudo loginctl enable-linger dozo
export XDG_RUNTIME_DIR=/run/user/$(id -u)
XDG_RUNTIME_DIR 기본값은/mnt/wslg/runtime-dir
이것은 wsl 특유의 문제죠.
참조: 사용자 권한의 systemd가Failed to connect to bus를 통해 연결될 수 없는 경우 처리 방법

설치를 안 했대요.


nerdctl pull alpine
 FATA[0000] rootless containerd not running? (hint: use `containerd-rootless-setuptool.sh install` to start rootless containerd): stat /mnt/wslg/runtime-dir/containerd-rootless: no such file or directory
이것도 런타임의 패스가 통하지 않으면.
export를 엽니다.bashrc를 넣는 방법도 있어요.
나는 알리스가 설정한 지령을 사용하는 것이 비교적 좋다고 생각한다.
~/.bashrc
alias nerdctl="XDG_RUNTIME_DIR=/run/user/$(id -u) nerdctl $@"

/etc/subuid 없음


Ubuntu에는 나타나지 않았지만.
다른 OS 설치 시
containerd-rootless-setuptool.sh install
[INFO] Checking RootlessKit functionality
[rootlesskit:parent] error: failed to setup UID/GID map: failed to compute uid/gid map: open /etc/subuid: no such file or directory
[ERROR] RootlessKit failed, see the error messages and https://rootlesscontaine.rs/getting-started/common/ .
글쎄요,podman을 설치할 때도 있는데 대응할 수 있을까요?
idmap이나 shadow를 설치한 후 다음 동작을 실행합니다
sudo touch /etc/subuid /etc/subgid
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $(whoami)
sudo chmod u+s $(which newuidmap)
sudo chmod u+s $(which newgidmap)

좋은 웹페이지 즐겨찾기