Skip to content

🐳 Docker + Portainer Setup

🧰 System Overview

  • Purpose: Run Docker containers (e.g., MkDocs, Nextcloud, Immich)
  • Goals:
  • Install Docker and Docker Compose
  • Set up Portainer for easy container management
  • Ensure services auto-start on boot without user login

πŸ“¦ Docker Installation

  1. Remove old Docker versions (if any):

bash sudo apt remove docker docker-engine docker.io containerd runc

  1. Install Docker dependencies:

bash sudo apt update sudo apt install \ ca-certificates \ curl \ gnupg \ lsb-release

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

  1. Add Docker’s repository:

bash 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

  1. Install Docker Engine and Compose plugin:

bash sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

  1. Enable and start Docker service:

bash sudo systemctl enable docker sudo systemctl start docker


πŸ‘€ (Optional) Allow Current User to Use Docker Without sudo

sudo usermod -aG docker $USER

You must log out and back in for this to take effect.


🧱 Install Portainer (Web UI for Docker)

  1. Create a volume for Portainer:

bash docker volume create portainer_data

  1. Run Portainer container:

bash docker run -d \ -p 9000:9000 \ -p 8000:8000 \ --name=portainer \ --restart=unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce


🌐 Access Portainer

  • Open your browser and go to:
    http://<your-host-ip>:9000

  • Set up your admin account

  • You now have full container management via a graphical interface

πŸ› οΈ Useful Commands

Action Command
Check Docker version docker --version
Check Compose version docker compose version
List running containers docker ps
Restart Docker service sudo systemctl restart docker
Check Docker logs journalctl -u docker.service
Restart Portainer docker restart portainer

βœ… Status Check

Verify everything is working:

docker version
docker compose version
docker ps

You should see the portainer container running and accessible.