Docker is a free and open-source tool that allows you to build and run containers on your Linux system. It allows you to create lightweight and portable application images which run on any platform.
Docker Compose is a free and open-source tool that allows you to define, visualize, and run multiple applications in a containerized environment. It uses a YAML file to define different applications and services. After defining the services in the YAML file, you can start all of them using a single command.
In this post, we will show you how to install Docker and Docker Compose in Rocky Linux 8.
- A server running Rocky Linux 8 on the Atlantic.Net Cloud Platform
- A root password configured on your server
Step 1 – Create Atlantic.Net Cloud Server
First, log in to your Atlantic.Net Cloud Server. Create a new server, choosing Rocky Linux 8 as the operating system with at least 4GB RAM. Connect to your Cloud Server via SSH and log in using the credentials highlighted at the top of the page.
Once you are logged in to your server, run the following command to update your base system with the latest available packages.
dnf update -y
Step 2 – Install Docker CE
By default, the Docker package is not included in the RockyLinux default repository, so you will need to create a Docker CE repo.
You can create it using the following command:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Next, install Docker CE by running the following command:
dnf install docker-ce -y
Once Docker is installed, start the Docker service and enable it to start at system reboot.
systemctl start docker systemctl enable docker
You can verify the status of the Docker service using the following command:
systemctl status docker
● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2021-10-12 14:32:46 UTC; 3s ago Docs: https://docs.docker.com Main PID: 10474 (dockerd) Tasks: 8 Memory: 32.0M CGroup: /system.slice/docker.service └─10474 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Oct 12 14:32:45 RockyLinux8 dockerd: time="2021-10-12T14:32:45.723802786Z" level=error msg="Failed to built-in GetDriver graph btrfs /v> Oct 12 14:32:46 RockyLinux8 dockerd: time="2021-10-12T14:32:46.156090877Z" level=warning msg="Your kernel does not support cgroup blkio> Oct 12 14:32:46 RockyLinux8 dockerd: time="2021-10-12T14:32:46.156145109Z" level=warning msg="Your kernel does not support cgroup blkio> Oct 12 14:32:46 RockyLinux8 dockerd: time="2021-10-12T14:32:46.156457478Z" level=info msg="Loading containers: start." Oct 12 14:32:46 RockyLinux8 dockerd: time="2021-10-12T14:32:46.573226503Z" level=info msg="Default bridge (docker0) is assigned with an> Oct 12 14:32:46 RockyLinux8 dockerd: time="2021-10-12T14:32:46.742379418Z" level=info msg="Loading containers: done." Oct 12 14:32:46 RockyLinux8 dockerd: time="2021-10-12T14:32:46.771012571Z" level=info msg="Docker daemon" commit=79ea9d3 graphdriver(s)> Oct 12 14:32:46 RockyLinux8 dockerd: time="2021-10-12T14:32:46.771196748Z" level=info msg="Daemon has completed initialization" Oct 12 14:32:46 RockyLinux8 systemd: Started Docker Application Container Engine. Oct 12 14:32:46 RockyLinux8 dockerd: time="2021-10-12T14:32:46.808331498Z" level=info msg="API listen on /var/run/docker.sock"
To verify the Docker version with additional information, run the following command:
You will get the following output:
Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Build with BuildKit (Docker Inc., v0.6.3-docker) scan: Docker Scan (Docker Inc., v0.8.0) Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 20.10.9 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: 5b46e404f6b9f661a205e28d59c982d3634148f8 runc version: v1.0.2-0-g52b36a2 init version: de40ad0 Security Options: seccomp Profile: default Kernel Version: 4.18.0-305.7.1.el8_4.x86_64 Operating System: Rocky Linux 8.4 (Green Obsidian) OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 3.649GiB Name: RockyLinux8 ID: QF4C:I2ML:INX7:RKY7:2X5A:YEQB:UJJW:LS35:LPMZ:LIKS:2WB2:P33U Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false
Step 3 – Verify Docker Installation
After installing Docker, you will need to test whether it’s working.
You can use Docker’s hello-world container to test Docker.
docker run hello-world
This will download the hello-world docker image to your system:
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:9ade9cc2e26189a19c2e8854b9c8f1e14829b51c55a630ee675a5a9540ef6ccf Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
You can verify the downloaded image using the following command:
You will get the following output:
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 2 weeks ago 13.3kB
Step 4 – Install Docker Compose
By default, the latest version of Docker Compose is not available in the Rocky Linux default repository, so you will need to download its binary to your system.
First, install the curl command utility with the following command:
dnf install -y curl
Next, download the latest version of Docker Compose with the following command:
curl -L https://github.com/docker/compose/releases/download/v2.0.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Next, set executable permissions on the Docker Compose binary:
chmod +x /usr/local/bin/docker-compose
Next, verify the Docker Compose version using the following command:
You will get the following output:
Docker Compose version v2.0.1
Step 5 – Remove Docker and Docker Compose
If you want to remove the Docker package from your system, first stop the Docker service using the following command:
systemctl stop docker
Next, remove the Docker package using the following command:
dnf remove docker-ce -y
To remove Docker Compose, delete the Docker Compose binary using the following command:
rm -rf /usr/local/bin/docker-compose
In the above guide, we explained how to install Docker and Docker Compose on RockyLinux 8. You can now start creating a YAML for your application and deploy it in the containerized environment. Give it a try on your dedicated server from Atlantic.Net!