# 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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up