Windows: Como iniciar a inicialização do sistema do Docker VM Att

4

Estou em uma situação em que preciso executar o docker em um servidor de construção baseado no Windows (normalmente estou trabalhando com o Arch / Debian Linux) e não consigo encontrar uma forma de ativar a VM do Docker automaticamente inicialização do sistema. No Linux, seria um serviço, mas no Windows não parece ser o caso.

Eu segui as instruções no link e tudo é executado quando inicio a VM do Docker com o $ docker-machine criar, mas como ter isso como um serviço do Windows ou similar?

O objetivo é poder usar imagens Docker, iniciar como contêineres e executar testes e2e contra eles. Já que estamos usando o TeamCity para criar qualquer ideia sobre como resolver isso com o TeamCity, também funcionaria, eu acho.

    
por tirithen 04.02.2016 / 11:50

4 respostas

5

Eu escrevi um pequeno webapp há algum tempo atrás que tem uma dependência do sistema que está disponível apenas para sistemas unix, então o docker foi a escolha natural (embora eu tenha tido algum sucesso com o vagrant ..)

Estou usando o Windows para desenvolvimento e também executando este aplicativo da web em seu contêiner do Docker.

Então me deparei com o mesmo problema, "como iniciar isso na inicialização do sistema"?

Acabei com um pequeno arquivo em lote no meu diretório de inicialização automática, contendo algo como as seguintes linhas:

docker-machine start default
docker run -d -p 8080:8080 -v //c/Users/%USERNAME%/somepath:/c/Users/%USERNAME%/somepath my/image --some.webapp.param=some-webapp-param-value

A primeira chamada inicia a máquina virtual "padrão", embora você deva ser capaz de especificar uma vm diferente lá. A segunda chamada executa o contêiner docker "my / image", expondo a porta 8080 ao sistema host e montando "somepath" do diretório inicial do meu usuário. Certifique-se de especificar o parâmetro "-d" enquanto ele executa o container "in the background" (marque "docker run --help")

Depois disso, meu webapp pode ser acessado no endereço IP da "VM padrão" (no meu caso, que era 192.168.99.100, isso pode diferir no seu sistema, você pode verificar a saída ao iniciar este "terminal de início rápido docker" como o endereço IP será registrado no console.)

Com isso, posso usar meu navegador normalmente, aponte para " link " e posso trabalhar com meu webapp.

Espero que ajude =)

editar

com o dito arquivo batch agora disponível, um tem 3 opções:

  • coloque o arquivo em lote no diretório de inicialização automática (requer sessões de usuário interativas, portanto, provavelmente não é adequado para instâncias do servidor.)

  • agende a execução do arquivo de lote através do agendador de tarefas do Windows. lá você pode definir "executar na inicialização do computador" como um gatilho para a tarefa. a tarefa é executada independentemente de uma sessão interativa (um usuário conectado ...) estar disponível ou não

  • use um wrapper de serviço como NSSM para instalar o arquivo de lote como um serviço do Windows

por 19.05.2016 / 22:16
3

Apenas um pequeno addon: Quando você inicia suas imagens de encaixe e deseja que elas comecem na inicialização da janela de encaixe (nesse caso a janela de encaixe virtualmachine), é possível usar a opção --restart always no comando docker run. Em seguida, você pode remover o comando docker run dos arquivos em lote. O contêiner deve iniciar automaticamente após o início da vm.

    
por 05.04.2018 / 11:28
1

Eu estendi a resposta de Charlie Carver .

Com o seguinte script, você pode especificar qual inicialização da máquina boot2docker. Como a pasta do Docker Toolbox pode não estar no seu caminho e todas as variáveis ambientais adequadas podem não estar definidas, escrevi algumas instruções de inicialização.

Coloque este script em um arquivo bat e use uma das opções citadas por Charlie para executá-lo no momento da inicialização.

@echo off

REM Set the name of the VM configuration where dockerd will be hosted
set BOOT2DOCKER_VM=default

set PATH=%PATH%;"C:\Program Files\Docker Toolbox\"

REM Start the default machine (or any other machine)
docker-machine start %BOOT2DOCKER_VM%

REM Set the environment variables to use docker-machine and docker commands
@FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd %BOOT2DOCKER_VM%') DO @%i

REM Start the image detached
docker run --detach --publish 5000:5000 foo-service

Se você se importa com o caso de um erro fatal dentro do container, por favor use a opção --restart no comando docker run.

    
por 05.12.2017 / 16:41
0

Você também pode usar o NSSM (Gerenciador de serviços não-sugadores)

Inicie o NSSM a partir de um comando promt ou do powershell com o param da instalação (nssm.exe install)

Isso iniciará a GUI, incluindo os seguintes itens;

  • Caminho: [Docker Install DIR] \ Docker \ resources \ bin \ docker-compose.exe
  • Diretório de inicialização: [Caminho para seu contêiner docker]
  • Argumentos: quaisquer argumentos necessários para o seu contêiner docker (ou seja, para cima)

Por fim, insira seu nome de serviço na caixa na parte inferior da GUI, e você poderá se sentir livre para testar com as outras opções nas guias adicionais.

    
por 02.05.2018 / 22:18