Skip to content
Docker

Docker

Install docker engine

Please check supported versions first before adding the repository.

sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

NVIDIA GPU support

  1. Setup nvidia driver. See cuda.
  2. Install the NVIDIA Container Toolkit
sudo apt install -y --no-install-recommends ca-certificates curl gnupg2
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
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Test docker installation

Test docker

sudo docker run hello-world

Test nvidia GPU support

sudo docker run --gpus all nvidia/cuda:13.0-base nvidia-smi

(Optional) add a user to the docker group

So you don’t have to type sudo in docker commands.

sudo usermod -aG docker $USER

Log out and log back in apply the change.

Default settings for Docker

The /etc/docker/daemon.json files holds docker settings.

Edit /etc/docker/daemon.json for the following options

/etc/docker/daemon.json
{
  "data-root": "/home/docker",
  "registry-mirrors": ["https://mirror.gcr.io"],
  "storage-driver": "btrfs"
}

Then run the following command to apply new docker daemon settings.

sudo service docker restart

You can see the new settings using this command

sudo docker info

Maintenance

Pruning unused docker objects

For example, removing all unused docker things.

docker system prune

Documentations and Tutorials for Docker

Docker and GitHub actions

Or use the regular docker run command. Here we use > to fold commands in YAML.

.github/workflows/test-container.yml
name: container
on: push

env:
  IMG: "node:14.15.0-alpine3.12"

jobs:
  node-docker:
    runs-on: ubuntu-latest
    steps:
      - name: Log the node version
        run: >
          docker run -rm -v $(pwd):/tmp -w /tmp
          ${{ env.IMG }}
          bash -c "node -v; cat /etc/os-release"
Last updated on