π³ 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
- Remove old Docker versions (if any):
bash
sudo apt remove docker docker-engine docker.io containerd runc
- Install Docker dependencies:
bash
sudo apt update
sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release
- 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
- 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
- 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
- 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)
- Create a volume for Portainer:
bash
docker volume create portainer_data
- 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.