Docker

Docker - это мини виртуальные машины.
Все команды нужно запускать с sudo, а чтобы от этого избавиться необходимо пользователя добавить в группу docker:

sudo usermod -aG docker $USER

Создать группу docker можно следующей командой:

sudo groupadd docker

Просмотр контейнеров

По умолчанию команда docker ps выведет только запущенные контейрены

    bednyakov@ubuntu:~$ docker ps
    CONTAINER ID   IMAGE                COMMAND      CREATED        STATUS        PORTS                                       NAMES
    9d68b29b76a2   giggio/openvpn-arm   "ovpn_run"   33 hours ago   Up 33 hours   0.0.0.0:1194->1194/udp, :::1194->1194/udp   openvpn

Для того, чтобы посмотреть все активные контейнеры и которые были запущенны ранее, необходимо запустить команду docker ps -a

    bednyakov@ubuntu:~$ docker ps -a
    CONTAINER ID   IMAGE                COMMAND      CREATED        STATUS                   PORTS                                       NAMES
    9d68b29b76a2   giggio/openvpn-arm   "ovpn_run"   33 hours ago   Up 33 hours              0.0.0.0:1194->1194/udp, :::1194->1194/udp   openvpn
    77ab3dcdc598   hello-world          "/hello"     3 weeks ago    Exited (0) 3 weeks ago                                               optimistic_wu

Запуск контейнеров

Контейнер запускается командой run.
Основные флаги при запуске контейнера:

  • docker -it - запустит контейнер интерактивно
  • docker -rm - удалит контейнер после остановки
  • docker -d - запустит контейнер в фоновом режиме
  • docker -p 8080:80 - проброс локального порта (8080) в сеть докера
  • docker -v ~/local/path:/path/workdir/container - монтирование данных в контейнер

Например:

docker run -d -p 555:80 --name NAME -v ~/PATH:/usr/share/nginx/html nginx

Докер попытается найти образ nginx локально, при его отутсвии скачает его с docker hub,
далее он запустит контейнер в фоновом режиме, на локальном порту 555, с именем NAME и данные для отображения возьмет из локальной директории ~/PATH.

Основные команды

Остановить контейнер
docker stop id
Запустить остановленный контейнер контейнер
docker start id
Удалить контейнер
docker rm id
Удалить все остановленные контейнеры
docker rm $(docker ps -a -f status=exited -q)
Просмотр образов контейнеров локально на Вашем устройстве (image)
docker images
Удалить образ контейнера
docker rmi id
Удалить все образы
docker rmi $(docker images -a -q)
Для удаления неиспользуемых образов выполнить команду
docker image prune --all
Выполнить вход в контейнер
docker exec -it id_container /bin/bash
Сделать коммит контейнера
docker commit id new_name

создаст копию image с другим именем и тегом

docker tag oldname:v1 newname:v2

Использование Volumes

Создать Volume
docker volume create --name volume-name
Просмотреть созданные volumes
docker volume ls
Вывести подробную информацию
docker volume inspect volume-name

Автозапуск контейнера

При выполнении необходимо указать флаг --restart.

  • --restart no - Значение по умолчанию
  • --restart on-failure - Перезапустить контейнер, если он останавливается из-за ошибки
  • --restart always - Перезапускать всегда, если контейнер остановлен. Если остановили его вручную, он перезапустится после перезагрузки службы Docker (restart docker)
  • --restart unless-stopped - Если остановить контейнер, то он не перезапустится даже после перезапуска службы

При запуске контейнера синтаксис имеет следующий вид

docker run --restart (значение флага) (имя контейнера)

Если контейнер уже создан, то необходимо сделать update.

docker update --restart always id

Удалить кэш сборки

Для просмотра использовании дискового пространства выполнить команду docker system df

    vlad@ubuntu-hp:$ docker system df
    TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
    Images          5         2         2.406GB   1.76GB (73%)
    Containers      3         0         1.877MB   1.877MB (100%)
    Local Volumes   4         0         52.59MB   52.59MB (100%)
    Build Cache     0         0         0B        0B

Для очистки кэш необходимо выполнить

docker builder prune --all

В моем случае удалилось 0B

    vlad@ubuntu-hp:~$ docker builder prune --all
    WARNING! This will remove all build cache. Are you sure you want to continue? [y/N] y
    Total reclaimed space: 0B

Установка Portainer

Необходимо создать volume

docker volume create portainer_data

Запустим портейнер следующей командой

    docker run -d -p 9000:9000 \
--name portainer \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer