Intereting Posts
Коррекция докеров: (7) Не удалось подключиться к порту localhost 80: соединение отклонено Докер WCF net.pipe В чем разница между новым инструментом Habitat от Docker и Chef? Как я могу использовать gitlab и / или докер для своего веб-приложения? Magento 2 на пользователя и разрешения для файлов с док-станцией Mgt Development Environment Удаленная отладка PyCharm в контейнере докеров Как контейнер-докер находит локальный IP-адрес хоста на Mac? Сервер Rancher не находит агента ранчо на том же сервере Добавить изображение на мою базовую фотографию докера Запуск elasticsearch с докером Динамическая балансировка нагрузки Docker с помощью Nginx Ошибка обновления версии Ubuntu с помощью Docker и ElasticBeanstalk Докер с общим разъемом X11: почему он может «запускать» Firefox за пределами контейнера? Как создать изображение докера в jenkins Создание загрузочного файла начальной загрузки, который автоматически предоставляет файлы операционной системе хоста

Выполнение команд Docker с помощью скрипта bash внутри контейнера

Я пытаюсь автоматизировать развертывание с помощью webhooks в концентраторе Docker на основе этого руководства . Один контейнер запускает веб-приложение на порту 80. На том же хосте я запускаю еще один контейнер, который прослушивает почтовые запросы из концентратора докеров, запуская хост для обновления изображения Webapp. Пост-запрос запускает скрипт bash, который выглядит так:

echo pulling... docker pull my_username/image docker stop img docker rm img docker run --name img -d -p 80:80 my_username/image 

Тестовая полезная нагрузка успешно запускает скрипт. Тем не менее, контейнер регистрирует следующие жалобы:

 pulling... app/deploy.sh: line 4: docker: command not found ... app/deploy.sh: line 7: docker: command not found 

Кажется, что сценарий bash не получает доступ к узлу неявно. Как действовать?

Я попытался, но не работал: при запуске контейнера слушателя я добавил IP-адрес хоста, как это, на основе документов :

 HOSTIP=`ip -4 addr show scope global dev eth0 | grep inet | awk '{print\$2}' | cut -d / -f 1` docker run --name listener --add-host=docker:${HOSTIP} -e TOKEN="test654321" -d -p 5000:5000 mjhea0/docker-hook-listener 

Аналогично, я заменил команду -add-host на --add-host=dockerhost:$(ip route | awk '/docker0/ { print $NF }') на основе этого предложения .

Ни докеры, ни сокеты-докеры не будут присутствовать в контейнере по умолчанию (зачем?).

Вы можете решить это довольно легко, установив двоичный и сокет из хоста при запуске контейнера, например:

 $ docker run -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock debian docker --version Docker version 1.7.0, build 0baf609 

Кажется, вы немного смущены тем, как работает Докер. Я не совсем понимаю, что вы подразумеваете под «доступ к узлу неявно» или как вы думаете, что это сработает. Подумайте о контейнере как изолированной и эфемерной машине, полностью отделенной от вашего хоста, что-то вроде быстрой виртуальной машины.