# Installing Docker on Linux

This page provides quick install instructions for manually setting up Docker on different flavors of Linux. This is normally handled automatically by the Gateway installer script.

### Amazon Linux 2

{% code overflow="wrap" %}

```
# Engine from amazon-linux-extras
sudo yum update -y
sudo amazon-linux-extras install -y docker
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
newgrp docker

# Install Compose v2 plugin so `docker compose` works
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo curl -SL "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64" \
  -o /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

# Verify
docker --version
docker compose version

# Start the service and set to run on reboot
sudo service docker start
sudo chkconfig docker on
```

{% endcode %}

***

### Amazon Linux 2023

```
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo sed -i 's|\$releasever|9|g' /etc/yum.repos.d/docker-ce.repo

sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
newgrp docker

sudo service docker start
sudo chkconfig docker on

# Verify
docker --version
docker compose version
```

***

### Debian

It is typically recommended to remove any existing Docker or docker-compose that is installed on the Debian machine, and install the official Docker packages (instead of the Debian packages).

The commands to delete the existing Docker version is below:

{% hint style="danger" %}
Don't run this unless you're sure that you want to remove all existing docker installation files, images, containers, etc. This will delete everything.&#x20;
{% endhint %}

{% code overflow="wrap" lineNumbers="true" %}

```
sudo systemctl stop docker docker.socket containerd 2>/dev/null
sudo apt remove --purge -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin docker.io podman-docker runc
sudo apt remove docker-compose
sudo apt autoremove --purge -y
sudo rm -rf /var/lib/docker /var/lib/containerd /etc/docker
sudo rm -f /etc/apt/sources.list.d/docker.list /etc/apt/keyrings/docker.gpg
```

{% endcode %}

After removing Docker, it would be a good idea to reboot the device.

```
sudo reboot
```

Now, install the official Docker packages using the commands below.

{% code overflow="wrap" %}

```
# 1. Install prerequisites
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release

# 2. Add Docker’s GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 3. Add Docker’s official repo
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian $(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. Install Docker CE, CLI, Containerd, and Compose plugin
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin

# 5. Enable and start Docker
sudo systemctl enable --now docker

# 6. Verify install
docker --version
docker compose version

# to run docker without sudo
sudo usermod -aG docker $USER
newgrp docker
```

{% endcode %}

***

### Ubuntu

```
# Install prerequisites
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release

# Add Docker’s GPG key
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

# Add Docker’s official Ubuntu repo
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Install Docker CE, CLI, Containerd, and Compose plugin
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin

# Enable and start Docker
sudo systemctl enable --now docker

# Allow running Docker without sudo
sudo usermod -aG docker $USER
newgrp docker

# Verify install
docker --version
docker compose version
```

***

### RedHat 10 in AWS

```
# Install Docker Engine + Compose v2 on RHEL 10 (AWS)

# 1) Fully update OS and reboot into the latest kernel
sudo dnf -y update
sudo reboot
```

after reboot...

```
# 2) Ensure kernel modules for the running kernel are installed
sudo dnf -y install "kernel-modules-$(uname -r)" "kernel-modules-extra-$(uname -r)"

# 3) Add Docker CE repository
sudo dnf -y install yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

# 4) Install Docker Engine, containerd, and Compose v2 plugin
sudo dnf -y install \
  docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

# 5) Enable and start Docker
sudo systemctl enable --now docker

# 6) Allow non-root Docker usage (optional)
sudo usermod -aG docker $USER
newgrp docker

# 7) Verify
docker --version
docker compose version
sudo docker ps
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/en/keeperpam/privileged-access-manager/references/installing-docker-on-linux.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
