Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save SHSharkar/29edbf2c93294f01d52b8ece9ac3ced6 to your computer and use it in GitHub Desktop.
Save SHSharkar/29edbf2c93294f01d52b8ece9ac3ced6 to your computer and use it in GitHub Desktop.
Install Docker Engine & Docker Compose on Ubuntu

Prerequisites

To install Docker Engine, you need the 64-bit version of one of these Ubuntu versions:

  • Ubuntu Impish 21.10
  • Ubuntu Hirsute 21.04
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

Install Docker Engine

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release -y

Add Docker’s official GPG key:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Use the following command to set up the stable repository.

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

Install Docker Engine

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

Fix Docker .sock file permission issue

sudo chmod 666 /var/run/docker.sock

Verify that Docker Engine is installed correctly by running the hello-world image

sudo docker run hello-world

This command downloads a test image and runs it in a container. When the container runs, it prints a message and exits.

Post-installation steps for Linux

The Docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The Docker daemon always runs as the root user.

If you don’t want to preface the docker command with sudo, create a Unix group called docker and add users to it. When the Docker daemon starts, it creates a Unix socket accessible by members of the docker group.

Create the docker group

sudo groupadd docker

Add your user to the docker group

sudo usermod -aG docker $USER

Log out and log back in so that your group membership is re-evaluated

newgrp docker

Verify that you can run docker commands without sudo

docker run hello-world

If you get /home/user/.docker/config.json: permission denied

sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R

Configure Docker to start on boot

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Test the installation

docker version

Install Docker Compose

Run this command to download the current stable release of Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Please visit Docker website to collect latest version of Docker Compose

https://docs.docker.com/compose/install

Apply executable permissions to the binary

sudo chmod +x /usr/local/bin/docker-compose

If the command docker-compose fails after installation, check your path. You can also create a symbolic link to /usr/bin or any other directory in your path.

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Optionally, install command completion for the bash and zsh shell.

sudo curl \
    -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \
    -o /etc/bash_completion.d/docker-compose

Test the installation

docker-compose --version

To uninstall Docker Compose

sudo rm /usr/local/bin/docker-compose
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment