Install Docker Engine & Docker Compose on Ubuntu


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 | 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] \
  $(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 -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 "$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Please visit Docker website to collect latest version of Docker Compose

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 \
    -o /etc/bash_completion.d/docker-compose

Test the installation

docker-compose --version

To uninstall Docker Compose

sudo rm /usr/local/bin/docker-compose

You'll only receive email when they publish something new.

More from Md. Sazzad Hossain Sharkar
All posts