Machine: Использование docker-machine для импорта хостов с использованием --driver = generic и / или --url не работает.

Созданный на 23 мая 2015  ·  62Комментарии  ·  Источник: docker/machine

Привет народ
Это не проблема. Прошу прощения, если это неправильное место, чтобы задать этот вопрос. Если это не то место, пожалуйста, укажите мне правильное место.

Я понимаю, что мы можем использовать докер-машину для подключения к разным хостам с помощью драйверов, таких как Virtualbox, драйвер облачного провайдера и т. Д. Если у меня уже есть хост, на котором запущен Docker внутри baremetal Linux, как нам интегрировать это с докер-машиной? Без докер-машины я мог бы сделать то же самое, запустив демон Docker на определенном порту и подключившись извне от клиента докера к ip и порту демона докера. В docker-machine есть возможность создать хост без какого-либо драйвера, это для этого? Я не мог найти, как использовать его для подключения.

благодаря
Шринивас

drivegeneric kinbug

Самый полезный комментарий

@nathanleclaire Есть поводу ? Я пытаюсь понять, как подключиться к хосту Docker, работающему в Microsoft Azure, который я создал с другого компьютера, используя docker-machine . Прямо сейчас у меня нет решений.

Все 62 Комментарий

Привет @smakam , я считаю, что вы ищете драйвер url : http://docs.docker.com/machine/#adding -a-host-without-a-driver

Привет @nathanleclaire
Спасибо за ответ.
Я просмотрел ссылку, которую вы упомянули, и попробовал следующее, безуспешно.

Сначала я попробовал без TLS:
На машине с Ubuntu я сделал это, чтобы запустить агент докера:
sudo docker -d -H unix: ///var/run/docker.sock -H tcp: //192.168.56.101 : 2376 и

