Posts Install docker on Ubuntu Server
Post
Cancel

Install docker on Ubuntu Server

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