Jump directly to main content

Docker Install (inc. Portainer)



Docker's pretty cool. Containers are a simple way to, well containerise applications. They're essentially a virtual machine with less overhead.

This guide assumes you have a debian install, either physical or a VM (I recommend a VM).

Installing Docker

The following is the script I use for my docker installations. Copy/Paste or throw into a file and execute it.

sudo apt-get install ca-certificates curl gnupg

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

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

sudo apt-get update

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

This will download add the required keyring, download the correct docker version for your PCs arhitecture, and the sources, and download the required packages.

With this docker is now installed and ready to go!

Installing your first container, Portainer

Portainer is a web-GUI for managing docker containers, so I figure it's a good place to start.

Docker Run

Not recommended. Use compose.

docker run -d \
-p 9443:9443 \
--name portainer \
--restart unless-stopped \
-v data:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer-ce:latest

Docker Compose

My preferred way of setting up, and running containers. It makes it more managable, and easier to follow. There are a few more 'steps' here, but that's more-so for managing the containers than a requirement.

First off we'll create a 'docker' directory, with a 'portainer' directory within it in our home directory.

mkdir -p ~/docker/portainer && cd ~/docker/portainer && touch docker-compose.yml

Next from within the portainer directory, open up/create docker-compose.yml. Use your preferred text editor here, I like vim, so I'll be using it in the snippet.

Paste the following into the file, and save it.

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data:/data
    ports:
      - 9443:9443

Next we'll run docker compose, which will do as the run command did, pulling the container (if not already done so), and running it.

sudo docker compose up -d

Accessing Portainer

Once this has been run successfully you should be able to access portainer using the IP of the docker host, or localhost (if running docker on the same PC).

https://localhost:9443

https://192.168.0.100:9443