В Windows, где у меня была установлена ​​докер-машина, я сделал следующее:
$ docker-machine create --url = tcp: //192.168.56.101 : 2376 custom6
← [34mINFO ← [0m [0000] «custom6» был создан и теперь является активной машиной.
$ docker-machine ls
ИМЯ АКТИВНЫЙ ДРАЙВЕР СОСТОЯНИЕ URL SWARM
custom6 * нет tcp: //192.168.56.101 : 2376

Я получаю такую ​​ошибку:
$ docker-машина env custom6
← [31mFATA ← [0m [0000] открыть C: \ Users \ srmakam.docker \ machine \ machines \ custom6ca.pem: системе не удается найти указанный файл.

Не уверен, что докер-машина применяет TLS. Я попытался запустить агент докера с сертификатом и ключом и попытался с клиентом докера, и с этим тоже не повезло.

благодаря
Шринивас

По сути, мы действительно требуем TLS в нашей текущей форме. Если вы настроили свой собственный CA и сертификаты / ключи, я думаю, вы могли бы использовать их через параметры --tls-ca-cert , --tls-ca-key gloabl для Docker Machine. @ehazlett Есть комментарии?

Привет

Я пробовал использовать TLS, но все равно не могу заставить его работать, не знаю, чего мне не хватает:
Я запустил докер на моем хосте Ubuntu:
sudo / usr / bin / docker -d --tlsverify --tlscacert =

/ca.pem --tlskey =/key.pem --tlscert =/cert.pem --host = unix: ///var/run/docker.sock --host = tcp: //0.0.0.0 : 2376

Затем я попытался создать хост-докер-машину без драйвера:
докер-машина --tls-client-cert =

/cert.pem --tls-ca-cert =/ca.pem --tls-client-key =/key.pem create --url = tcp: //: 2376 на заказ3

Когда я попытался увидеть среду, я получил следующую ошибку:
$ docker-machine env custom3
← [31mFATA ← [0m [0000] открыть C: \ Users \ srmakam.docker \ machine \ machinescustom3ca.pem: системе не удается найти указанный файл.

благодаря
Шринивас

Скорее всего, вы захотите использовать существующий CA, клиент и т. Д. Для всего, что связано с машиной, поскольку настройки --tls-ca-cert т. Д. Являются глобальными.

Что касается вашего демона докеров, вы хотите использовать сертификат / ключи CA и сервера - в приведенном выше примере вы используете сертификат CA, но клиентский ключ и сертификат. Вам понадобится что-то вроде:

docker -d --tlsverify --tlscacert ca.pem --tlscakey ca-key.pem --tlscert server.pem --tlskey server-key.pem

@ehazlett
Я попытался использовать глобальные настройки в каталоге "certs" для создания docker-machine, указав параметры в командной строке, но он все равно жалуется на "ca.pem", отсутствующий в машинах /\ каталог.
Как мне получить server.pem и server-key.pem? Сгенерировать?

Мне удалось подключиться между клиентом докера и агентом докера на отдельной машине с помощью TLS без использования докер-машины.

благодаря
Шринивас

Можете ли вы показать используемые аргументы командной строки? Если вы укажете, что машина сертификатов должна просто их использовать. Если нет, то это ошибка :)

Привет @ehazlett
Сначала я запустил docker agent так:
sudo / usr / bin / docker -d --tlsverify --tlscacert = / home / xxx / .docker / machine / certs / ca.pem --tlskey = / home / xxx / .docker / machine / certs / key.pem --tlscert = / home / xxx / .docker / machine / certs / cert.pem --host = unix: ///var/run/docker.sock --host = tcp: //0.0.0.0 : 2376

Затем я запустил клиент-докер-машину так:
docker-machine --tls-ca-cert = / home / xxx / .docker / machine / certs / ca.pem --tls-client-key = / home / xxx / .docker / machine / certs / key.pem - -tls-client-cert = / home / xxx / .docker / machine / certs / cert.pem create --url = tcp: //0.0.0.0 : 2376 custom3

Я получил эту ошибку при настройке среды:
xxx @ ubuntu : ~ $ docker-machine env custom3
откройте /home/xxx/.docker/machine/machines/custom3/ca.pem: нет такого файла или каталога

Здесь я запускаю агент докера и докер-машину на одной машине с Ubuntu. Я получаю аналогичную ошибку при запуске агента докера в Ubuntu и докер-машины в Windows.

благодаря
Шринивас

Вы не должны использовать key.pem и cert.pem для движка Docker. Движку нужна пара ключ / сертификат сервера (их создаст машина).

Что касается среды, как вы создали машину custom3 ? Похоже, что во время создания что-то пошло не так, если этот файл не существует.

Привет @ehazlett
Как мне запустить Docker Engine? Насколько я понимаю, докер-машина требует использования TLS.

Так я создал машину custom3. Это не дало мне никаких ошибок.
docker-machine --tls-ca-cert = / home / xxx / .docker / machine / certs / ca.pem --tls-client-key = / home / xxx / .docker / machine / certs / key.pem - -tls-client-cert = / home / xxx / .docker / machine / certs / cert.pem create --url = tcp: //0.0.0.0 : 2376 custom3

Должен ли я создавать пару серверный ключ / сертификат вручную, как если бы драйвер использовался с докер-машиной?

благодаря
Шринивас

@smakam, это должно быть правильно. Он должен сгенерировать ключ сервера на основе этого существующего центра сертификации. Я проведу небольшое тестирование, чтобы увидеть, есть ли проблема.

@smakam Есть

@nathanleclaire Я все еще не могу заставить его работать. Я даже пробовал использовать docker-machine 3.0 с общей процедурой драйвера, упомянутой здесь (http://blog.docker.com/2015/06/docker-machine-0-3-0-deep-dive/)
Вот что упоминается:
докер-машина создать -d общий \
--generic-ssh-user ubuntu \
--generic-ssh-key ~ / Downloads / manual_created_key.pub \
--generic-ip-address 12.34.56.78 \
джунгли

Я предполагаю, что .pub - это опечатка, и нам нужно предоставить закрытый ключ. Я получил 2 вида ошибок на 2 разных хостах:

Случай 1:
Импорт ключа SSH ...
Ошибка при создании машины: статус выхода 1
Вам нужно будет проверить поставщика, чтобы убедиться, что машина и связанные с ней ресурсы были правильно удалены.

случай 2:
Импорт ключа SSH ...
Ошибка при получении команды SSH, чтобы проверить, запущен ли демон: статус выхода 1
Ошибка при получении команды SSH, чтобы проверить, запущен ли демон: статус выхода 1

кстати, где хранятся подробные журналы докер-машины?
Я пробовал использовать как докер-машину для Windows, так и для Linux.

благодаря
Шринивас

Та же проблема.
Общие способы --url и -d не работают.

Я попробовал те же шаги, что и исходный плакат, и получил аналогичную проблему, после чего я попробовал общий драйвер и столкнулся с ошибкой, аналогичной случаю 1 (CentOS 7).

Та же проблема. Нельзя использовать --url и указать сертификат.

Могу я предложить команде Docker написать короткое руководство, которое пошагово проведет нас, это было бы очень полезно.

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

+1 за вопрос.
Я пытался использовать docker-machine create --url= с моей существующей настройкой докера на удаленном хосте, но безуспешно. DM не может получить TLS от $HOME/.docker/machine/machines/<name>/ca.pem .

Та же проблема. Я пробовал те же шаги, но до сих пор не сгенерировал сертификат / ключи сервера.
докер-машина версия 0.4.0
Докер версии 1.8.0

Та же проблема. Я пробовал те же шаги, но до сих пор не сгенерировал сертификат / ключи сервера.
докер-машина версия 0.4.1
Докер версии 1.8.1

@csokun @ miracle-in-sunday @narqo Обычно предполагается, что с помощью --url вы «приносите свои собственные сертификаты», хотя я признаю, что этот фрагмент кода томился, поэтому он может быть сломан.

Если вы хотите, чтобы сертификаты и ключи создавались автоматически, попробуйте драйвер generic : https://docs.docker.com/machine/drivers/generic/

Если это не работает для вашего варианта использования, могу я попросить вас подать отдельную проблему с подробным описанием конкретных шагов, которые вы предпринимаете, и результатов, которые вы видите?

Благодаря!

Привет, ребята! Вы пробовали указать --virtualbox-hostonly-cidr? У меня работали:

BartSlaman @ VLRNB176 ~
$ docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.99.100/24" dev4
Создание виртуальной машины VirtualBox ...
Создание ключа SSH ...
Запуск VirtualBox VM ...
Запуск ВМ ...
Чтобы узнать, как подключить Docker к этому компьютеру, запустите: C: \ Program Files (x86) \ Git \ bindocker-machine env dev4

BartSlaman @ VLRNB176 ~
$ docker-машина env dev4
экспорт DOCKER_TLS_VERIFY = "1"
экспорт DOCKER_HOST = " tcp: //192.168.99.101 : 2376"
экспорт DOCKER_CERT_PATH = "C: \ Users \ BartSlaman.docker \ machine \ machines \ dev4"
экспорт DOCKER_MACHINE_NAME = "dev4"

С уважением
Барт Сламан

Есть новости по этой проблеме? Я пробовал --url с --tls- *, но получил ошибку «open /Users/user/.docker/machine/machine/ss/ca.pem нет такого файла или каталога». Использую докер-машину версии 0.4.1

То же самое здесь, но другая ошибка при создании:

Импорт ключа SSH ...
Ошибка SSH cmd!
команда: sudo hostname internal && echo "internal" | sudo tee / etc / hostname
ошибка: статус выхода 1
вывод: sudo: нет tty и не указана программа askpass

А затем при запуске eval "$ (docker-machine env internal)":
открыть /Users/marlon/.docker/machine/machines/internal/ca.pem: нет такого файла или каталога

Это означает, что сертификаты не создаются.

Забавно, я могу подключиться по ssh к машине, на которой запущен «docker-machine ssh internal».

Мне удалось заставить --url работать и указать на существующий движок Docker в DigitalOcean, созданный с помощью Docker Machine.

Чтобы использовать --url или драйвер none , я просто скопировал существующую папку ~/.docker/machine/machines/dobox/ на машине, которую я использовал для создания хоста, и удалил cert.pem , key.pem , id_rsa.pub , id_rsa и config.json (оставляя ca.pem , server.pem и server-key.pem ). Затем я сгенерировал новую пару клиентских сертификатов и ключей (https://docs.docker.com/articles/https/, начиная с «Для аутентификации клиента») внутри только что созданного каталога и скопировал его на машину, на которой я был пытаюсь подключиться из. Наконец, я добавил удаленный хост, используя docker-machine create --url=tcp://SOME_IP:2376 dobox и переместил сертификаты туда, где их ожидает Docker Machine: ~/.docker/machine/machines/dobox/ . Папка уже должна быть там и содержать config.json , поэтому вы просто добавляете свои сертификаты. Я не пытаюсь изменить схему TLS flags / auth, которую использует Docker, а именно:

--tlsverify \
--tlscacert="/home/roberto/.docker/machine/machines/dobox/ca.pem" \
--tlscert="/home/roberto/.docker/machine/machines/dobox/cert.pem" \
--tlskey="/home/roberto/.docker/machine/machines/dobox/key.pem" \
-H=tcp://SOME_IP:2376

Теперь я могу docker $(docker-machine config dobox) images или просто eval "$(docker-machine env dobox)" т. Д. На второй клиентской машине.

докер-машина версия 0.4.0
Докер версии 1.8.2

Как аутентифицировать клиента и сервер в docker. Чье имя пользователя и пароль я должен настроить с ним
Я использую https://docs.docker.com/reference/api/docker_remote_api_v1.20/
и иметь докер-клиент и сервер на одном хосте.
А также дайте мне знать, если оба они не на одной машине.

Ребята, ради бога, добавьте туториал, как импортировать существующие докеры.
Я создал 2 разных облачных лазурных машины из двух отдельных ПК, и теперь я не могу подключиться с ПК к лазурному компьютеру, который был создан на другом.
Уже потрачу 2 вечера, пробуя все предложения и безрезультатно.

@nathanleclaire wdyt?

@ dmp42 О чем именно? --url - это довольно известная проблема, и мы хотим в ближайшее время поддержать использование машин с нескольких разных компьютеров с переносными конфигурациями.

Я полагаю, было бы здорово иметь хоть какое-то четкое заявление о том, что импорт существующих хостов с ПК на ПК пока не работает (или имеет некоторые известные проблемы) где-нибудь в официальной документации или здесь, на github.

@baio +1

У меня есть хост Centos 7, на котором я уже установил стандартный пакет докеров из стандартного репозитория Centos, т.е. я не использовал пакет с веб-сайта Docker.

Когда я на своей локальной рабочей станции пытаюсь создать машину для этого хоста Centos 7 с помощью универсального драйвера, он терпит неудачу с "статусом выхода 1", когда пытается установить пакет с именем "docker-engine".

Я предполагаю, что это не сработает, если Docker уже установлен на удаленном хосте?

Связанный: # 2270

Думаю, у меня есть минимальный воспроизводимый пример:

создать простой Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Box
  config.vm.box = "ubuntu/precise64"
  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box"

  # To make this easily reproducible
  config.ssh.insert_key = false
  config.vm.network "private_network", ip: "192.168.50.4"

end

запустить виртуальную машину

$ vagrant up

подтвердите, что вы можете использовать SSH с ключом, пользователем и IP, которые вы ожидаете

ssh -i ~/.vagrant.d/insecure_private_key [email protected]

^ Это работает для меня

создать Docker Machine

$ docker-machine create -d generic --generic-ssh-user vagrant --generic-ssh-key ~/.vagrant.d/insecure_private_key --generic-ip-address 192.168.50.4 repro

Importing SSH key...
Error creating machine: Maximum number of retries (60) exceeded
You will want to check the provider to make sure the machine and associated resources were properly removed.

Ребята, у вас такой же результат? Сообщите мне, есть ли что-нибудь еще, что я могу попытаться помочь отладить.

Здесь та же проблема. Невозможно заставить --url (без драйвера) работать с:

  • Docker Machine 0.5.1 (на стороне клиента) под OSX
  • Docker 1.9 (на стороне удаленного сервера)
  • Удаленный демон запущен с:
--tlsverify -H=unix:///var/run/docker.sock -H=0.0.0.0:2376 --tlscacert=/root/.docker/ca.pem --tlscert=/root/.docker/cert.pem --tlskey=/root/.docker/key.pem
  • Клиентские сертификаты (ca, key, cert) установлены в ~/.docker/machine/machines/mymachine/

При вводе docker-machine env mymachine сбой:

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "": open /Users/f2i/.docker/machine/machines/anakin/server.pem: no such file or directory
You can attempt to regenerate them using 'docker-machine regenerate-certs name'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

Без докер-машины вроде все нормально:

> docker --tlsverify -H=myhost:2376 ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS 

Просто интересно, в чем разница между универсальным ( --driver "generic" --generic-ip-address ... ) и отсутствием драйвера ( --driver "none" --url ...) ?
Я понимаю, что общий интерфейс подключается через SSH (так что это похоже на использование докера непосредственно на удаленном сервере), и ни один драйвер не подключается к хосту с помощью TCP.

Следовательно, без использования server.pem и server-key.pem на клиентском хосте? Они не должны управляться машиной. Правильно ?

Даже при предоставлении этих последних файлов PEM он не выполняет:

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "": crypto/tls: failed to parse private key
You can attempt to regenerate them using 'docker-machine regenerate-certs name'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

«Без драйвера» - это скорее драйвер интеграционного тестирования, используемый для разработки. Но если вы взломаете достаточно, ваши настройки могут быть использованы для регистрации существующей машины. Планируется, что он будет удален в следующем выпуске (# 2437). Текущая документация вводит в заблуждение этот драйвер none .

Драйвер generic следует использовать для регистрации и правильной установки докера на любом хосте.
Обратите внимание, что это как минимум перезапустит демон докера на целевом хосте. Но это надежный способ зарегистрировать любую «универсальную» машину в докере, если вы предоставляете доступ по ssh.

@jeanlaurent проблема с драйвером generic заключается в том, что он сбивается с вашей машиной, если докер уже установлен (например, изменение имени хоста; запуск yum update ). Я думаю, что многие из нас пытаются сказать, что драйвер none имеет первоклассный вариант использования, и если бы он работал должным образом, это было бы ценной возможностью для многих из нас (в дополнение к целевым драйверам) .

Согласитесь с @metasim в этом none - очень распространенный вариант использования. Это один из самых простых способов взаимодействия с API удаленного докера. Было бы неудачно называть его test . Перафит, что заблуждение исходит из того факта, что мы не хотим создавать / управлять новой машиной ( docker-machine create ), а только подключаться к существующей машине ...

Я не говорю, что мы не должны иметь возможность «регистрировать» существующую машину в докер-машине так или иначе, нам просто нужно сделать это правильно. Вокруг драйвера none много путаницы, он не работает во многих местах, и люди злоупотребляют им. Цель здесь - подготовить почву для реальной функции register existing machine .

Но как только машина `` взломана '' в докер-машину через драйвер none, появляется много вещей, которые разрывают цепочку -> restart , upgrade и ssh очевидно. Внесение изменений в файл json вручную так же эффективно, как и использование драйвера none для фактической регистрации машины.

@metasim Обновление generic чтобы он не «гадил с вашей машиной» - это один из способов справиться с этим.

@vpusher Нам может потребоваться разработать правильную функцию регистрации.

@jeanlaurent Спасибо за ваш ответ. Я вижу, что обновление generic для обработки этого варианта использования (включая существующие ключи) может быть хорошим способом. Однако в духе «разделения проблем» я бы рекомендовал рассмотреть возможность нового драйвера ( existing ?, preconfig ?, manual ?, diy ? :-)) для обработки этого варианта использования, в частности, чтобы можно было лучше установить стабильность в этом узком контексте.

К вашему сведению. # 2260 и # 2269 (закрыты, но на самом деле не рассматриваются) были попыткой уловить некоторую путаницу вокруг драйвера none

PS: Я считаю вполне приемлемым, если некоторые команды явно не поддерживаются в этом случае использования (например, restart , upgrade и т. Д.).

@metasim Да, выделенный драйвер, вероятно, лучший способ справиться с функцией регистрации, но не единственный, отдельная команда - другое. Но прежде чем решить, как это сделать, нам нужно уточнить / определить, в каком случае нам всем нужно зарегистрировать новую машину без установки на нее докера docker-machine .

Если вы посмотрите на PR # 2442, например, мы пингуем хост докера для версии докера. Потому что мы хотим иметь возможность предоставить обновление в какой-то момент или предупредить вас, что ваш хост-докер слишком стар для вашего текущего клиента докера. На машине, на которую мы не устанавливали демон docker, это будет сложно или, по крайней мере, очень нестабильно.

Если мы посмотрим, что мы можем каким-то образом обновить драйвер generic , мне интересно, для какого варианта использования кто-то хотел бы зарегистрировать машину в docker-machine без предоставления доступа ssh?

Что твое? Перечислим их.

Некоторые комментарии по определению варианта использования для none и / или возможному прекращению его использования здесь: https://github.com/docker/machine/pull/2437#issuecomment -160768813

Я считаю, что мы (команда Machine) должны:

  • Следуйте существующим рекомендациям Docker об отказе от поддержки функций (не рекомендуется более 2 циклов выпуска).
  • Следовательно, если мы собираемся отказаться от драйвера none , нам следует подождать, чтобы полностью удалить его до версии 0.7.0.
  • Тем временем исправьте существующие ошибки, мешающие показу ограничителя, с помощью драйвера none и работайте над определением идеального будущего рабочего процесса (будь то import / register или изменения в generic driver), чтобы заинтересованные пользователи могли следить за ними и иметь достаточно времени для подготовки к предстоящим изменениям.

@dgageot @jeanlaurent Как это звучит?

@jeanlaurent Я вижу, что в значительной степени потребуется ssh , что не так уж и плохо. До сих пор я просто предполагал, что почти все можно сделать через REST API.

Я использую docker-machine основном как инструмент для настройки переменных окружения, необходимых для того, чтобы docker разговаривал с другим хостом. Я никогда не использую команды upgrade / restart и т. Д. Мои хосты Docker находятся в vSphere с настраиваемым шаблоном, созданным с помощью рабочего процесса vOrchestrator - использование драйвера vSphere на машине-докере не вариант.

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

Я, вероятно, мог бы заменить docker-machine псевдонимом оболочки, по крайней мере, для моих целей.

Вот пример использования на случай, если это поможет:

Я хотел бы создать свои машины ec2 в amazon, используя elasticbeanstalk вместо docker-machine, потому что у elasticbeanstalk есть много вкусностей (например, автоматическое масштабирование и перезапуск машины). Я хотел бы зарегистрировать их с помощью docker-machine и управлять ими с помощью docker-swarm.

Обновление этих машин до docker 1.9 тривиально, но на них работает какой-то amazon linux (древняя вилка centos), и generic с ними не работает. Поскольку у движка докеров нет tls, трюк, который я использую для удаленного управления ими с помощью простого докера, заключается в том, чтобы открыть docker.sock в localhost: 2375 с помощью socat (как и в https://github.com/sequenceiq/docker- socat) и создайте туннель ssh с моего локального компьютера с помощью чего-то вроде ssh -i id_rsa [email protected] -L 2375: localhost: 2375 -N. Затем я могу подключиться по сети с помощью docker --tls = false -H tcp: // localhost : 2375.

Гимнастики много. Комбинация доступа по ssh и работающей настройки докера (даже без ssl) должна быть всем, что нужно докер-машине для многих интересных случаев (без обновления, перезапуска, как другие заметили, но я все равно их никогда не использую).

Надеюсь, что это будет полезно.

@bonitao Рад, что ты это

Я только начинаю снова пытаться использовать машину Docker с существующими хостами ... Я согласен с операторами @metasim вокруг драйвера none ... Сегодня он имеет ценность для сообщества, поскольку generic еще не делает то, что было задумано ... Я потратил много часов, пытаясь заставить none работать, чтобы узнать, что есть предложение переименовать его в test . @nathanleclaire Есть ли планы заставить драйвер generic работать как описано о ???

Я потратил много времени на https://github.com/docker/machine/issues/2628, и это наш вариант использования ... Поддержка существующих команд в компании с помощью докеров ...

Я искал в Google, предполагая, что мне просто совершенно не хватает понимания, пытаясь выяснить, как подключиться к лазурной док-машине с моего сервера CI, который я создал в другом месте. Я оказался здесь и удивлен, что на самом деле это невозможно (без хакерства).

Я создал и получил экземпляры машины Azure Docker, полностью запущенные и работающие с рабочей станции, и я просто хочу иметь возможность управлять им и развертывать на нем из сценариев CI, которые могут запускаться из нескольких экземпляров ведомых CI. Неужели не существует официального способа, которым это должно быть достигнуто?

Я обновил свой докер, и теперь я больше не могу подключиться к своему старому экземпляру докер-машины. я получил

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "xxxxx:2376": open : no such file or directory
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

команды regeenrate-certs дают мне

Regenerate TLS machine certs?  Warning: this is irreversible. (y/n): y
Regenerating TLS certificates
Detecting the provisioner...
Installing Docker...
Copying certs to the local machine directory...
Copying ca.pem to machine dir failed: open : no such file or directory

смешно то что я могу

docker-machine ssh

без проблем ..

какие-нибудь исправления?

Сценарий: существующий и рабочий сервер с включенными Docker и TLS.

Добавьте существующий сервер / машину в докер-машину:

docker-machine --tls-ca-cert path/to/ca.pem --tls-ca-key path/to/ca-key.pem --tls-client-cert path/to/client.pem --tls-client-key path/to/client-key.pem create --driver none --url tcp://HOST:2376 NAME

В вашем каталоге пользователя (~ / .docker / machine / machines / NAME) добавьте тот же сертификат клиента, что и «cert.pem» и «server.pem», и ключ сертификата клиента как «key.pem» и «server-key». pem "также настройте свой config.json, включив в него соответствующие настройки SSH ...

Я поднял этот вопрос. Я недавно получил эту работу, и я поместил инструкции здесь (https://sreeninet.wordpress.com/2015/05/31/docker-machine/) на случай, если кто-то захочет обратиться.

Вот сценарий, который мне нравится:
https://github.com/docker/machine/issues/3344#issuecomment -212536797

@devcrust где именно они:

path/to/ca.pem
path/to/ca-key.pem
path/to/client.pem
path/to/client-key.pem

???

$ ls certs/
ca-key.pem  ca.pem  cert.pem  key.pem
$ ls machines/adhoc/
ca.pem  cert.pem  config.json  id_rsa  id_rsa.pub  key.pem  server-key.pem  server.pem

Я не могу правильно его настроить. У меня тоже есть эта проблема:

Copying ca.pem to machine dir failed: open : no such file or directory

после обновления до 0.6.0 .... я потерял tcp доступ к 12 машинам

@nathanleclaire Есть поводу ? Я пытаюсь понять, как подключиться к хосту Docker, работающему в Microsoft Azure, который я создал с другого компьютера, используя docker-machine . Прямо сейчас у меня нет решений.

Решение: _ (желаете) _

docker-machine add <🖥️ имя> --driver <☁️️ драйвер провайдера>

Так печально, что прошло так много времени, а функция для решения этой проблемы так и не представлена.

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

Я также играю за возможность добавления докер-машины.

Вот два проекта с разными подходами к совместному использованию машин:

@jeanlaurent

Что твое? Перечислим их.

Моя идея заключалась в том, чтобы подключить мою локальную машину к существующему физическому серверу с множеством запущенных контейнеров. Выполнение docker-machine create --driver generic , скорее всего, остановит их и многое другое . Интересно, зачем перезапускать докер ...

Ну, я могу просто запускать команды через ssh, но из его описания похоже, что docker-machine тоже можно использовать.

Но тогда, если вы создали виртуальную машину на одном компьютере и хотите управлять ею с другого. Или вы переустановили локальную ОС ... Или хотите передать управление ВМ кому-нибудь другому ...

PS Я делаю первые шаги с Docker, так что могут быть моменты, которые мне не хватает ...

@ x-yuri Чтобы «создать» машину вручную, просто скопируйте ее файлы из .docker/machine/machines и настройте пути к ней.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги