{{tag>vagrant chef shell puppet salt ansible docker devops virtual alpine}}

====== Docker ======

{{https://habrastorage.org/files/67f/73a/551/67f73a551a254c19854adf3b4665a7bb.png?300}}


====== Установка ======

===== Ubuntu =====

<code bash>
$ apt update && \
apt install ca-certificates curl gnupg lsb-release -y && \
mkdir -p /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt update && \
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
</code>

===== Debian =====

<code bash>
$ apt update && \
apt install ca-certificates curl gnupg lsb-release -y && \
mkdir -p /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt update && \
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
</code>

====== Docker ======

<code bash>
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ newgrp docker
</code>

====== Docker Swarm ======

Если Docker Swarm создается
<code bash>
$ docker swarm init
# В вответ docker swarm join --token SWMTKN-1-54k2k418tw2j0juwm3inq6crp4ow6xogswihcc5azg7oq5qo7e-a3rfeyfwo7d93heq0y5vhyzod 172.31.245.104:2377
# Эту команду необходимо будет выполнить на каждой присоединяймой ноде
</code>

Если необходимо присоеденить к уже существующему
<code bash>
$ docker swarm join-token worker
# В вответ docker swarm join --token SWMTKN-1-54k2k418tw2j0juwm3inq6crp4ow6xogswihcc5azg7oq5qo7e-a3rfeyfwo7d93heq0y5vhyzod 172.31.245.104:2377
# Эту команду необходимо будет выполнить на каждой присоединяймой ноде
</code>

====== Настройки ======

=== Log drivers: управление логами ===

nano /etc/docker/daemon.json
<code json>
{
  "log-driver": "local",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
</code>
====== Мониторинг ======

  * [[software:monitoring:promtail-loki-grafana]]
  * [[software:monitoring:fluent-bit-loki-grafana]]
  * [[software:monitoring:fluent-bit-fluentd-loki-grafana]]
