{"id":24806244,"url":"https://github.com/nick8592/docker-user-guide","last_synced_at":"2025-03-25T09:12:43.838Z","repository":{"id":163578590,"uuid":"639033206","full_name":"nick8592/Docker-User-Guide","owner":"nick8592","description":"Useful docker information.","archived":false,"fork":false,"pushed_at":"2024-06-21T06:34:49.000Z","size":79,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T08:20:33.009Z","etag":null,"topics":["docker","dockerfile"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nick8592.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-10T16:02:30.000Z","updated_at":"2024-06-21T06:34:52.000Z","dependencies_parsed_at":"2024-03-29T14:48:46.882Z","dependency_job_id":"050f3623-a044-4c99-ae7c-f894bccfb28e","html_url":"https://github.com/nick8592/Docker-User-Guide","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nick8592%2FDocker-User-Guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nick8592%2FDocker-User-Guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nick8592%2FDocker-User-Guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nick8592%2FDocker-User-Guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nick8592","download_url":"https://codeload.github.com/nick8592/Docker-User-Guide/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245431731,"owners_count":20614184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","dockerfile"],"created_at":"2025-01-30T08:19:49.616Z","updated_at":"2025-03-25T09:12:43.809Z","avatar_url":"https://github.com/nick8592.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker-User-Guide\n\n## Downloads\n[Docker for Windows / Linux](https://www.docker.com/)  \n[OrbStack for Mac](https://orbstack.dev/)   \n\n## Links\n[Installing Docker from the Default Repositories (Option 2)](https://phoenixnap.com/kb/install-docker-on-ubuntu-20-04)    \n[進入容器 - 《Docker —— 從入門到實踐》正體中文版](https://philipzheng.gitbook.io/docker_practice/)   \n[Docker 基本指令操作](https://ithelp.ithome.com.tw/articles/10186431)\n[Docker 實戰系列（一）：一步一步帶你 dockerize 你的應用](https://larrylu.blog/step-by-step-dockerize-your-app-ecd8940696f4)\n\n## Installation Guide\n### Install Docker Engine on Ubuntu\nRun the following command to uninstall all conflicting packages:\n```bash\n for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done\n```\n```bash\nsudo apt-get purge docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin docker-desktop\nsudo apt-get autoremove --purge docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin docker-desktop\nsudo rm -rf /var/lib/docker /etc/docker\nsudo rm /etc/apparmor.d/docker\nsudo groupdel docker\nsudo rm -rf /var/run/docker.sock\nsudo rm -rf /var/lib/containerd\n```\n```bash\nsudo apt-get purge libnvidia-container-tools libnvidia-container1:amd64 libnvidia-container1:amd64 libnvidia-container1:amd64\nsudo apt-get autoremove --purge libnvidia-container-tools libnvidia-container1:amd64 libnvidia-container1:amd64 libnvidia-container1:amd64\n```\n\nSet up Docker's `apt` repository.\n```bash\n# Add Docker's official GPG key:\nsudo apt-get update\nsudo apt-get install ca-certificates curl\nsudo install -m 0755 -d /etc/apt/keyrings\nsudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc\nsudo chmod a+r /etc/apt/keyrings/docker.asc\n\n# Add the repository to Apt sources:\necho \\\n  \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \\\n  $(. /etc/os-release \u0026\u0026 echo \"$VERSION_CODENAME\") stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list \u003e /dev/null\nsudo apt-get update\n```\nInstall the Docker packages.\n```bash\nsudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n```\nVerify that the Docker Engine installation is successful by running the hello-world image.\n```bash\nsudo docker run hello-world\n```\n\n### Manage Docker as a non-root user\nTo create the docker group and add your user:\nCreate the docker group.\n```bash\nsudo groupadd docker\n```\nAdd your user to the docker group.\n```bash\nsudo usermod -aG docker $USER\n```\nLog out and log back in so that your group membership is re-evaluated.   \nYou can also run the following command to activate the changes to groups:\n```bash\nnewgrp docker\n```\nVerify that you can run docker commands without sudo.\n```bash\ndocker run hello-world\n```\n\n### Installing the NVIDIA Container Toolkit\n#### Installing with Apt\nConfigure the production repository:\n```bash\ncurl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \\\n  \u0026\u0026 curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \\\n    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \\\n    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list\n```\nUpdate the packages list from the repository:\n```bash\nsudo apt-get update\n```\nInstall the NVIDIA Container Toolkit packages:\n```bash\nsudo apt-get install -y nvidia-container-toolkit\n```\nConfigure the container runtime by using the `nvidia-ctk` command:\n```bash\nsudo nvidia-ctk runtime configure --runtime=docker\n```\nRestart the Docker daemon:\n```bash\nsudo systemctl restart docker\n```\n\n\n### Install Docker Desktop on Ubuntu\nFor non-Gnome Desktop environments, gnome-terminal must be installed:\n```bash\nsudo apt install gnome-terminal\n```\nDownload latest [DEB package](https://docs.docker.com/desktop/install/ubuntu/).\nInstall the package with apt as follows:\n```bash\nsudo apt-get update\nsudo apt-get install ./docker-desktop-\u003cversion\u003e-\u003carch\u003e.deb\n```\n\n## Basic\nCreate new container\n```bash\n(default)\ndocker run -i -t [images]\n(run in background)\ndocker run -d [images]\n```\nCheck container\n```bash\n(list active container)\ndocker ps\n(list all containers)\ndocker ps -a\n```\nStart container\n```bash\ndocker start -i [container id]\n```\nRemove container\n```bash\ndocker rm [container id]\n```\n\n\n## Run\nhttps://docs.docker.com/engine/reference/commandline/run/\n\n## Easy Example\nCreate `\u003cworkspace_folder\u003e`   \nPut code in `\u003cworkspace_folder\u003e`   \nCreate new code called `Dockerfile`   \n```\n\u003cworkspace_folder\u003e\n├── Dockerfile   \u003c--   這裡\n├── README.md\n└── main.py\n```\nBase on you environment defined `Dockerfile` code   \n```Dockerfile\n(For example)\nFROM python\nCOPY main.py /main/\nWORKDIR /main\nRUN apt-get update \u0026\u0026 apt-get -y upgrade\nRUN pip install numpy\nCMD python main.py\n```\nOpen CMD   \nGet into `\u003cworkspace_folder\u003e`\nBuild your own image.   \nType in   \n```bash\ndocker build -t [custom_name] .\n```\nCheck new docker image created   \n```bash\ndocker images\n```\nRun your own image\n```bash\ndocker run [custom_name]\n```\nPush image\n```bash\ndocker tag docker/welcome-to-docker YOUR-USERNAME/welcome-to-docker\n```\nRemove image\n```bash\ndocker rmi [image_id]\n```\n\n## Container connet to local folder\n**DO NOT OPEN `WSL`** on windows terminal, it will cause error `docker: Error response from daemon`  \nhttps://docs.docker.com/storage/bind-mounts/   \nwindows path conversion https://docs.docker.com/desktop/troubleshoot/topics/  \n- Remember to set `--gpus all` if you need to use GPU.   \n\n1. Use `-v`\n```bash\ndocker run -it --name [container_name] -v [local_folder]:[container_folder] --gpus all -u 0 --shm-size 12G [image_id] bash\n(windows) docker run -it --name test111 -v C:\\Users\\user\\Desktop\\mmlab\\code\\test:/main --gpus all -u 0 --shm-size 12G test bash\n(linux/mac) docker run -it --name kmeans -v /User/weichenpai/Code/Kmeans-Clustering:/Kmeans 3f5ef9003cef bash\n```\n\n2. Use `--mount`\n```bash\ndocker run -it --name [container_name] --mount type=bind,source=[local_folder],target=[container_folder] --gpus all -u 0 --shm-size 12G [image_id] bash\n(windows) docker run -it --name mount_test --mount type=bind,source=C:\\Users\\user\\Desktop\\mmlab\\code\\test,target=/main --gpus all -u 0 --shm-size 12G test bash\n```\n\n## Errors\n- [docker环境里安装opencv ImportError: libGL.so.1: cannot open shared object file: No such file or directory](https://blog.csdn.net/Max_ZhangJF/article/details/108920050)\n```bash\n\u003cerror message\u003e\nImportError: libGL.so.1: cannot open shared object file: No such file or directory\n\u003csolution\u003e\npip uninstall opencv-python\npip install opencv-python-headless\n```\n- ['docker images' vs 'sudo docker images' #79](https://github.com/docker/desktop-linux/issues/79)\n\n- [How to Fix the “Error load metadata for docker.io” when Building your Docker Image](https://medium.com/@matijazib/how-to-fix-the-error-load-metadata-for-docker-io-when-building-your-docker-image-on-macos-ec6deee664fd)\n```bash\n\u003cerror message\u003e\nERROR: failed to solve: nvidia/cuda:11.8.0-devel-ubuntu22.04: failed to resolve source metadata for docker.io/nvidia/cuda:11.8.0-devel-ubuntu22.04: error getting credentials - err: exec: \"docker-credential-desktop\": executable file not found in $PATH, out: ``\n\u003csolution\u003e\nrm ~/.docker/config.json\nsudo rm -rf ~/.docker/buildx\n```\n\n## For MacOS\n[Docker command not found when running on Mac](https://stackoverflow.com/a/76097028).  \nAdd your Docker binary path\n```bash\nexport PATH=\"$PATH:/Applications/Docker.app/Contents/Resources/bin/\"\n```\nThen reload the configuration \u0026 test with:\n```bash\nsource ~/.bash_profile \u0026\u0026 docker --version\n```\n[Mac zsh: command not found: docker](https://blog.csdn.net/qq_45296221/article/details/122191265).  \nFind `docker` command path, for example:\n```bash\n/Applications/Docker.app/Contents/Resources/bin\n```\nEdit PATHs file, use `i` insert\n```bash\nsudo vim /etc/paths\n```\nAdd `docker` path into PATHs file\n```\n/usr/local/bin\n/System/Cryptexes/App/usr/bin\n/usr/bin\n/bin\n/usr/sbin\n/sbin\n\n# docker\n/Applications/Docker.app/Contents/Resources/bin\n```\nUse `:wq` save \u0026 exit, complete adding path.   \n\n[Fixing the ‘Mounts denied’ error in Docker for Mac v2.2.3](https://medium.com/effy-tech/fixing-the-var-folders-error-in-docker-for-mac-v2-2-3-2a40e776132d).  \nThe solution is to manually edit the configuration file for your docker installation. \n```bash\ncd Library/Group\\ Containers/group.com.docker/\n```\nEdit `settings.json`\n```bash\nsudo vim settings.json\n```\nFind below section:   \n```\n\"filesharingDirectories\": [\n    \"/Users\",\n    \"/Volumes\",\n    \"/private\",\n    \"/tmp\",\n    \"/var/folders\"\n  ],\n```\nAdd path you want to add, for exampple :`\"/Users/\u003cyours_username\u003e/Code\"`.  \n```\n\"filesharingDirectories\": [\n    \"/Users\",\n    \"/Volumes\",\n    \"/private\",\n    \"/tmp\",\n    \"/var/folders\",\n    \"/Users/\u003cyours_username\u003e/Code\"\n  ],\n```\nSave the file and exit, `:wq`. Now restart your Docker.   \n[File system sharing (osxfs)](https://docs.docker.com.zh.xy2401.com/v17.09/docker-for-mac/osxfs/#access-control)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnick8592%2Fdocker-user-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnick8592%2Fdocker-user-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnick8592%2Fdocker-user-guide/lists"}