Machine: Usar docker-machine para importar hosts usando --driver = generic e / ou --url não funciona.

Criado em 23 mai. 2015  ·  62Comentários  ·  Fonte: docker/machine

Oi pessoal
Isto não é um problema. Lamento se este for o lugar errado para fazer esta pergunta. Se este não for o lugar certo, indique-me o lugar certo.

Eu entendo que podemos usar docker-machine para conectar a diferentes hosts usando drivers como Virtualbox, driver do provedor de nuvem, etc. Se eu já tiver um host executando o Docker dentro do baremetal Linux, como integramos isso com docker-machine? Sem docker-machine, eu poderia fazer o mesmo executando um daemon do Docker em uma porta específica e conectando externamente do cliente docker ao ip e porta do daemon do docker. Existe uma opção na docker-machine para criar um host sem nenhum driver, é para esse propósito? Não consegui descobrir como usá-lo para se conectar.

obrigado
Sreenivas

drivegeneric kinbug

Comentários muito úteis

@nathanleclaire Alguma atualização sobre isso? Estou tentando descobrir como eu me conectaria a um Docker Host em execução no Microsoft Azure, que criei em um computador diferente, usando docker-machine . No momento, não tenho nenhuma solução.

Todos 62 comentários

Olá @smakam , acredito que o que você está procurando é o driver url : http://docs.docker.com/machine/#adding -a-host-without-a-driver

Olá @nathanleclaire
Obrigado pela resposta.
Eu olhei o link que você mencionou e tentei o seguinte, sem sorte.

Primeiro, tentei sem qualquer TLS:
Na máquina Ubuntu, fiz isso para iniciar o agente docker:
sudo docker -d -H unix: ///var/run/docker.sock -H tcp: //192.168.56.101 : 2376 &

