2016-10-27 5 views
4

все.Как включить доступ к Docker API из Windows с помощью Docker Toolbox (докер-машины)

Запуск последней панели инструментов Docker с использованием новейшего Oracle VirtualBox с ОС Windows 7 в качестве операционной системы хоста.

Я пытаюсь включить не-TLS-доступ к удаленному API-интерфейсу Docker, поэтому я мог бы использовать клиент Postman REST, работающий в Windows, и использовать API-интерфейс докеров, работающий на докер-машине в VirtualBox. Я обнаружил, что если в конфигурацию Docker входит -H tcp://0.0.0.0:2375, это может сделать трюк, отображающий API на порте 2375 устройства докеров, но для жизни я не могу найти, где эта конфигурация сохраняется и может быть изменена.

Я сделал docker-machine ssh из CLI Toolbox, а затем пошел и поместил вокруг файла /etc/init.d/docker, но никаких изменений в файле не осталось docker-machine restart.

Я смог найти ответ на этот вопрос для Ubuntu и OSX, но не для Windows.

Спасибо.

+0

Вот ответ: http://stackoverflow.com/questions/26424338/docker-daemon-config-file-on-boot2docker-docker-machine-docker-toolbox/26781047#26781047 Привет –

+0

@CarlosRafaelRamirez, да средний повторяющийся вопрос? если это так, вы можете отметить это. – Rao

+0

Вопрос не в том. Речь идет не о той же теме. Но может быть разрешено в том же файле. Важно сохранить этот вопрос, чтобы люди искали это решение, отличное от другого, которое может найти dns. –

ответ

2

@CarlosRafaelRamirez упомянул нужное место, но я добавлю несколько подробностей и предоставил более подробные пошаговые инструкции, поскольку разработчики Windows часто не владеют экосистемой Linux.

Отказ от ответственности: следующие шаги позволяют ударить Docker Remote API от хоста Windows, но, пожалуйста, имейте в виду две вещи:

  1. Это не должно быть сделано в производстве, как это делает Докер машину очень не безопасный.
  2. Текущее решение отключает большую часть docker-machine и все функциональные возможности CLI docker. docker-machine ssh остается работоспособным, заставляя его SSH в докерную машину для доступа к командам docker.

Решение Теперь, вот шаги, необходимые для переключения Docker API для не-TLS порт. (Docker имя машины считается «по умолчанию». Если имя компьютера имеет другое имя, вам нужно будет указать его в командах ниже.)

  1. Start «Docker Quickstart Терминал». Он запускает оболочку Bash и является местом, где будут выполняться все следующие команды. Запустите команду docker-machine ip и отметьте IP-адрес хост-машины докера. Затем сделайте
  2. docker-machine ssh
  3. cd /var/lib/boot2docker
  4. sudo vi profile Это начинается «VI» редактора в режиме повышенной привилегии, необходимые для редактирования файла «профиль», где настройки хоста Docker есть. (Если в качестве пользователя Windows вы не знакомы с vi, вот на нем есть супер-базовый курс крушения. Когда файл открыт в vi, vi не находится в режиме редактирования. Нажмите «i», чтобы начать редактирование. внесите изменения. После того, как вы внесли все изменения, нажмите Esc, а затем ZZ, чтобы сохранить изменения и выйти из vi. Если вам нужно выйти из vi без сохранения изменений, после Esc введите :q! и нажмите Enter. ":" включает режим командной строки vi, и команда «q!» означает выход без сохранения. Подробная информация команды vi - here.)
  5. Используя vi, измените DOCKER_HOST на DOCKER_HOST='-H tcp://0.0.0.0:2375' и установите DOCKER_TLS=no. Сохраните изменения, как описано выше.
  6. exit, чтобы выйти из сеанса SSH.
  7. docker-machine restart

После doocker машина перезагрузки, ваш sould быть в состоянии поразить докер API URL, как http://dokerMachineIp:2375/containers/json?all=1 и получить действительный JSON обратно.

Это конец шагов, необходимых для достижения главной цели.

Однако, если в этот момент вы попытаетесь запустить docker-machine config или docker images, вы увидите сообщение об ошибке, указывающее, что клиент CLI докеры пытается добраться до Docker через старые настройки порта/TLS, что понятно. Что ожидали, не мне, хотя, является то, что даже после того, как я выполнил все Getting Started направления, и побежал export DOCKER_HOST=tcp://192.168.99.101:2375 и export DOCKER_TLS_VERIFY=0, в результате чего

$ env | grep DOCKER 
DOCKER_HOST=tcp://192.168.99.101:2375 
DOCKER_MACHINE_NAME=default 
DOCKER_TLS_VERIFY=0 
DOCKER_TOOLBOX_INSTALL_PATH=C:\Program Files\Docker Toolbox 
DOCKER_CERT_PATH=C:\Users\USERNAME\.docker\machine\machines\default 

результат был тот же:

$ docker-machine env 
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.101:2376" 

Если вы видите проблема с тем, как я изменил переменные среды, чтобы указать Docker CLI на новый адрес хоста Docker, прокомментируйте.

Чтобы обойти эту проблему, используйте команду docker-machine ssh и выполните команды docker после этого.

Смежные вопросы