Close Menu
Linux All DayLinux All Day
    Facebook Bluesky Mastodon X (Twitter)
    Linux All DayLinux All Day
    • News
    • Operating Systems
      • Linux Distributions
      • Android-based OS
      • ChromeOS Alternatives
    • Software
      • Apps & Tools
      • Desktop Environments
      • Installation & Management
    • Tutorials
      • Linux Basic & Tips
      • System Optimization
      • Security & Privacy
    • Linux Gaming
      • Game News & Reviews
      • Emulators & Retro
      • Performance & Benchmarks
    • Comparisons
    Mastodon Bluesky Facebook
    Linux All DayLinux All Day
    Home - Tutorials - Linux Basic & Tips - What is Docker? The Ultimate Beginner’s Guide for Linux Users

    What is Docker? The Ultimate Beginner’s Guide for Linux Users

    It's the engine behind apps like Immich and Nextcloud. We explain what Docker is, why you need it, and how to install it on Fedora, Debian, and Arch.
    By Mitja Linux Basic & Tips November 13, 20257 Mins Read
    Share Facebook Bluesky Twitter Threads Reddit LinkedIn Telegram Tumblr Email Copy Link Pinterest
    Follow Us
    Facebook Mastodon Bluesky X (Twitter)
    A diagram showing the Docker logo and containers running on a Linux system, explaining what Docker is.
    linuxallday.com
    Share
    Facebook Twitter Bluesky Reddit Threads Tumblr Email Copy Link

    The “Magic Box” Everyone Is Talking About

    If you’ve spent any time in the Linux or self-hosting world, you’ve seen the word everywhere: “Just run it in Docker.

    To many newcomers, Docker sounds like a complex, scary tool for elite developers and system administrators. But what if I told you that Docker is actually the simplest way to run software? What if it’s the key to unlocking a world of powerful applications without ever worrying about “dependency hell” or “messing up” your system?

    This guide is your ultimate starting point. We’ll demystify what Docker is, explain why you, as a regular Linux user, should be excited about it, and then walk you through the correct way to install it on Fedora, Debian/Ubuntu, and Arch Linux.

     

    What is Docker? (The Simple Analogy)

    Let’s start by clarifying what Docker is not. It’s not a traditional Virtual Machine (VM).

    • A Virtual Machine (like VirtualBox or VMware) emulates an entire computer. It creates virtual hardware (CPU, RAM, hard drive) and then installs a full guest operating system (like Windows 11 running on your Fedora). This is “heavy,” uses a lot of resources, and takes time to boot. It’s like building an entire house just to cook one meal.
    • A Docker Container is something much smarter. It’s a lightweight, isolated “box” that contains only the application and its direct dependencies (e.g., a specific version of Python or Java). All these boxes run on the same kernel of your host Linux system. They don’t need their own OS. They are like individual hotel rooms that all share the building’s foundation and infrastructure but are completely isolated from each other.

    This is why Docker starts in a second and uses significantly less RAM and CPU.

    Why Should You, a Linux Desktop User, Care?

    Okay, so it’s light and fast. But why is that important to you?

    1. The “One-Command” App Installation

    Let’s look at the example of IMMICH (WHICH WE RECENTLY COVERED). To install it manually, you would have to:

    1. Install a specific version of Node.js.
    2. Install a PostgreSQL database.
    3. Install Redis (for caching).
    4. Configure all three to talk to each other.
    5. Install machine-learning libraries…

    With Docker? All of that is replaced by one command: docker compose up -d. And that’s it. The application is running.

    2. Perfect Isolation (No More “Dependency Hell”)

    Have you ever tried to install a program that said: “Error: needs libcrypto.so.1.1“, but your system already has libcrypto.so.3? This is “dependency hell.”

    Docker solves this. Because each app is in its own box, one app can use an old library version while another uses a new one, on the same system, without ever “seeing” or interfering with each other. Your host system (Fedora, Arch, …) stays perfectly clean.

    3. It’s Clean and Easy to Remove

    Did you install an app with Docker and you don’t like it anymore?

    • Without Docker: You’d be hunting for config files in /etc, data in /var/lib, and binaries in /usr/bin, hoping you cleaned it all up.
    • With Docker: docker compose down -v. The app, its data, and its networks are 100% removed. As if it never existed.

     4. Universal Consistency (It Just Works)

    Has a friend ever told you an app works on their Ubuntu, but not on your Fedora? Docker eliminates this. Because the app is packaged with everything it needs, it will run exactly the same on Fedora, Debian, Arch, a Raspberry Pi, or even on Windows/macOS.

    The 3 Magic Words You Need to Know

    Before we install, let’s look at three terms you will see everywhere.

    1. Image: This is the blueprint. It’s a file that contains everything needed to run an application—the code, libraries, and configuration. Example: immich/server:latest is the “image” name for the Immich server.
    2. Container: This is a running instance of an “image.” If the “image” is the recipe, the “container” is the cake you actually baked. You can run multiple “containers” from the same “image.”
    3. Docker Compose: This is the “construction manager.” Apps like Immich aren’t one thing; they are a stack (server, database, AI). docker-compose.yml is a file that tells Docker: “I need these three containers, connect them with this network, and make them work together.” For you as a user, this is by far the most important tool.

    How to Install Docker on Linux (The Right Way)

    Many distributions offer old, outdated versions of Docker in their main repositories. It is always best to use the official Docker repositories. Here are the instructions for the three main families.

    Note: The steps below are performed in the terminal. Copy and paste each command one by one.

     

    Option 1: Install Docker on Fedora

    On Fedora, we’ll add the official Docker repository and install docker-ce (Community Edition).

    1. Install dnf-plugins-core (if you don’t have it):
      Bash

      sudo dnf -y install dnf-plugins-core
      
    2. Add the official Docker repository:
      Bash

      sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
      
    3. Install Docker Engine and Compose Plugin:
      Bash

      sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      
    4. Start and enable the Docker service:
      Bash

      sudo systemctl start docker
      sudo systemctl enable docker
      

     

    Option 2: Install Docker on Debian / Ubuntu / Mint

    On Debian-based systems, we will also use Docker’s official repository to get the latest version.

    1. Install apt prerequisites:
      Bash

      sudo apt-get update
      sudo apt-get install ca-certificates curl gnupg
      
    2. Add Docker’s official GPG key:
      Bash

      sudo install -m 0755 -d /etc/apt/keyrings
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
      sudo chmod a+r /etc/apt/keyrings/docker.gpg
      
    3. Set up the repository:
      Bash

      echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
        $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
        sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      
    4. Install Docker Engine and Compose Plugin:
      Bash

      sudo apt-get update
      sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      
    5. On Debian/Ubuntu, the service typically starts automatically.

     

    Option 3: Install Docker on Arch Linux / Manjaro

    Arch makes things simple. Everything we need is in the official repositories.

    1. Install the packages:
      Bash

      sudo pacman -S docker docker-compose
      
    2. Start and enable the Docker service:
      Bash

      sudo systemctl start docker.service
      sudo systemctl enable docker.service
      

    The Most Important Post-Installation Step (Run Docker Without sudo)

    After a fresh install, you’ll notice you have to type sudo before every docker command. This is annoying and can lead to file permission issues.

    We fix this by adding your user to the docker group.

    1. Create the docker group (it should already exist on most systems, but just in case):
      Bash

      sudo groupadd docker
      
    2. Add your user to the group:

      (The $USER variable automatically inserts your username)

      Bash

      sudo usermod -aG docker $USER
      
    3. 🛑 CRITICAL STEP: The changes will not apply immediately. You must log out of your system and log back in, or simply reboot your computer.

    After you log back in, open a terminal and type docker ps. If you don’t get a “permission denied” error, you have succeeded!

    Your First Docker Commands (A Quick Test)

    Now that Docker is running, let’s try a few basic commands.

    • Check the version:
      Bash

      docker --version
      

      (You should see the Docker and Compose version)

    • Run “Hello World”: This is the official test container.
      Bash

      docker run hello-world
      

      (Docker will automatically download the hello-world “image” and run it. You will see a message confirming your installation is working.)

    • See what’s running:
      Bash

      docker ps
      

      (This command shows currently running containers. It will likely be empty, as hello-world already finished.)

    • See all containers (even stopped ones):
      Bash

      docker ps -a
      

      (Here you will see the hello-world container with the status “Exited”.)

    • The command you’ll use most (for Immich, etc.):
      Bash

      docker compose up -d
      

      (You must run this command in a folder containing a docker-compose.yml file. The -d flag means “detached” — run in the background.)

    Conclusion: Your New Superpower is Unlocked

    It might seem like a lot, but most of the installation is just copy-pasting. You do this process once, and then you forget about it.

    Docker isn’t scary. It’s an simplification tool. It’s the key that allows you to try hundreds of amazing open-source applications (like Immich, Pi-hole, Nextcloud, and thousands more) with a single command, without ever risking the stability or cleanliness of your main Linux system.

    You are now ready. The next time you see “Just run it in Docker,” you won’t frown—you’ll smile.


    Did you successfully install Docker? What’s the first application you’re going to run in a container? Share your experiences or questions in the comments below!

    Follow on Mastodon Follow on Bluesky
    Share. Facebook Twitter Bluesky Reddit Threads Telegram Email Copy Link

    Related post

    Did You Know? 5 Technical Linux Facts Most Professionals Miss

    December 7, 2025

    How to Install Visual Studio Code on Chrome OS Flex: The Official Engineering Method

    December 3, 2025

    How to Enable Linux Apps on Chrome OS Flex

    December 3, 2025
    Leave A Reply Cancel Reply

    → Switch to Linux Today
    • Facebook
    • Twitter
    • Mastodon
    • Bluesky
    More From Linuxallday
    Beyond the Grid: Mastering the Zen Flow of Bryce Tiles
    Mozilla Confirms Full “AI Kill Switch” for Firefox, Arriving in Early 2026
    Rescuezilla Review 2025: The ‘Undo Button’ for Your Entire PC
    Tails OS Review 2025: The Ultimate Amnesic System for Total Privacy
    Facebook X (Twitter) Mastodon Bluesky Threads RSS
    • About Us
    • Cookie Policy
    • Terms & Conditions
    • Privacy Policy
    • Disclosure & Disclaimer
    • Contact
    • Our Authors
    • Cookie Policy (EU)
    © 2026 Designed by FeedCrux

    Type above and press Enter to search. Press Esc to cancel.

    Manage Consent
    To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
    Functional Always active
    The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
    Preferences
    The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
    Statistics
    The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
    Marketing
    The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
    • Manage options
    • Manage services
    • Manage {vendor_count} vendors
    • Read more about these purposes
    View preferences
    • {title}
    • {title}
    • {title}