Ответы пользователя по тегу Docker
  • Можно ли в Gitlab CI для manual job передавать дополнительыне переменные?

    gecube
    @gecube
    системный администратор, программист... все дела..
    > В идеале было бы если бы разрабочтик в manual джобе мог бы указать какие версии деплоить, но я не нашёл как это сделать в Gitlab CI.

    В самой мануальной джобе НИЧЕГО задавать нельзя. Но есть два варианта выкрутиться:

    1. задавать переменные при инстанцировании пайплайна

    z8wtip1mzzpkuwhzqjjdyr88gp8.png

    2. сделать интерфейс, через который можно будет триггерить создание пайплайна / джобы по API со всеми нужными переменными - например, при помощи Rundeck
    Ответ написан
    Комментировать
  • Ка запускать контейнеры Docker по очерёдности?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Вопрос очень сложный. Скорее всего, если Вы хотите зависимость по порядку запуска - Вы что-то делаете не так.
    Принципиально вариантов три
    1. использовать костыли вроде wait-for-it.sh - которые будут держать контейнер в состоянии запущен, но сервис внутри не стартанул, пока зависимость не стартанет.
    2. Вообще плюнуть на зависимости. Ну, рестартуется зависимый сервис - раз на пятый, когда зависимость стартанет, запустится. Лишь бы правильно перезапуск был сделан. Но это может быть неприемлемо, если в докере что-то тяжёлое, вроде джава машины, которая долго прогревается.
    3. Использоваться внешние решения. Начиная от "давайте не будет использовать restart: always в докере и засунем docker-compose up в systemd юнит" и кончая скриптами или оркестраторами.
    Ответ написан
    Комментировать
  • Могу ли я использовать Docker CE в комерческом проекте?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Про такие ограничения не слышал )
    Ответ написан
    Комментировать
  • Что не так с транслированием портов и нэймингов в docker-compose сборке?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Ответ простой - потому что к монге надо подсоединяться как к mongo:27017

    27018 - это для подключения извне
    Ответ написан
    2 комментария
  • Есть ли сейчас в проблемы с Docker, как писали про него раньше?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Проблемы есть.
    Если совсем кратко:

    1. Разработка - разрабатывайте в докере. Это позволит сохранять высокий темп разработки и переносимость окружений между разными разработчиками. Есть до сих пор нерешённые нюансы, вроде скорости работы ФС в Windows, MacOS X, нюансы с сетью, но в, в целом, это действительно очень удобно.
    2. Сборка софта. И тестирование. Опять же пускай будет в докере. Никаких особых проблем.
    3. Продуктовая среда. А тут нужно думать. Докер как дополнительный компонент и снижает быстродействие, и вносит дополнительную точку отказа и сложность в отладке. Если докеризация и универсализация окружения с разработкой действительно финансово и технически выгодна - идите в это. Если нет... То есть куча альтернатив.
    Ответ написан
    Комментировать
  • Как поднять node.js + mysql через docker-compose?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Build идет от текущего каталога. Файл с package в Dockerfile указан относительно каталога src
    Это и есть ошибка
    Вероятнее всего - проще всего решить ее добавить context: ./src в докер-компоуз
    И очень рекомендую ознакомиться с понятием docker context
    Ответ написан
  • Как текст записать в файл?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Вероятнее всего на этапе сборки попросту не определена переменная $USER.
    Что еще хуже - можно при старте контейнера из образа переопределить пользователя и такой докер образ станет бессмысленным:

    docker run -u <айди пользователя> <имя образа> whoami

    решение? Написать docker-entrypoint.sh (указать его как entrypoint), который и будет создавать этот файл в процессе запуска контейнера.
    Ответ написан
    Комментировать
  • Как установить nvidia-docker2 без доступа в интернет?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Во-первых, не надо рыть половину интернета. И качать пакеты с каких-то сомнительных сайтов.
    Во-вторых, установленные на хосте пакеты имеют следующие версии (это рабочая комбинация с CUDA 10.2):

    ii  libnvidia-container-tools                         1.0.1-1                                         amd64        NVIDIA container runtime library (command-line tools)
    ii  libnvidia-container1:amd64                        1.0.1-1                                         amd64        NVIDIA container runtime library
    ii  nvidia-container-runtime                          2.0.0+docker18.09.3-1                           amd64        NVIDIA container runtime
    ii  nvidia-container-runtime-hook                     1.4.0-1                                         amd64        NVIDIA container runtime hook
    ii  nvidia-docker2                                    2.0.3+docker18.09.3-1                           all          nvidia-docker CLI wrapper


    В третьих, эти пакеты доступны через оф. репо https://nvidia.github.io/nvidia-docker/
    К сожалению, прямые ссылки на бинарные файлы по какой-то причине скрыты, но при наличии компьютера с доступом в интернет это не является проблемой...

    До кучи - всегда можно собрать руками нужные деб-файлы из репозиторием с исходниками, например, - https://github.com/NVIDIA/libnvidia-container
    Ответ написан
    Комментировать
  • Как вести локальную разработку на Docker+Heroku?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Я бы рекомендовал вообще смотреть в сторону проекта dokku. Это по сути попытка сделать хероку-подобное окружение локально, при помощи докер демона на машине разработчика. Уверен, что разработчики этого чудесного проекта подумали о возможности деплоит код и на heroku
    Ответ написан
    Комментировать
  • Как поменять время в контейнере?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Чтобы изменить время для конкретной программы (и временно!) - используйте библиотеку faketime
    Ответ написан
    Комментировать
  • Как организовать портативную (переносную, мобильную) среду для разработки?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Краткий ответ - рассмотрите использование Vagrant - для разработки

    > мне пришлось заново устанавливать все IDE, фотошопы, сервисы, ноды и тд. Затем все это настраивать, докачивать плагины, понять что ты не помнишь где найти лицензионные ключи и тд

    К сожалению, универсального ответа именно для решения ЭТОЙ проблемы нет - либо использование облачных сервисов (вроде GitLab), либо резервирование окружения своей рабочей машины (бекапы, снапшоты)
    Ответ написан
    Комментировать
  • Почему не могу достучаться до консоли MariaDB в Docker контейнере?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Потому что для утилиты mysql нужен терминал. Попросту вместо docker exec ... используйте docker exec -it ...
    Ответ написан
  • Какое выбрать ядро linux для docker/k8s?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Любой ответ будет opinionated. Я бы сказал, что даже более того - выбор операционной системы и ядра абсолютно бессмысленен без обсуждения выбора дистрибутива. Потому что крупные игроки вроде OpenShift и Rancher тестируются только на закрытом перечне версий и вариантов. И Вы будете вынуждены использовать их, иначе отгребать и исправлять баги самостоятельно. И тот же ранчер на дебиан взрывается на установке, хотя с центос и убунту (любой разумной версией) - все отлично.
    Более того - есть специальные оптимизированные под kubernetes дистрибутивы вроде CoreOS. Сейчас его активно перепиливают в Fedora CoreOS. Посмотрим, что получится. Такие же минималистичные дистрибутивы есть у Vmware, opensuse и многих других
    В остальном - конечно, чем свежее - тем лучше.
    Ответ написан
    Комментировать
  • Как подключить приватную сеть фирмы через VPN в облачный Kubernates?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Если kubernetes опубликован на внешнем адресе, то можно использовать возможность port-forward утилиты kubectl. Далее легко лазить внутри кластера и щупать сервисы в нем, как будто они доступны напрямую.
    В общем - для начала нужно ответить на вопрос ЗАЧЕМ НУЖЕН доступ в кластер - для разработчиков (ad-hoc задачи вроде тестирования, настройки) или чтобы обеспечить связность сервисов в кубернетесе и в офисной сети
    Ответ написан
  • Не запускается сервис в docker-compose?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Замечания:

    1. очень разумно свести все сервисы в одну докер сеть и в явном виде ее описать (вроде такого)
    2. расставить хелсчеки
    3. настроить порядок запуска через depends_on
    4. необходимо разобраться в том, по какому имени доступен сервис БД
    DOLI_DB_HOST: mysql
    должно быть
    DOLI_DB_HOST: db
    Ответ написан
    Комментировать
  • Docker Multi-stage билды не видят друг друга?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Если нужно два сервиса засунуть в один образ, то решением, к сожалению, является написание своего докерфайла. Который по структуре будет выглядеть как FROM какой-то из двух образов, а далее нужно скопировать (естественно, что с головой) инструкции по сборке второго образа в общий Dockerfile. Либо вообще самому наследоваться от базового образа с операционной системой и вручную его наполнять всеми необходимыми компонентами (php, node etc)

    В простых случаях работает вариант вроде такого

    FROM jrottenberg/ffmpeg:4.1-alpine as ffmpeg

    FROM python:3.7-alpine3.8

    RUN apk add --no-cache --update \
    libgcc \
    libstdc++ \
    ca-certificates \
    libcrypto1.0 \
    libssl1.0 \
    libgomp \
    expat \
    git

    COPY --from=ffmpeg /usr/local /usr/local

    .... a lot of stuff ....

    ENTRYPOINT ["python", "capture_data.py"]


    Но это если компоненты не нужно регистрировать в системе каким-либо образом, а достаточно нахождение библиотек и исполняемых файлов по определенным путям.
    Ответ написан
    Комментировать
  • Ошибка при запуске Docker. Проблемы с python?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Проблема не в докере, а в том, что в убунте сломаны пакеты docker-compose и docker-credential-secretservice
    Решается через установку docker-compose при помощи pip install (плохой вариант) или - лучше - скачиванием с оф.сайта и копированием бинарного файла в /usr/local/bin

    Еще можно использовать docker-compose в виде докер контейнера
    Ответ написан
    Комментировать
  • Как подключиться по ssh к контейнеру Docker?

    gecube
    @gecube
    системный администратор, программист... все дела..
    Такая задача появилась в связи с запуском гитлаба в докер контейнер.

    Решений нашлось два:
    1. Выделить на хост дополнительный айпи адрес, настроить хостовый ssh на основной ip, а дополнительный отдать сервисам gitlab'а (порты 22, 443, 80)
    2. второй вариант - использование проксирования ssh. Вроде такого Смысл в том, что при соединении с хост машиной под реквизитами определенного пользователя (git), весь трафик направляется в контейнер. Все остальные юзеры соединяются напрямую к хост машине и для них открывается на ней оболчка
    Ответ написан
  • Как правильно организовать разделяемый монтируемый раздел (shared mounting volumes) в docker?

    gecube
    @gecube
    системный администратор, программист... все дела..
    1. Особого смысла в bind mount нет, т.к. именованный volume точно так же доступен через фс хоста в каталоге /var/lib/docker/volumes/
    2. если очень хочется обеспечить порядок монтирования - оберните запуск контейнеров в systemd unit, создание и подключение точки монтирования mount --bind на хосте тоже в юнит и настройке между ними порядок запуска. Докер, к сожалению, сам по себе эту проблему не решает. И если уж на то пошло - а Вы точно уверены, что Вам нужен докер? В простых случаях chroot окружение решает проблему изоляцию, а в systemd завезли namespaces и изоляцию. И даже полноценные контейнер вроде nspawn, управляемые через machinectl
    Ответ написан
    Комментировать
  • Не запускается systemd в контейнере docker?

    gecube
    @gecube
    системный администратор, программист... все дела..
    systemd засосывать в докер контейнер - плохая идея. Теоретически это возможно сделать, но там очень много дополнительных действий

    https://www.hippolab.ru/zapuskaem-systemd-v-docker...

    С другой стороны, можно использовать легковесную init систему вроде tini в контейнере или использовать демон супервизора.

    Касательно заббикса - так вообще возьмите штатный образ от разработчиков заббикса или с докер хаба и не изобретайте велосипед
    Ответ написан
    Комментировать