поднимаем докер -

sudo apt install docker-compose

Чтобы не писать sudo перед каждой командой:

sudo usermod -aG docker $USER
newgrp docker

портейнер -

docker volume create portainer_data
docker run -d \
-p 100.13.33.00:9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest

адрес нужен только если сервер выходит в инет напрямую. порт 8000 обычно не нужен только для удаленки

обновление портейнера

docker pull portainer/portainer-ce:latest
docker stop portainer
docker rm portainer
docker run -d \
-p 100.13.33.00:8000:8000 \
-p 100.13.33.00:9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest

Заметка по переезду БД мускл бекапа копируем файл бекапа -

docker cp /db/pay.sql mysql:/tmp/pay.sql

восстановдени из бекапа

time docker run --rm -v /db:/db firebirdsql/firebird:5.0.3 \
  gbak -c -v /db/фс.fbk /db/фс.fdb -user sysdba -password masterkey

достаем файлы

docker run --rm \
  -v /db:/out \
  firebirdsql/firebird:5.0.3 \
  bash -c 'cp /opt/firebird/databases.conf /out/databases.conf'

для запуска агента

docker run -d \
--name portainer_agent \
--restart=always \
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent

Докер игнорит правила ufw по сути, так что на внешнем сервере вероятно стоит использовать https://github.com/chaifeng/ufw-docker

Авторестар если простой докер

services:
  autoheal:
    image: willfarrell/autoheal
    restart: unless-stopped
    environment:
      - AUTOHEAL_CONTAINER_LABEL=all
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  myapp:
    image: myimage:latest
    labels:
      autoheal: "true"
    healthcheck:
      test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:8080/ || exit 1"]
      interval: 30s
      timeout: 5s
      retries: 3