The reliable way to install Docker on Rocky Linux 9 is to use Docker’s RHEL-family RPM repository. That route installs the Docker Engine daemon, CLI, containerd runtime, Buildx, and the Docker Compose plugin as one compatible package set. Run sudo systemctl enable --now docker to start the daemon immediately and enable it at boot, then verify the complete client-to-daemon path with sudo docker run hello-world.
Antihost offers VPS plans with one-click Docker, NVMe storage and a 14-day free trial.
This guide covers prerequisites, package conflicts, repository and offline alternatives, Compose, non-root use, updates, removal, data persistence, and the security decisions behind each option.
As an Amazon Associate I earn from qualifying purchases.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →What you need before installing
Use a Rocky Linux 9 host with administrative sudo access and working DNF networking. The repository method assumes the machine can reach Docker’s RHEL-family package repository during installation and later updates.
- A running Rocky Linux 9 system.
- A user permitted to run
sudo. - Working DNS and outbound HTTPS for DNF.
- Enough disk space for the engine, images, containers, volumes, and build cache you plan to keep.
Rocky Linux can run native Docker-style container workloads, but packages from another container stack can conflict with Docker’s runtime. Check what is installed before changing a production host, especially if it already runs Podman workloads.
#1 Best Overall
- BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
- EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
- COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
- LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
- WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
Repository installation versus manual RPMs
Docker documents the RHEL-family repository workflow as the convenient method for installation and upgrades. Manual RPM installation is useful when a host is air-gapped or when an administrator has a controlled package mirror, but it shifts dependency management and update work to you.
| Consideration | Docker repository | Manual RPM files |
|---|---|---|
| Best fit | Connected Rocky Linux 9 systems that need normal DNF updates | Air-gapped hosts or tightly controlled internal mirrors |
| Update effort | Use DNF’s normal upgrade workflow and review available versions | Download, transfer, verify, and install each required RPM and dependency |
| Version pinning | Possible, but you must review available package versions before selecting one | Explicit file selection gives tight control over the installed build |
| Signature verification | DNF can prompt for Docker’s repository signing key | Verify every transferred RPM and its signing information in your package process |
| Rollback | Use your DNF and repository version-management procedures | Keep matching RPMs and dependency versions; rollback is an administrator-managed operation |
| Ongoing maintenance | Lower routine effort | Higher effort, particularly for security updates and dependency changes |
The commands below use the repository method. Docker also documents downloading RPMs for disconnected environments; do not mix random package builds from unrelated repositories with this package set.
Remove packages that conflict with Docker Engine
Docker’s RHEL-family instructions identify these packages as potential conflicts: docker, docker-client, docker-client-latest, docker-common, docker-latest, docker-latest-logrotate, docker-logrotate, docker-engine, podman, and runc. Removing a package is not the same as deleting Docker’s storage: package removal does not automatically erase images, containers, volumes, or data under /var/lib/docker/.
Review the transaction DNF proposes. On a host where Podman is required, stop and evaluate that dependency instead of blindly accepting a removal.
sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc
If none of those packages is installed, DNF may report that there is nothing to do. That is a normal result; continue with the repository setup.
Install Docker Engine and Compose from Docker’s repository
-
Install the DNF plugin that provides repository-management commands.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.sudo dnf -y install dnf-plugins-core -
Add Docker’s RHEL repository definition. This is the repository file used by the command:
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repoThe URL is Docker’s RHEL-family repository endpoint; use it exactly rather than substituting an unverified mirror.
Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)- WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
- AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
- PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
- ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
- COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
-
Install the engine, command-line client, runtime, Buildx, and Compose plugin.
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
If DNF asks you to accept a Docker GPG key, verify the displayed fingerprint before accepting it:
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35. If the fingerprint does not match, decline the key and investigate the repository configuration.Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallSpecial offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
Start the daemon now and configure it to start during boot:
sudo systemctl enable --now docker
The final command combines two systemd actions. --now starts Docker immediately; enable records the boot-time dependency. If you deliberately do not want Docker starting automatically, use sudo systemctl start docker instead and omit enable.
What each installed package does
| Package | Role | What you use it for |
|---|---|---|
docker-ce |
Docker Engine daemon technology | Runs and manages containers, images, networks, and volumes |
docker-ce-cli |
Docker command-line client | Provides the docker command that sends requests to the daemon |
containerd.io |
Container runtime component | Handles the lower-level container lifecycle used by Engine |
docker-buildx-plugin |
Buildx builder plugin | Provides modern image-building workflows through Docker’s builder interface |
docker-compose-plugin |
Compose plugin | Adds the docker compose subcommand for multi-container applications |
The Compose package uses the current space-separated syntax, docker compose, rather than relying on a separate legacy executable.
Verify that the daemon and client work
Run the checks in this order so you can distinguish a systemd problem from a client, registry, or image problem.
-
Inspect the service state:
sudo systemctl status dockerLook for an active running service. Press
qto leave the status view. -
Check the client and server versions:
sudo docker versionThis should show both client and server sections. A client-only response generally means the CLI is present but cannot reach the daemon.
Rank #3
SaleLISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men | Office Gifts for Women, iPhone Stand, Gadgets for Men, Office Decor, Gaming Desk Accessories for Samsung Fold 8, Switch, iPad- Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
- Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
- Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
- ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
- Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
-
Inspect daemon information:
sudo docker infoThis displays storage, runtime, container, image, and configuration details known to the daemon.
-
Perform the complete smoke test:
sudo docker run hello-worldDocker downloads the
hello-worldtest image, creates and runs a container, prints a confirmation message, and exits. The command tests the CLI, the local daemon, image retrieval, and basic container startup in one operation.Free tools Windows power users keep installed
One-click scans. No signup required.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
If systemctl status shows an inactive or failed service, fix the systemd or package issue before troubleshooting registry access. If the service is active but hello-world cannot download its image, check DNS, outbound firewall rules, proxy settings, and the host’s access to the registry.
Run Docker without typing sudo
By default, the Docker daemon runs as the root user and listens on a privileged Unix socket. The normal convenience method is to add your login account to the docker group:
sudo usermod -aG docker "$USER"
newgrp docker
docker run hello-world
usermod changes the account’s supplementary groups. newgrp docker starts a shell with the new membership immediately; a full logout and login does the same for all of your sessions. Confirm the non-root path with docker run hello-world after the group refresh.
| Method | Convenience | Privilege scope | Compatibility and complexity |
|---|---|---|---|
sudo docker ... |
Requires sudo for routine commands |
Each command is explicitly authorized through sudo | Broad compatibility; simplest to reason about on shared systems |
docker group |
No repeated sudo after group refresh |
Group membership grants root-level control of the Docker daemon | Easy to operate, but treat every member as having root-equivalent access |
| Rootless Docker | Designed to run the daemon without root-equivalent group access | Restricts daemon and container privileges according to the rootless setup | Requires additional configuration and can have compatibility or feature trade-offs |
Docker explicitly warns that membership in the docker group grants root-level privileges. A user who can control the daemon can normally create a container that accesses host resources, so do not add accounts casually on a multi-user or production server. If your threat model requires daemon access without root-equivalent group membership, investigate Docker’s rootless mode instead of treating group membership as a security boundary.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Repair a permission error in the Docker client directory
If you previously ran Docker with sudo, files in ~/.docker may be owned by root. After switching to the group method, commands can then fail with a permission error even though the daemon is healthy. Inspect the directory ownership and restore it to your login account before retrying. Do not make the entire home directory writable by unrelated users just to silence the error.
Install and smoke-test Docker Compose
The docker-compose-plugin package installed with Engine supplies Compose. Confirm that the plugin is available:
Rank #4
- Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
- Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
- 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
- Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
- USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
docker compose version
A small project can verify that Compose creates a service, publishes a port, and removes the project cleanly. The following is an illustrative smoke-test pattern; inspect the output on your host rather than treating it as a guaranteed test result.
-
Create a working directory:
mkdir -p ~/docker-smoke-test && cd ~/docker-smoke-test -
Create
compose.yamlwith one web service:cat > compose.yaml <<'YAML' services: web: image: nginx:alpine ports: - "8080:80" YAML -
Start the service in the background:
docker compose up -d -
Check its state:
docker compose ps -
Request the published port locally:
curl http://127.0.0.1:8080 -
Remove the service and its project resources when finished:
Recommended Free Tools
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.docker compose down
The mapping 8080:80 publishes container port 80 on host port 8080. If another process already owns port 8080, change the host-side number and use that same number in the curl command. Publishing a port also creates a firewall-exposure decision; keep test services bound to loopback when they do not need to be reachable from other machines.
Updates, version selection, and air-gapped operation
For a repository installation, use Rocky Linux’s normal DNF upgrade workflow and review available versions before pinning a particular Docker release. Pinning can improve repeatability, but it also means you must monitor security advisories and deliberately move the pin when a fix is required.
On an air-gapped host, Docker documents downloading the required RPM files on a connected system, transferring them through your approved channel, verifying signatures, and installing them locally. Preserve a complete, matching set for docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, and docker-compose-plugin; a partial set can leave dependency failures or an Engine/CLI mismatch. Maintain the same change records and rollback plan you would use for any system daemon.
Uninstall packages without accidentally deleting container data
To remove a repository installation, Docker lists these packages: docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, and docker-compose-plugin. Rootless extras, if installed separately, are removed as their own packages.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsRemoving those RPMs does not automatically remove images, containers, volumes, or custom configuration. That behavior is useful when reinstalling, but it can surprise administrators who expect a clean wipe. Before uninstalling, record what must be retained and back up application data stored in volumes.
Docker commonly stores Engine data under /var/lib/docker/; containerd data may be under /var/lib/containerd/. Deleting either directory is destructive. Treat removal of those directories as a separate, explicit administrative decision, confirm that no required containers or volumes remain, and use an approved backup and retention process first.
Best Value
- Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
- Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
- Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
- Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
- Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
Operational and security checks after installation
Protect the Docker socket
The Docker Unix socket is a high-privilege control point. Restrict membership in the docker group, protect shell access, and avoid exposing the daemon socket over an unauthenticated network interface. A container-management account should be governed like an account with root-equivalent host access.
Control container logs
Docker’s default json-file logging driver can grow without bounds. For long-running services, configure log rotation, use Docker’s local logging driver, or send logs to a remote logging system. Decide retention and disk limits before deploying workloads that emit continuous output.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Review firewall and published ports
Installing Docker does not answer which services your host should expose. Review host firewall rules, cloud security groups, and Compose port mappings separately. Publish only the ports required by the application, bind administrative or test endpoints to loopback where possible, and document every externally reachable service.
Enable only the boot behavior you need
systemctl enable --now docker is appropriate for a host that should run containers after every reboot. If the machine is used only for occasional builds or testing, start Docker on demand with systemctl start docker and leave boot enablement off. Revisit that choice when the host’s role changes.
Troubleshooting common installation failures
DNF reports package conflicts
Read the proposed transaction and identify which listed package is blocking Docker. If podman or another runtime is required by an existing service, stop and plan the migration rather than accepting removal blindly. After the conflicting package is removed or the coexistence plan is validated, rerun the Engine installation.
The GPG key prompt shows a different fingerprint
Do not accept an unexpected key. Recheck the repository URL, DNS, proxy, and any internal mirror or content filter. Compare the displayed fingerprint with 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 and investigate the discrepancy with the repository administrator.
The service is installed but not running
Run sudo systemctl status docker. If you intentionally skipped automatic startup, use sudo systemctl start docker. If startup fails, inspect the status message and recent system logs, then correct the reported configuration, storage, or dependency issue before retrying.
docker version shows no server section
The CLI is present but cannot reach the daemon. Confirm that Docker is active, that the current user has permission to access the socket, and that you are using the expected context and environment. Test with sudo docker version; if that works while the unprivileged command fails, refresh group membership or repair ~/.docker ownership.
hello-world cannot download its image
Separate local daemon health from registry connectivity. Check sudo docker info, DNS resolution, outbound HTTPS, proxy configuration, and firewall policy. A successful systemctl status docker does not prove that the host can reach an image registry.
Compose is an unknown command
Verify that docker-compose-plugin was installed and run docker compose version. If the package transaction was interrupted, reinstall the plugin from the same Docker repository used for Engine, then retry the version check.
Free tools Windows power users keep installed
One-click scans. No signup required.
The Compose example cannot bind port 8080
Another process is already using the host port, or a firewall policy blocks access. Choose an unused host port, update the left side of the Compose mapping, and request that new port with curl. Keep the service stopped while you decide whether it should be reachable beyond localhost.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

