# 透過Rootless Docker建立具有GPU的容器 ## Getting started > 更多請參考資料 https://docs.docker.com/engine/security/rootless/ ***Step.1*** 為自己的帳號建立rootless-docker環境 ```bash dockerd-rootless-setuptool.sh install ```  > 請依照上面所寫的指示將`export PATH=...`和`export DOCKER_HOST=...`加入至`~/.bashrc` > > **🚨注意:** 所有docker相關檔案都存於`~/.local/share/docker`,這可能會占用到大量硬碟空間,如未使用到請記得進行刪除image或container ***Step.2*** 接續快速建立環境請參考 [#快速建立Jupyter環境](#快速建立Jupyter環境) ## 快速建立Jupyter環境 > ⚠️ 適用於快速使用別人建立好的環境 ***Step.1*** 使用cschranz/gpu-jupyter建立一個Jupyter Notebook Server ```bash docker run --gpus all -d -it -p 8848:8888 -v $(pwd)/my_data:/home/jovyan/work -e GRANT_SUDO=yes -e JUPYTER_ENABLE_LAB=yes --name="jupyter" --user root cschranz/gpu-jupyter:v1.4_cuda-11.6_ubuntu-20.04_python-only ``` > 指令說明: > * 參數上的8848為用來連上jupyter notebook的Port,如果被占用請選擇其他Port使用 > * `-v $(pwd)/my_data:/home/jovyan/work` 會將目前所在目錄下的my_data資料夾掛載進容器,也可以改為其他,例如:`-v /home/my_username/mydoc:/home/jovyan/mydoc` > 說明請參考: https://hub.docker.com/r/cschranz/gpu-jupyter > 其他Docker image版本: https://hub.docker.com/r/cschranz/gpu-jupyter/tags  打上預設密碼 `gpu-jupyter`  ***Step.2*** 使用完畢後刪除容器,及刪除Docker Image,避免佔用伺服器空間 ```bash docker rm -f jupyter docker rmi cschranz/gpu-jupyter:v1.4_cuda-11.6_ubuntu-20.04_python-only ``` > `-f` 用於強制刪除,不論容器是否正在執行中 ## 建立只有CUDA的容器環境 > ⚠️ 適用於想要自行從頭搭建環境的使用者,python及其他套件需自行安裝 ***Step.1*** 建立cuda版本為11.4.3的容器 (python及其他套件要自己安裝,僅有cuda環境而已) ```bash docker run -itd --name="cuda11-4-3" --gpus all nvidia/cuda:11.4.3-cudnn8-devel-ubuntu20.04 bash ``` > 其他容器版本可以在DockerHub上找到 > https://hub.docker.com/r/nvidia/cuda/tags 下指令查看容器有沒有成功啟動 ```bash docker ps -a ```  ***Step.2*** 進入容器,透過nvidia-smi指令可以看到CUDA版本為11.4 ```bash docker exec -it cuda11-4-3 bash ```  ***Step.3*** 刪除建立的容器 ```bash docker rm -f cuda11-4-3 ``` 刪除下載的Docker Image ```bash docker rmi nvidia/cuda:11.4.3-cudnn8-devel-ubuntu20.04 ``` ## Docker 常用指令 * 列出所有已經建立的容器 ```bash docker ps -a ``` * 刪除容器 ```bash docker rm <CONTAINER ID 或 NAME> ``` * 啟動容器 ```bash docker start <CONTAINER ID 或 NAME> ``` * 停止容器 ```bash docker stop <CONTAINER ID 或 NAME> ``` * 重啟容器 ```bash docker restart <CONTAINER ID 或 NAME> ``` * 列出所有已經下載好的Docker Image ```bash docker images ``` * 刪除Docker Image ```bash docker rmi <IMAGE ID 或 REPOSITORY/TAG> ``` ## 清除Rootless-Docker環境 ```bash dockerd-rootless-setuptool.sh uninstall rootlesskit rm -rf ~/.local/share/docker ``` 編輯`~/.bashrc`將原本加入的`export PATH=...`和`export DOCKER_HOST=...`移除 ## Admin Guides Run this to create subuid/subgid for every user ```python #!/usr/bin/python3 # Ref: https://rootlesscontaine.rs/getting-started/common/subuid/ with open("/etc/subuid", "w") as f: for uid in range(1000, 65536): f.write("%d:%d:65536\n" %(uid,uid*65536)) with open("/etc/subgid", "w") as f: for uid in range(1000, 65536): f.write("%d:%d:65536\n" %(uid,uid*65536)) print("/etc/subuid and /etc/subgid generated.") ```
×
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