Reference: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04
Docker simplifies managing application processes in containers, which are resource-isolated and more portable than virtual machines. This tutorial covers installing Docker Community Edition (CE) on Ubuntu 20.04, working with containers and images, and pushing an image to a Docker Repository.
- Ubuntu 20.04 server with a sudo non-root user and a firewall
- Docker Hub account for creating and pushing images
The Docker installation package available in the official Ubuntu repository may not be the latest version. To ensure we get the latest version, we’ll install Docker from the official Docker repository. To do that, we’ll add a new package source, add the GPG key from Docker to ensure the downloads are valid, and then install the package.
First, update your existing list of packages:
First, update your existing list of packages:
sudo apt updateInstall a few prerequisite packages which let apt use packages over HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-commonAdd the GPG key for the official Docker repository to your system:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -Add the Docker repository to APT sources:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"This updates our package database with Docker packages from the newly added repo.
Ensure you are about to install from the Docker repo instead of the default Ubuntu repo:
apt-cache policy docker-ceOutput Example:
docker-ce:
Installed: (none)
Candidate: 5:19.03.9~3-0~ubuntu-focal
Version table:
5:19.03.9~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
Finally, install Docker:
sudo apt install docker-ceDocker should now be installed, the daemon started, and the process enabled to start on boot. Check that it’s running:
sudo systemctl status dockerOutput Example:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-05-19 17:00:41 UTC; 17s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 24321 (dockerd)
Tasks: 8
Memory: 46.4M
CGroup: /system.slice/docker.service
└─24321 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
By default, the docker command can only be run by the root user or a user in the docker group. Attempting to run it otherwise results in:
Output:
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
To avoid using sudo with docker, add your username to the docker group:
sudo usermod -aG docker ${USER}Log out and back in, or use:
su - ${USER}Enter your user’s password to continue.
Confirm your user is added to the docker group:
groupsOutput:
sammy sudo docker
To add a different user to the docker group:
sudo usermod -aG docker usernameNow, you can run Docker commands without sudo. If not, prepend commands with sudo.
Docker commands follow this structure:
docker [option] [command] [arguments]To see all subcommands, use:
dockerFor help on a subcommand:
docker docker-subcommand --helpCheck Docker Hub access:
docker run hello-worldSearch for images:
docker search ubuntuDownload an image:
docker pull ubuntuList downloaded images:
docker imagesRun a container interactively:
docker run -it ubuntu # ???
docker exec -it container_name bash # go inside the container
exit # Exit the containerdocker ps # List active containers
docker ps -a # List all containers
docker start container_id # Start a stopped container
docker stop container_id # Stop a running container
docker rm container_id # Remove a containerSave container state to a new image:
docker commit -m "message" -a "author" container_id repository/new_image_nameLogin to Docker Hub:
docker login -u docker-registry-usernameTag the image if necessary:
docker tag local-image:tagname new-repo:tagnamePush the image:
docker push docker-registry-username/image-nameYou have now installed Docker, worked with images and containers, and pushed an image to Docker Hub. For more details and advanced tutorials, visit DigitalOcean's community tutorials.
For the complete tutorial, refer to the original guide.