Installation
- Update apt package
1
2
sudo apt update
sudo apt install -y ca-certificates curl
- Add Docker’s official GPG key:
1
2
3
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:
1
2
3
4
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
- Update apt package
1
sudo apt update
- Installing docker
1
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- Add user to the docker group
1
sudo usermod -aG docker $USER
- See running containers
1
2
3
docker ps
# Or
docker ps -a
- Create docker network
1
docker network create --subnet=10.10.0.0/16 --gateway=10.10.0.1 subnet1
- See docker container IP
1
docker inspect <containerid|name> | awk -F'"IPAddress": ' '{print $2}' | awk -F'[,"]' '{print $2}' | sed '/^$/d'
- See docker volume
1
docker volume ls
- See docker images
1
docker images
Enable Docker for remote access
- Install nginx
- Create
nginx
config/etc/nginx/sites-available/docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 2375; # Or 2376 for HTTPS
server_name _; # Or domain name
location / {
proxy_pass http://unix:/var/run/docker.sock:$request_uri;
proxy_http_version 1.1;
proxy_set_header Connection ""; # Clear Connection header for new connections
# Required for Docker's "hijacked" connections (e.g., docker attach, docker exec)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host; # Pass original host header
}
}
- Linked it to
sites-enabled
1
sudo ln -s /etc/nginx/sites-available/docker /etc/nginx/sites-enabled/
- Add
nginx
to docker group
1
sudo usermod -aG docker www-data
- Test
nginx
config
1
sudo nginx -t
- Restart
nginx
1
sudo systemctl restart nginx
- Docker url will be -
1
tcp://0.0.0.0:2375
Using remote docker
- See docker context
1
docker context ls
- Create docker context
1
2
3
4
docker context create <context-name> --description "Context Description" --docker "host=ssh://server-url-or-ip"
# Example
docker context create ninja --description "Docker on HomeLab" --docker "host=ssh://myhomelab.netbird.io"
- Use docker context
1
2
3
4
docker context use <context-name>
# Example
docker context use ninja