# install docker/nerdctl in wsl2 ubuntu22.04 如果不想在 windows 內安裝 docker-desktop 這個容器工具的話,可以考慮使用 WSL2 的 linux 來安裝、使用容器,以下是相關安裝命令。 :::info 除非特別切換到 root 進行操作,不然用預設使用者的話,docker / nerdctl 都需要加上 sudo 來操作。 docker / nerdctl 都有提供 rootless 的安裝方式,我尚未進行相關的安裝測試...... 有安裝的話再更新筆記上來。 ::: ## wsl install > 其他資訊請參閱微軟官方文件 ```bash wsl --update wsl --install Ubuntu-22.04 ``` 接下來會要設定使用者與密碼,設定好後,直接輸入 wsl 即可進入 ubuntu 內部 (預設會進入你目前的資料夾,wsl 是可以直接使用 windows 內的資料的) 因為 wsl 開啟後,預設會進入的目錄是你剛剛執行 wsl 時所在的目錄,因為接下來的操作可能會要下載資料,可以先用 `cd ~` 的命令進入 ubuntu 的預設使用者資料夾 ## docker ### from package tool (apt-get) [offical doc-install-using-the-repository](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository) ```bash # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add the repository to Apt sources: echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` ### manually install [offical doc-install-from-a-package](https://docs.docker.com/engine/install/ubuntu/#install-from-a-package) ```bash cd ~ curl -fsSLk https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/containerd.io_1.6.9-1_amd64.deb --output containerd.io_1.6.9-1_amd64.deb curl -fsSLk https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-buildx-plugin_0.11.2-1~ubuntu.22.04~jammy_amd64.deb --output docker-buildx-plugin_0.11.2-1~ubuntu.22.04~jammy_amd64.deb curl -fsSLk https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce-cli_24.0.7-1~ubuntu.22.04~jammy_amd64.deb --output docker-ce-cli_24.0.7-1~ubuntu.22.04~jammy_amd64.deb curl -fsSLk https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce_24.0.7-1~ubuntu.22.04~jammy_amd64.deb --output docker-ce_24.0.7-1~ubuntu.22.04~jammy_amd64.deb curl -fsSLk https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-compose-plugin_2.21.0-1~ubuntu.22.04~jammy_amd64.deb --output docker-compose-plugin_2.21.0-1~ubuntu.22.04~jammy_amd64.deb sudo dpkg -i ./containerd.io_1.6.9-1_amd64.deb \ ./docker-buildx-plugin_0.11.2-1~ubuntu.22.04~jammy_amd64.deb \ ./docker-ce-cli_24.0.7-1~ubuntu.22.04~jammy_amd64.deb \ ./docker-ce_24.0.7-1~ubuntu.22.04~jammy_amd64.deb \ ./docker-compose-plugin_2.21.0-1~ubuntu.22.04~jammy_amd64.deb # 安裝好後就已啟動,不需要 start # sudo service docker start ``` #### set daemon.json 如果要設定 docker daemon.json 可以利用以下命令 (記得調整設定內容) ```bash sudo mkdir /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json { "insecure-registries": [ "{your-registries-domain}" ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker ``` ## nerdctl 下載 nerdctl 大全套,裡面已包含必要的所有資源 可以參考官方發布頁面: [連結](https://github.com/containerd/nerdctl/releases) ```bash cd ~ curl -fsSL https://github.com/containerd/nerdctl/releases/download/v1.7.0/nerdctl-full-1.7.0-linux-amd64.tar.gz --output nerdctl-full-1.7.0-linux-amd64.tar.gz # 如果因為憑證問題無法下載,可以用這個命令 # curl -fsSLk https://github.com/containerd/nerdctl/releases/download/v1.7.0/nerdctl-full-1.7.0-linux-amd64.tar.gz --output nerdctl-full-1.7.0-linux-amd64.tar.gz sudo tar Cxzvvf /usr/local nerdctl-full-1.7.0-linux-amd64.tar.gz ``` 以下安裝會包含 buildkit,這樣才能建置容器 buildkit 相關資料可以查閱官方說明: [連結](https://github.com/containerd/nerdctl/blob/main/docs/build.md) ### install to root ```bash sudo mkdir /etc/buildkit cat <<EOF | sudo tee /etc/buildkit/buildkitd.toml [worker.oci] enabled = false [worker.containerd] enabled = true # namespace should be "k8s.io" for Kubernetes (including Rancher Desktop) namespace = "default" EOF sudo systemctl enable --now containerd ``` ### install to user :::warning 這邊我安裝會出錯,僅記錄 ::: ```bash # 這個 sh 檔案已經在 tar 解壓的時候放到 /usr/local 了,所以可以直接執行 containerd-rootless-setuptool.sh install ## install log [INFO] Checking RootlessKit functionality [rootlesskit:parent] error: failed to setup UID/GID map: newuidmap 683 [0 1000 1 1 100000 65536] failed: : exec: "newuidmap": executable file not found in $PATH ``` ### ref - [WSL2にDocker代替のNerdCtl(containerd)を入れてみる(2023)](https://zenn.dev/dozo/articles/df36eb282969ec)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.