Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nick8592/docker-user-guide
Useful docker information.
https://github.com/nick8592/docker-user-guide
docker dockerfile
Last synced: 10 days ago
JSON representation
Useful docker information.
- Host: GitHub
- URL: https://github.com/nick8592/docker-user-guide
- Owner: nick8592
- Created: 2023-05-10T16:02:30.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-21T06:34:49.000Z (8 months ago)
- Last Synced: 2024-06-22T23:28:11.744Z (8 months ago)
- Topics: docker, dockerfile
- Homepage:
- Size: 77.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Docker-User-Guide
## Downloads
[Docker for Windows / Linux](https://www.docker.com/)
[OrbStack for Mac](https://orbstack.dev/)## Links
[Installing Docker from the Default Repositories (Option 2)](https://phoenixnap.com/kb/install-docker-on-ubuntu-20-04)
[進入容器 - 《Docker —— 從入門到實踐》正體中文版](https://philipzheng.gitbook.io/docker_practice/)
[Docker 基本指令操作](https://ithelp.ithome.com.tw/articles/10186431)
[Docker 實戰系列(一):一步一步帶你 dockerize 你的應用](https://larrylu.blog/step-by-step-dockerize-your-app-ecd8940696f4)## Installation Guide
### Install Docker Engine on Ubuntu
Run the following command to uninstall all conflicting packages:
```bash
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
```
```bash
sudo apt-get purge docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin docker-desktop
sudo apt-get autoremove --purge docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin docker-desktop
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
sudo rm -rf /var/lib/containerd
```
```bash
sudo apt-get purge libnvidia-container-tools libnvidia-container1:amd64 libnvidia-container1:amd64 libnvidia-container1:amd64
sudo apt-get autoremove --purge libnvidia-container-tools libnvidia-container1:amd64 libnvidia-container1:amd64 libnvidia-container1:amd64
```Set up Docker's `apt` repository.
```bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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
```
Install the Docker packages.
```bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
Verify that the Docker Engine installation is successful by running the hello-world image.
```bash
sudo docker run hello-world
```### Manage Docker as a non-root user
To create the docker group and add your user:
Create the docker group.
```bash
sudo groupadd docker
```
Add your user to the docker group.
```bash
sudo usermod -aG docker $USER
```
Log out and log back in so that your group membership is re-evaluated.
You can also run the following command to activate the changes to groups:
```bash
newgrp docker
```
Verify that you can run docker commands without sudo.
```bash
docker run hello-world
```### Installing the NVIDIA Container Toolkit
#### Installing with Apt
Configure the production repository:
```bash
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
```
Update the packages list from the repository:
```bash
sudo apt-get update
```
Install the NVIDIA Container Toolkit packages:
```bash
sudo apt-get install -y nvidia-container-toolkit
```
Configure the container runtime by using the `nvidia-ctk` command:
```bash
sudo nvidia-ctk runtime configure --runtime=docker
```
Restart the Docker daemon:
```bash
sudo systemctl restart docker
```### Install Docker Desktop on Ubuntu
For non-Gnome Desktop environments, gnome-terminal must be installed:
```bash
sudo apt install gnome-terminal
```
Download latest [DEB package](https://docs.docker.com/desktop/install/ubuntu/).
Install the package with apt as follows:
```bash
sudo apt-get update
sudo apt-get install ./docker-desktop--.deb
```## Basic
Create new container
```bash
(default)
docker run -i -t [images]
(run in background)
docker run -d [images]
```
Check container
```bash
(list active container)
docker ps
(list all containers)
docker ps -a
```
Start container
```bash
docker start -i [container id]
```
Remove container
```bash
docker rm [container id]
```## Run
https://docs.docker.com/engine/reference/commandline/run/## Easy Example
Create ``
Put code in ``
Create new code called `Dockerfile`
```├── Dockerfile <-- 這裡
├── README.md
└── main.py
```
Base on you environment defined `Dockerfile` code
```Dockerfile
(For example)
FROM python
COPY main.py /main/
WORKDIR /main
RUN apt-get update && apt-get -y upgrade
RUN pip install numpy
CMD python main.py
```
Open CMD
Get into ``
Build your own image.
Type in
```bash
docker build -t [custom_name] .
```
Check new docker image created
```bash
docker images
```
Run your own image
```bash
docker run [custom_name]
```
Push image
```bash
docker tag docker/welcome-to-docker YOUR-USERNAME/welcome-to-docker
```
Remove image
```bash
docker rmi [image_id]
```## Container connet to local folder
**DO NOT OPEN `WSL`** on windows terminal, it will cause error `docker: Error response from daemon`
https://docs.docker.com/storage/bind-mounts/
windows path conversion https://docs.docker.com/desktop/troubleshoot/topics/
- Remember to set `--gpus all` if you need to use GPU.1. Use `-v`
```bash
docker run -it --name [container_name] -v [local_folder]:[container_folder] --gpus all -u 0 --shm-size 12G [image_id] bash
(windows) docker run -it --name test111 -v C:\Users\user\Desktop\mmlab\code\test:/main --gpus all -u 0 --shm-size 12G test bash
(linux/mac) docker run -it --name kmeans -v /User/weichenpai/Code/Kmeans-Clustering:/Kmeans 3f5ef9003cef bash
```2. Use `--mount`
```bash
docker run -it --name [container_name] --mount type=bind,source=[local_folder],target=[container_folder] --gpus all -u 0 --shm-size 12G [image_id] bash
(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
```## Errors
- [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)
```bashImportError: libGL.so.1: cannot open shared object file: No such file or directory
pip uninstall opencv-python
pip install opencv-python-headless
```
- ['docker images' vs 'sudo docker images' #79](https://github.com/docker/desktop-linux/issues/79)- [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)
```bashERROR: 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: ``
rm ~/.docker/config.json
sudo rm -rf ~/.docker/buildx
```## For MacOS
[Docker command not found when running on Mac](https://stackoverflow.com/a/76097028).
Add your Docker binary path
```bash
export PATH="$PATH:/Applications/Docker.app/Contents/Resources/bin/"
```
Then reload the configuration & test with:
```bash
source ~/.bash_profile && docker --version
```
[Mac zsh: command not found: docker](https://blog.csdn.net/qq_45296221/article/details/122191265).
Find `docker` command path, for example:
```bash
/Applications/Docker.app/Contents/Resources/bin
```
Edit PATHs file, use `i` insert
```bash
sudo vim /etc/paths
```
Add `docker` path into PATHs file
```
/usr/local/bin
/System/Cryptexes/App/usr/bin
/usr/bin
/bin
/usr/sbin
/sbin# docker
/Applications/Docker.app/Contents/Resources/bin
```
Use `:wq` save & exit, complete adding path.[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).
The solution is to manually edit the configuration file for your docker installation.
```bash
cd Library/Group\ Containers/group.com.docker/
```
Edit `settings.json`
```bash
sudo vim settings.json
```
Find below section:
```
"filesharingDirectories": [
"/Users",
"/Volumes",
"/private",
"/tmp",
"/var/folders"
],
```
Add path you want to add, for exampple :`"/Users//Code"`.
```
"filesharingDirectories": [
"/Users",
"/Volumes",
"/private",
"/tmp",
"/var/folders",
"/Users//Code"
],
```
Save the file and exit, `:wq`. Now restart your Docker.
[File system sharing (osxfs)](https://docs.docker.com.zh.xy2401.com/v17.09/docker-for-mac/osxfs/#access-control)