```{index} разное ``` # Docker --- разное ```{index} внешние ссылки ``` ## Полезные ссылки ```{seealso} [Compose file reference / Compose Specification](https://docs.docker.com/compose/compose-file/) ``` ```{index} dnf, repo ``` ## Установка docker Для CentOS 8: ```bash dnf config-manager \ --add-repo=https://download.docker.com/linux/centos/docker-ce.repo dnf install docker-ce ``` Для других версий: ```bash vim /etc/yum.repos.d/docker.repo [docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://download.docker.com/linux/centos/8/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg yum install docker-ce docker-ce-cli containerd.io ``` В конце обязательно включить автозапуск сервиса: ```bash systemctl enable --now docker ``` ```{index} docker; docker-compose ``` ## Установка docker-compose Из репозитория докера (плагин для докера): ```bash dnf install docker-compose-plugin vim ~/.bashrc # Добавим в .bashrc alias для вызова docker-compose # ниже приведённого комментария # # User specific aliases and functions alias docker-compose='/usr/libexec/docker/cli-plugins/docker-compose' ``` Классический `docker-compose`: ```bash curl -L \ "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" \ -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose ``` ## Установка ctop ```bash curl -L -o /usr/local/bin/ctop \ https://github.com/bcicen/ctop/releases/download/v0.7.5/ctop-0.7.5-linux-amd64 chmod +x /usr/local/bin/ctop ln -s /usr/local/bin/ctop /bin/ctop ``` ```{index} useradd ``` ## Создание пользователя для Docker ```bash useradd --create-home --base-dir /opt --shell /sbin/nologin \ --groups docker docker_user --comment docker_user ``` ## Docker networking ```{index} overlay ``` ### Создание сети overlay ```bash docker network create \ --driver=overlay --subnet=10.11.0.0/16 \ --gateway=10.11.0.2 --attachable \ app-net ``` ```{index} ingress, внешние ссылки ``` ### Смена адресов ingress ```{seealso} [Customize the default ingress network](https://docs.docker.com/network/overlay/#customize-the-default-ingress-network) ``` ```{index} harbor ``` ## docker login в Harbor Команда для логина в registry (Harbor) с использованием файла с токеном: ```bash cat .harbor_token | docker login \ --username robot\$prod --password-stdin \ registry.appworks.ru ``` ```{index} registry ``` ## Docker registry (не Harbor) Команда для запуска: ```bash docker run -d \ -p 5000:5000 \ --restart=always \ --name registry \ -v /srv/registry/cert/:/certs \ -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key \ registry:2 ``` ```{index} docker; docker swarm, swarm, логирование ``` ## Дамп логов Удобная команда для дампа логов службы сворма в текстовый файл: ```bash MY_NAME=postcards2020_worker; \ MY_TIME=20m; \ sudo docker service logs --since ${MY_TIME} \ ${MY_NAME} > ${MY_NAME}_`date +%F_%H-%M-%S`_${MY_TIME}.log 2>&1 \ ### dump_logs ``` :MY_NAME: имя службы :MY_TIME: с какого момента нужны логи: - можно относительное: `5m` == с 5 минут назад и до текущего момента; - можно абсолютное: `2021-08-21T13:00:00` Сначала задаём файл для вывода, затем `2>&1` -- перенаправляем stderr в текущее значение stdout, то есть в заданный ранее файл. **Порядок важен, наоборот не сработает!** :### dump_logs: комментарий в конце позволит легко найти команду в bash history для повторного использования. ```{index} docker; docker swarm, swarm, tx-checksum, nmcli, внешние ссылки ``` ## Исправление проблемы ядра 240 - отключение tx-checksum ```{note} Вероятнее всего, данная проблема была специфична для виртуальных машин VMWare. ``` ```bash nmcli con modify ens192 \ ethtool.feature-tx-checksum-ip-generic off && \ nmcli con up ens192 ``` Такой вариант (через `nmcli`) --- сохраняется после перезагрузок. Обычный `ethtool` --- не сохраняется, нужно добавлять в init скрипты. --- Проверить текущее состояние: ```bash ethtool -k ens192 | grep tx-checksum ``` --- ```{seealso} [RHEL8 - Configuring ethtool offload features](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-ethtool-offload-features_configuring-and-managing-networking) ```