Learn how to install Docker on Ubuntu Server 18 with our comprehensive guide. Follow step-by-step instructions to set up Docker and start deploying containerized applications efficiently on your server. #centlinux #ubuntu #docker
Table of Contents
What is Docker?
Docker is a set of Platform as a Service (PaaS) products that use operating system level virtualization to deliver software in packages called Containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels. All containers are run by a single operating-system kernel and are thus more lightweight than virtual machines. (Courtesy: Wikipedia)
The software that hosts the containers is called Docker Engine. It was initially developed in 2013 and now it is maintained by Docker, Inc.
Docker is a Freemium product and available in both Enterprise (commercial) and Community (free) editions.
Recommended Training for You: Docker for absolute beginners
Docker Features
Some of the core features of Docker are.
- Easy and Faster Configuration
- Increase productivity
- Application Isolation
- Routing Mesh
- Swarm – A cluster of Docker host machines
- Security Management
- Services
Docker Alternatives
If you’re looking for alternatives to Docker for containerization and orchestration, there are several other tools and platforms available that offer similar functionalities with different features and benefits. Here are some of the best Docker alternatives:
1. Podman
- Description: A daemonless, open-source container engine developed by Red Hat.
- Key Features:
- No daemon; runs as a regular user.
- Compatible with Docker CLI commands.
- Strong security features and rootless containers.
- Website: Podman
2. Kubernetes
- Description: An open-source container orchestration platform for automating deployment, scaling, and management of containerized applications.
- Key Features:
- Automated container deployment and scaling.
- Service discovery and load balancing.
- Self-healing and automated rollouts and rollbacks.
- Website: Kubernetes
3. OpenShift
- Description: A Kubernetes-based container orchestration platform developed by Red Hat.
- Key Features:
- Enterprise-grade Kubernetes platform.
- Integrated CI/CD pipelines.
- Developer and operational tools for full application lifecycle management.
- Website: OpenShift
4. LXC (Linux Containers)
- Description: An operating system-level virtualization method for running multiple isolated Linux systems (containers) on a single control host.
- Key Features:
- Lightweight and minimal overhead.
- Shares the host kernel.
- Suitable for running multiple isolated Linux instances.
- Website: LXC
5. CRI-O
- Description: An open-source lightweight container runtime for Kubernetes.
- Key Features:
- Built for Kubernetes.
- Supports Open Container Initiative (OCI) standards.
- Lightweight and focused on container orchestration.
- Website: CRI-O
6. rkt (Rocket)
- Description: A container engine developed by CoreOS, now maintained by the community.
- Key Features:
- Security-focused design.
- Supports multiple container image formats.
- No central daemon; runs containers directly.
- Website: rkt
7. containerd
- Description: An industry-standard core container runtime that is a part of the CNCF (Cloud Native Computing Foundation).
- Key Features:
- High performance and simplicity.
- Extensible with a clean and stable API.
- Used by Kubernetes and other container platforms.
- Website: containerd
8. Mesos
- Description: An open-source project to manage computer clusters.
- Key Features:
- Scalable and fault-tolerant resource management.
- Supports container orchestration.
- Integrates with various frameworks like Marathon for container orchestration.
- Website: Mesos
9. Nomad
- Description: A flexible, enterprise-grade workload orchestrator developed by HashiCorp.
- Key Features:
- Supports containerized, non-containerized, and batch applications.
- Multi-region and multi-cloud support.
- Easy integration with other HashiCorp tools like Consul and Vault.
- Website: Nomad
10. Singularity
- Description: A container platform designed for scientific and high-performance computing (HPC) environments.
- Key Features:
- Designed for reproducibility and mobility of compute.
- Supports unprivileged (rootless) containers.
- Integrates well with HPC environments and workflows.
- Website: Singularity
Comparing Docker Alternatives
Tool | Key Features | Suitable For |
---|---|---|
Podman | Daemonless, rootless containers, Docker CLI | Development and production |
Kubernetes | Automated deployment, scaling, management | Large-scale container orchestration |
OpenShift | Enterprise Kubernetes, CI/CD integration | Enterprise environments |
LXC | Lightweight, isolated Linux instances | Running multiple Linux systems |
CRI-O | Kubernetes integration, OCI standards | Kubernetes environments |
rkt | Security-focused, multiple image formats | Security-focused deployments |
containerd | High performance, Kubernetes integration | Core container runtime |
Mesos | Scalable resource management, container orchestration | Cluster management |
Nomad | Multi-region/cloud support, HashiCorp integration | Mixed workloads and orchestration |
Singularity | HPC focus, rootless containers | Scientific and HPC environments |
These alternatives offer various features that may better suit specific needs and use cases compared to Docker. Exploring these options can help you choose the best tool for your containerization and orchestration requirements.
Environment Specification
We are using a Ubuntu virtual machine with following specification.
- CPU – 3.4 Ghz (2 cores)
- Memory – 2 GB
- Storage – 40 GB
- Operating System – Ubuntu Server LTS 18.04
- Hostname – docker-01.sysadminlabs.com
- IP Address – 192.168.116.216 /24
- Admin User – ahmer
Update your Ubuntu Server
Connect with docker-01.sysadminlabs.com as ahmer user by using a ssh tool like PuTTY.
Update existing software packages by executing apt command.
$ sudo apt update
There are some package upgrades are available. Install these upgrades by using following command.
$ sudo apt upgrade
Install Docker on Ubuntu Server
Docker is available in apt repository, therefore, you can easily install it on Ubuntu server by using a single apt command.
$ sudo apt install docker.io
Enable and start Docker service.
$ sudo systemctl enable --now docker Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable docker Created symlink /etc/systemd/system/multi-user.target.wants/docker.service â /lib/systemd/system/docker.service.
Verify version of installed Docker software.
$ docker --version Docker version 18.09.7, build 2d0083d
Install Docker Compose on Ubuntu Server
Compose (or Docker Compose) is a software tool to define and run multi-container Docker applications. It uses YAML file to create, run and configure application services.
You can install docker-compose on your preferred Linux distro by using the following command.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 617 100 617 0 0 696 0 --:--:-- --:--:-- --:--:-- 695 100 16.3M 100 16.3M 0 0 551k 0 0:00:30 0:00:30 --:--:-- 636k
Grant execution permissions to all users on docker-compose executable.
$ sudo chmod +x /usr/local/bin/docker-compose
Create a soft link to docker-compose command in common binary path, so the command can be accessible from anywhere.
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Execute docker-compose command to check its version.
$ sudo docker-compose --version docker-compose version 1.25.4, build 8d51620a
Docker Compose has been installed successfully on Ubuntu Server 18.04 LTS.
Execute Basic Docker Commands
Search for Alpine Linux in Docker online registry (Docker Hub).
$ sudo docker search alpine NAME DESCRIPTION STARS OFFICIAL AUTOMATED alpine A minimal Docker image based on Alpine Linux⦠6038 [OK] mhart/alpine-node Minimal Node.js built on Alpine Linux 453 ... roribio16/alpine-sqs Dockerized ElasticMQ server + web UI over Al⦠7 [OK] cfmanteiga/alpine-bash-curl-jq Docker Alpine image with Bash, curl and jq p⦠5 [OK]
Pull the image of Alpine Linux using docker command.
$ sudo docker pull alpine Using default tag: latest latest: Pulling from library/alpine c9b1b535fdd9: Pull complete Digest: sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d Status: Downloaded newer image for alpine:latest
List Docker images that are locally available on our Ubuntu 18.04 server.
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE alpine latest e7d92cdc71fe 6 days ago 5.59MB
Create a Docker container in interactive mode using Alpine Linux image and execute some test commands on it.
$ sudo docker run -it --rm alpine /bin/sh / # uname -a Linux 40c0683c7989 5.0.0-38-generic #41-Ubuntu SMP Tue Dec 3 00:27:35 UTC 2019 x86_64 Linux / # cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.11.3 PRETTY_NAME="Alpine Linux v3.11" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://bugs.alpinelinux.org/" / # exit
Create a Docker container in detach mode from Alpine Linux image.
$ sudo docker run -d alpine 0ad0a833a2b3e0e1c6a9735f27e8849786708d23f7c9070645d2c55650903c02
Check list of recently executed containers.
$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0ad0a833a2b3 alpine "/bin/sh" About a minute ago Exited (0) About a minute ago mystifying_blackburn
Remove a container as follows.
$ sudo docker container rm 0ad0a833a2b3 0ad0a833a2b3
Remove an image that is locally available on our Ubuntu 18.04 server.
$ sudo docker rmi alpine Untagged: alpine:latest Untagged: alpine@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d Deleted: sha256:e7d92cdc71feacf90708cb59182d0df1b911f8ae022d29e8e95d75ca6a99776a Deleted: sha256:5216338b40a7b96416b8b9858974bbe4acc3096ee60acbc4dfb1ee02aecceb10
You have successfully installed Docker on Ubuntu 18.04 server and executed some basic commands thereon. You should also read our guide on how to install Docker on CentOS 8.
If you wish to learn more about containers then you should read Docker in Action (PAID LINK) by Manning Publications.
Final Thoughts
Installing Docker on Ubuntu Server 18 is a great way to streamline your application deployment and management. With Docker, you can easily create, deploy, and run applications in containers, ensuring consistency across multiple environments.
For a detailed, step-by-step guide on how to install Docker on Ubuntu Server 18, check out my Fiverr gig: Install & Configure Docker on Ubuntu Server. I provide expert assistance to help you set up Docker efficiently and effectively.
If you have any questions or need further support, feel free to reach out!