# 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
```