No Windows, onde eu tinha a docker-machine instalada, fiz o seguinte:
$ docker-machine create --url = tcp: //192.168.56.101 : 2376 custom6
← [34mINFO ← [0m [0000] "custom6" foi criado e agora é a máquina ativa.
$ docker-machine ls
NOME DO ESTADO DO MOTORISTA ATIVO URL SWARM
custom6 * nenhum tcp: //192.168.56.101 : 2376

Eu recebo este erro:
$ docker-machine env custom6
← [31mFATA ← [0m [0000] abrir C: \ Users \ srmakam.docker \ machine \ machines \ custom6ca.pem: O sistema não pode encontrar o arquivo especificado.

Não tenho certeza se docker-machine aplica TLS. Tentei iniciar o agente docker com certificado e chave e tentei com o cliente docker, mas também não tive sorte.

obrigado
Sreenivas

Essencialmente, exigimos o TLS em nossa forma atual. Se você configurar sua própria CA e certificados / chaves, acho que provavelmente poderá usá-los por meio das opções --tls-ca-cert , --tls-ca-key gloabl para a máquina Docker. @ehazlett Algum comentário?

Oi

Eu tentei com TLS, ainda não consegui fazer funcionar, não tenho certeza do que estou perdendo:
Iniciei o docker no meu host 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

Então, tentei criar um host docker-machine sem driver:
docker-machine --tls-client-cert =

/cert.pem --tls-ca-cert =/ca.pem --tls-client-key =/key.pem criar --url = tcp: //: 2376 custom3

Quando tentei ver o ambiente, recebo o seguinte erro:
$ docker-machine env custom3
← [31mFATA ← [0m [0000] abra C: \ Users \ srmakam.docker \ machine \ machinescustom3ca.pem: O sistema não pode encontrar o arquivo especificado.

obrigado
Sreenivas

Você provavelmente gostaria de usar o CA existente, cliente, etc. para todas as coisas relacionadas à máquina, pois as configurações de --tls-ca-cert etc são globais.

Quanto ao seu daemon do docker, você deseja usar o certificado / chaves do CA e do servidor - acima, você está usando o certificado CA, mas a chave e o certificado do cliente. Você precisaria de algo como:

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

@ehazlett
Tentei usar configurações globais no diretório "certs" para docker-machine create especificando opções na linha de comando, mas ainda reclama sobre "ca.pem" ausente nas máquinas /\ diretório.
Como obtenho "server.pem" e "server-key.pem"? Devo gerá-lo?

Consegui me conectar entre o docker client e docker agent em uma máquina separada usando TLS sem usar docker-machine.

obrigado
Sreenivas

Você pode mostrar os argumentos de linha de comando usados? Se você especificar a máquina certs deve apenas usá-los. Se não, é um bug :)

Oi @ehazlett
Primeiro, comecei o agente docker assim:
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

Então eu iniciei o cliente docker-machine assim:
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

Recebi este erro ao definir o ambiente:
xxx @ ubuntu : ~ $ docker-machine env custom3
abra /home/xxx/.docker/machine/machines/custom3/ca.pem: tal arquivo ou diretório não existe

Aqui, estou executando o docker agent e docker-machine na mesma máquina Ubuntu. Eu recebo um erro semelhante ao executar o agente docker no Ubuntu e docker-machine no Windows.

obrigado
Sreenivas

Você não deve usar key.pem e cert.pem para o mecanismo Docker. O mecanismo precisa de um par de chave / certificado do servidor (a máquina os criará).

Para o ambiente, como você criou a máquina custom3 ? Parece que algo deu errado durante a criação se esse arquivo não existir.

Oi @ehazlett
Como devo iniciar o docker engine? De acordo com meu entendimento, a máquina docker ordena o uso de TLS.

Foi assim que criei a máquina custom3. Isso não me deu nenhum erro.
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

Devo criar o par de chave / certificado do servidor manualmente, como a máquina faria se o driver fosse usado com a docker-machine?

obrigado
Sreenivas

@smakam isso deve estar correto. Ele deve gerar uma chave de servidor com base nessa CA existente. Vou fazer alguns testes para ver se há um problema.

@smakam Alguma atualização sobre este problema ou podemos fechá-lo?

@nathanleclaire Ainda não consigo fazê-lo funcionar. Eu até tentei com docker-machine 3.0 com procedimento de driver genérico mencionado aqui (http://blog.docker.com/2015/06/docker-machine-0-3-0-deep-dive/)
Isso é o que é mencionado:
docker-machine create -d generic \
--generic-ssh-user ubuntu \
--generic-ssh-key ~ / Downloads / manualmente_created_key.pub \
--generic-ip-address 12.34.56.78 \
selva

Presumo que .pub seja um erro de digitação e precisamos fornecer uma chave privada. Recebi 2 tipos de erros em 2 hosts diferentes:

caso 1:
Importando chave SSH ...
Erro ao criar máquina: sair do status 1
Você vai querer verificar o provedor para certificar-se de que a máquina e os recursos associados foram removidos corretamente.

caso 2:
Importando chave SSH ...
Erro ao obter o comando SSH para verificar se o daemon está ativo: status de saída 1
Erro ao obter o comando SSH para verificar se o daemon está ativo: status de saída 1

btw, onde os logs detalhados da máquina docker são armazenados?
Eu tentei com docker-machine para windows e linux.

obrigado
Sreenivas

O mesmo problema.
As formas genéricas --url e -d não funcionam.

Tentei as mesmas etapas do autor da postagem original e tive um problema semelhante, quando tentei o driver genérico e encontrei um erro semelhante ao caso 1 (CentOS 7)

Mesmo problema. Não é possível usar --url e especificar o certificado.

Posso sugerir que a equipe do Docker escreva um breve tutorial nos guiando passo a passo. Seria muito útil.

O mesmo problema aqui com anyconnect vpn conectado, bem depois que reiniciei meu laptop sem qualquer conexão, ele se foi.

1 para o problema.
Tentei usar docker-machine create --url= com minha configuração do docker existente no host remoto, mas sem sorte. DM falha ao tentar obter TLS de $HOME/.docker/machine/machines/<name>/ca.pem .

Mesmo problema. Tentei as mesmas etapas, mas ainda nenhum certificado / chave do servidor foi gerado.
docker-machine versão 0.4.0
Docker versão 1.8.0

Mesmo problema. Tentei as mesmas etapas, mas ainda nenhum certificado / chave do servidor foi gerado.
docker-machine versão 0.4.1
Docker versão 1.8.1

@csokun @ miracle-in-sunday @narqo Geralmente, presume-se que usando --url você "traga seus próprios certificados", embora eu admita que essa parte do código está enfraquecendo, então pode estar quebrado.

Se você deseja que certificados e chaves sejam gerados automaticamente, tente o driver generic : https://docs.docker.com/machine/drivers/generic/

Se isso não funcionar para o seu caso de uso, posso pedir que você registre um problema separado detalhando as etapas exatas que está realizando e os resultados que está vendo?

Obrigado!

Olá pessoal, vocês tentaram com --virtualbox-hostonly-cidr especificado? Funcionou para mim:

BartSlaman @ VLRNB176 ~
$ docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.99.100/24" dev4
Criando VirtualBox VM ...
Criando chave SSH ...
Iniciando VirtualBox VM ...
Iniciando VM ...
Para ver como conectar o Docker a esta máquina, execute: C: \ Arquivos de programas (x86) \ Git \ bindocker-machine env dev4

BartSlaman @ VLRNB176 ~
$ docker-machine env dev4
export DOCKER_TLS_VERIFY = "1"
export DOCKER_HOST = " tcp: //192.168.99.101 : 2376"
export DOCKER_CERT_PATH = "C: \ Users \ BartSlaman.docker \ machine \ machines \ dev4"
export DOCKER_MACHINE_NAME = "dev4"

Saudações
Bart Slaman

Alguma atualização sobre este problema? Eu tentei --url com --tls- * mas me enganei "open /Users/user/.docker/machine/machine/ss/ca.pem nenhum arquivo ou diretório". Eu uso docker-machine versão 0.4.1

O mesmo aqui, mas um erro diferente na criação:

Importando chave SSH ...
Erro de SSH cmd!
comando: sudo hostname interno && echo "interno" | sudo tee / etc / hostname
err: sair do status 1
saída: sudo: nenhum tty presente e nenhum programa askpass especificado

E então, ao executar eval "$ (docker-machine env internal)":
abra /Users/marlon/.docker/machine/machines/internal/ca.pem: não existe esse arquivo ou diretório

Isso significa que os certificados não estão sendo gerados.

Engraçado, eu consigo ssh para a máquina rodando "docker-machine ssh internal".

Consegui fazer --url funcionar e apontar para um mecanismo Docker existente no DigitalOcean criado com a Docker Machine.

Para usar --url ou o driver none , apenas copiei a pasta ~/.docker/machine/machines/dobox/ existente na máquina que usei para criar o host e excluí cert.pem , key.pem , id_rsa.pub , id_rsa e config.json (deixando ca.pem , server.pem e server-key.pem ). Em seguida, gerei um novo par de certificado / chave de cliente (https://docs.docker.com/articles/https/, começando em "Para autenticação do cliente") dentro do diretório recém-criado de antes e copiei para a máquina que eu estava tentando se conectar de. Por último, adicionei o host remoto usando docker-machine create --url=tcp://SOME_IP:2376 dobox e movi os certificados para onde a Máquina Docker espera que estejam: ~/.docker/machine/machines/dobox/ . A pasta já deve estar lá e conter config.json , então você está apenas adicionando seus certificados. Não estou tentando alterar o esquema de sinalizadores / autenticação TLS que o Docker está usando, que são:

--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

Agora posso docker $(docker-machine config dobox) images ou apenas eval "$(docker-machine env dobox)" etc na segunda máquina cliente.

docker-machine versão 0.4.0
Docker versão 1.8.2

Como autenticar cliente e servidor em docker. Cujo nome de usuário e senha eu tenho que configurar com ele
Estou usando https://docs.docker.com/reference/api/docker_remote_api_v1.20/
e ter cliente docker e servidor na mesma máquina host.
E também me avise se ambos não estiverem na mesma máquina.

Gente pelo amor de Deus, adicione tutorial de como importar máquinas docker existentes.
Eu criei 2 máquinas diferentes do azure em nuvem a partir de 2 PCs separados e agora não consigo me conectar do PC a uma máquina azul que foi criada em outro.
Já passei 2 noites, experimentando todas as sugestões e sem resultado.

@nathanleclaire wdyt?

@ dmp42 Sobre o que exatamente? --url quebrar é um problema bem conhecido e queremos oferecer suporte ao uso de máquinas de vários computadores diferentes em breve com configurações portáteis.

Suponho que seria ótimo ter pelo menos alguma declaração clara de que a importação de hosts existentes, de PC para PC, não está funcionando agora (ou tem alguns problemas conhecidos) em algum lugar da documentação oficial ou aqui no github.

@baio +1

Tenho um host Centos 7 no qual já instalei o pacote docker padrão do repositório Centos padrão - ou seja, não usei o pacote do site do Docker.

Em minha estação de trabalho local, quando tento criar a máquina para este host Centos 7 usando o driver genérico, ele falha com "exit status 1" ao tentar instalar um pacote chamado "docker-engine".

Suponho que isso não funcione se o Docker já estiver instalado no host remoto.

Relacionado: # 2270

Acho que tenho um exemplo reproduzível mínimo:

crie um Vagrantfile simples

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

inicie a VM

$ vagrant up

confirme se você pode usar o SSH com a chave, o usuário e o IP que espera

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

^ Isso funciona para mim

criar a máquina Docker

$ 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.

Vocês estão obtendo o mesmo resultado? Avise-me se houver mais alguma coisa que eu possa tentar para ajudar na depuração.

Mesmo problema aqui. Incapaz de fazer --url (sem driver) funcionar com:

  • Docker Machine 0.5.1 (lado do cliente) no OSX
  • Docker 1.9 (servidor remoto)
  • Daemon remoto iniciado com:
--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
  • Certificados de cliente (ca, chave, cert) instalados em ~/.docker/machine/machines/mymachine/

Ao digitar docker-machine env mymachine , falha em:

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.

Sem docker-machine, tudo parece bem:

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

Apenas me perguntando qual é a diferença real entre genérico ( --driver "generic" --generic-ip-address ... ) e nenhum driver ( --driver "none" --url ...) ?
Estou entendendo que o genérico se conecta por SSH (então é como usar docker diretamente no servidor remoto) e nenhum driver se conecta ao host usando TCP.

Conseqüentemente, sem usar server.pem e server-key.pem no host do cliente? Eles não devem ser gerenciados por máquina. Direito ?

Mesmo fornecendo os últimos arquivos PEM, ele falha em:

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.

O "sem driver" é mais um driver de teste de integração usado para desenvolvimento. Mas se você hackear o suficiente, sua configuração pode ser usada para registrar uma máquina existente. Ele está programado para ser removido em uma versão futura (# 2437). A documentação atual é enganosa neste driver none .

O driver generic deve ser usado para registrar e instalar corretamente o docker em qualquer host.
Observe que, no mínimo, ele reiniciará o daemon do docker no host de destino. Mas é uma maneira confiável de registrar qualquer máquina 'genérica' na máquina docker, desde que você forneça um acesso ssh.

@jeanlaurent o problema com o driver generic é que ele interfere na sua máquina se o docker já estiver instalado (por exemplo, alterando o nome do host; executando yum update ). Acho que o que muitos de nós estamos tentando dizer é que o driver none tem um caso de uso de primeira classe e, se funcionasse corretamente, seria um recurso valioso para muitos de nós (além dos drivers direcionados) .

Concorde com @metasim sobre isso. O driver none é um caso de uso muito comum. Esta é uma das formas mais básicas de interagir com a API docker remota. Seria lamentável chamá-lo de test . Peraphs, o enganoso vem do fato de que não queremos criar / gerenciar uma nova máquina ( docker-machine create ), mas apenas nos conectar a uma máquina existente ...

Não estou dizendo que não deveríamos ser capazes de 'registrar' a máquina existente na docker-machine de uma forma ou de outra, apenas precisamos fazer isso da maneira correta. Há muita confusão em torno do driver none , ele não funciona em muitos lugares e as pessoas o estão usando de forma inadequada. A intenção aqui é preparar o terreno para um recurso real register existing machine .

Mas uma vez que uma máquina é 'hackeada' na docker-machine através do driver none, há um monte de coisas que vão quebrar a cadeia -> restart , upgrade e ssh obviamente. Fazer uma alteração manual no arquivo json é tão eficiente quanto usar o driver none para registrar uma máquina.

@metasim Atualizar o generic para não 'bagunçar com sua máquina' é uma maneira de lidar com isso.

@vpusher Podemos precisar projetar um recurso de registro adequado.

@jeanlaurent Obrigado pela sua resposta. Posso ver que atualizar generic para lidar com este caso de uso (incluindo as chaves existentes) pode ser um bom caminho a percorrer. No entanto, no espírito de "separação de interesses", recomendo considerar um novo driver ( existing ?, preconfig ?, manual ?, diy ? :-)) para lidar com este caso de uso, particularmente para que a estabilidade dentro desse contexto estreito possa ser melhor estabelecida.

PARA SUA INFORMAÇÃO. # 2260 e # 2269 (fechado, mas não realmente resolvido) foram uma tentativa de capturar parte dessa confusão em torno do driver none

PS: Acho que é totalmente aceitável que alguns comandos não sejam explicitamente suportados neste caso de uso (por exemplo, restart , upgrade , etc.).

@metasim Sim, um driver dedicado é provavelmente a melhor maneira de lidar com um recurso de registro, mas não a única, um comando dedicado é outra. Mas antes de decidir como fazer isso, precisamos esclarecer / definir em qual caso todos nós precisamos registrar uma nova máquina sem docker-machine instalar o docker nela.

Se você der uma olhada em PR # 2442, por exemplo, executaremos ping no host docker para a versão docker. Porque queremos ser capazes de fornecer atualizações em algum ponto, ou avisar que seu host docker é muito antigo com seu cliente docker atual. Com uma máquina na qual não instalamos o daemon do docker, isso será difícil ou pelo menos muito instável.

Se considerarmos que podemos atualizar o driver generic alguma forma, estou me perguntando para qual caso de uso alguém gostaria de registrar uma máquina na docker-machine sem fornecer acesso ssh?

O que é seu ? Vamos listá-los.

Alguns comentários sobre como definir o caso de uso para none e / ou potencialmente descontinuá-lo aqui: https://github.com/docker/machine/pull/2437#issuecomment -160768813

Meu sentimento é que nós (a equipe da Máquina) devemos:

  • Siga as diretrizes existentes do Docker sobre a descontinuação de recursos (descontinuar em 2 ciclos de lançamento).
  • Conseqüentemente, se vamos descontinuar o driver none , devemos esperar para removê-lo completamente até a versão 0.7.0.
  • Nesse ínterim, corrija os bugs existentes com o driver none e trabalhe para definir o fluxo de trabalho futuro ideal (seja import / register ou alterações no generic driver) para que os usuários interessados ​​possam acompanhar e ter tempo adequado para se preparar para as mudanças que estão por vir.

@dgageot @jeanlaurent O que você acha ?

@jeanlaurent posso ver que ssh seria praticamente necessário, o que não é tão ruim. Até agora, eu presumi que quase tudo poderia ser feito pela API REST.

Eu uso docker-machine principalmente como uma ferramenta para configurar as variáveis ​​env necessárias para fazer docker falar com outro host. Eu nunca uso os comandos upgrade / restart etc. Meus hosts Docker estão no vSphere com um modelo personalizado criado por meio de um fluxo de trabalho do vOrchestrator - usar o driver do vSphere na docker-machine não é uma opção.

Dito isso, eu percebo que meu caso de uso não é o único caso de uso, mas espero que seja algo a considerar pelo menos.

Provavelmente poderia substituir docker-machine por um alias de shell, pelo menos para meus propósitos.

Aqui está um exemplo de caso de uso, caso ajude:

Eu gostaria de criar minhas máquinas ec2 na amazon usando elasticbeanstalk em vez de docker-machine, porque elasticbeanstalk tem muitos benefícios (como auto-escalonamento e reinicializações de máquina). Eu gostaria de registrá-los com docker-machine e controlá-los usando docker-swarm.

Atualizar essas máquinas para ter docker 1.9 é trivial, mas elas rodam algum Linux Linux (antigo fork do centos) e o generic não funciona com elas. Como o docker engine não tem tls, o truque que eu uso para gerenciá-los remotamente com o plain docker é expor o docker.sock em localhost: 2375 usando socat (bem como em https://github.com/sequenceiq/docker- socat) e fazer um túnel ssh da minha máquina local com algo como ssh -i id_rsa [email protected] -L 2375: localhost: 2375 -N. Em seguida, posso me conectar pela rede com docker --tls = false -H tcp: // localhost : 2375.

É muita ginástica. A combinação de acesso ssh e uma configuração de docker funcional (mesmo sem ssl) deve ser tudo que a docker-machine precisa para muitos casos interessantes (sem atualização, reinicie como outros notaram, mas eu nunca uso esses de qualquer maneira).

Espero que seja útil.

@bonitao Que bom que você esclareceu. Eu também tenho o caso de uso "túnel através do ssh" em alguns compromissos corporativos.

Estou apenas começando a tentar usar a máquina Docker com hosts existentes ... Concordo com as afirmações do none ... Ele tem valor hoje para a comunidade, já que o generic ainda não está fazendo o que sua intenção é ... Passei inúmeras horas tentando fazer com que none trabalhasse para saber que há uma proposta para renomeá-lo para test . @nathanleclaire Algum plano para fazer o driver generic funcionar conforme descrito ???

Gastei um bom tempo em https://github.com/docker/machine/issues/2628 e este é um caso de uso que temos ... Apoiando equipes existentes em toda a empresa com docker ...

Tenho pesquisado no Google, supondo que não entendi completamente, tentando descobrir como me conectar a uma máquina docker azul a partir do meu servidor de CI que criei em outro lugar. Acabei aqui e estou surpreso que isso realmente não seja possível (sem hackeamento).

Eu criei e coloquei instâncias da máquina docker do azure totalmente instaladas e em execução a partir de uma estação de trabalho e só quero ser capaz de controlar e implantar a partir de scripts CI, que podem ser executados a partir de várias instâncias escravas CI. Não há realmente uma maneira oficial de fazer isso?

Atualizei meu docker e agora não consigo mais me conectar à minha antiga instância docker-machine. eu recebo

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.

os comandos regeenrate-certs me dão

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

o engraçado é que eu posso

docker-machine ssh

sem quaisquer problemas..

alguma correção?

Cenário: servidor existente e funcionando com Docker e TLS habilitado.

Adicionar servidor / máquina existente à máquina docker:

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

Em seu diretório de usuário (~ / .docker / machine / machines / NAME), adicione o mesmo certificado de cliente como "cert.pem" e "server.pem" e a chave do certificado do cliente como "key.pem" e "server-key. pem "também ajustar seu config.json para incluir as configurações SSH relevantes ...

Eu havia levantado essa questão. Recentemente, coloquei isso funcionando e coloquei as instruções aqui (https://sreeninet.wordpress.com/2015/05/31/docker-machine/) caso alguém queira consultar.

Aqui está um script que meio que funciona para mim:
https://github.com/docker/machine/issues/3344#issuecomment -212536797

@devcrust onde exatamente estão aqueles:

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

Não consigo configurá-lo corretamente. Eu tenho esse problema também :

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

depois de atualizar para 0.6.0 .... Perdi o acesso tcp a 12 máquinas

@nathanleclaire Alguma atualização sobre isso? Estou tentando descobrir como eu me conectaria a um Docker Host em execução no Microsoft Azure, que criei em um computador diferente, usando docker-machine . No momento, não tenho nenhuma solução.

Solução: _ (você deseja) _

docker-machine add <🖥️ name> --driver <☁️️ provider driver>

Tão triste que tanto tempo se passou e ainda nenhum recurso foi introduzido para resolver este problema.

Por que vale a pena. Você pode criar uma máquina usando o driver genérico, mas isso irá reiniciar todos os seus containers.
Adicionando reinicialização: sempre em seus contêineres irá garantir que eles não parem. Eu apoiaria a opção de

Eu também gosto de ter uma opção de adicionar docker-machine.

Aqui estão dois projetos com diferentes abordagens para compartilhamento de máquina:

@jeanlaurent

O que é seu ? Vamos listá-los.

Minha ideia era conectar minha máquina local a um servidor físico existente com uma carga de contêineres em execução. Fazer docker-machine create --driver generic provavelmente os parará e muito mais . Eu me pergunto por que ele precisa reiniciar o docker ...

Bem, eu posso simplesmente executar comandos sobre ssh, mas pela sua descrição parecia que docker-machine poderia ser usado.

Mas então, se você criou uma VM de um computador e deseja gerenciá-la de outro. Ou você reinstalou seu sistema operacional local ... Ou deseja delegar o controle sobre a VM para outra pessoa ...

PS Estou dando meus primeiros passos com o Docker, então pode haver alguns pontos que estou perdendo ...

@ x-yuri Para "criar" uma máquina manualmente, basta copiar seus arquivos de .docker/machine/machines e ajustar seus caminhos.

Esta página foi útil?
0 / 5 - 0 avaliações