Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
VGSOURCES
Get listed

containersPATCH 2026.10.16

How to Install and Use Docker on Rocky Linux 9

By VGSources Team 9 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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
Sale
Gaoye Blue Light Blocking Glasses | Anti UV Ray, For Computers & Gaming, Square Frame, Eyewear for Men and Women
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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

  1. 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
  2. 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.repo

    The 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
  3. 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
  4. 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.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  5. 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Inspect the service state:

    sudo systemctl status docker

    Look for an active running service. Press q to leave the status view.

  2. Check the client and server versions:

    sudo docker version

    This should show both client and server sections. A client-only response generally means the CLI is present but cannot reach the daemon.

    Rank #3
    Sale
    LISEN 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)
  3. Inspect daemon information:

    sudo docker info

    This displays storage, runtime, container, image, and configuration details known to the daemon.

  4. Perform the complete smoke test:

    sudo docker run hello-world

    Docker downloads the hello-world test 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • 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.

  1. Create a working directory:

    mkdir -p ~/docker-smoke-test && cd ~/docker-smoke-test
  2. Create compose.yaml with one web service:

    cat > compose.yaml <<'YAML'
    services:
      web:
        image: nginx:alpine
        ports:
          - "8080:80"
    YAML
  3. Start the service in the background:

    docker compose up -d
  4. Check its state:

    docker compose ps
  5. Request the published port locally:

    curl http://127.0.0.1:8080
  6. Remove the service and its project resources when finished:

    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.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Removing 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
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.

containersDockerDocker ComposeLinux administrationRocky Linux 9

Leave a reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.