Docker: Primeiros passos

Gestão remota de Docker rápida e segura com Stackhero for Docker

Bem-vindo à documentação da Stackhero

A Stackhero disponibiliza uma plataforma Docker cloud CaaS (Containers as a Service) pronta a usar, concebida para implementações de contentores rápidas e fiáveis:

  • Implemente em produção com um simples docker-compose up. Não é necessária qualquer configuração adicional: basta iniciar os seus contentores.
  • Escolha o seu próprio nome de domínio, automaticamente protegido com HTTPS (por exemplo: https://api.sua-empresa.com, https://www.sua-empresa.com ou https://backoffice.sua-empresa.com).
  • Beneficie de elevado desempenho e segurança robusta numa infraestrutura privada e dedicada.
  • Aplique atualizações com um clique para uma manutenção simples e sem esforço.

Pode ter os seus contentores em produção em cerca de cinco minutos. A Stackhero gere a infraestrutura, as atualizações e a segurança por si, para que se possa focar na entrega das suas aplicações. Saiba mais sobre alojamento cloud Docker CaaS.

O Docker CLI deve estar instalado no seu computador. Se ainda não o instalou, pode descarregá-lo no site oficial da Docker: Docker Desktop.

Com o Stackhero for Docker, pode gerir os seus contentores remotamente através do Docker CLI, tal como faria localmente. Isto permite-lhe manter o seu fluxo de trabalho habitual, mas agora pode executar comandos diretamente no seu servidor Docker pronto para produção, de forma segura e eficiente.

Os "contexts" do Docker tornam isto possível. Os contexts permitem-lhe indicar ao Docker CLI para onde enviar os seus comandos: para o seu daemon Docker local ou para a sua instância Stackhero for Docker. A mudança de context é rápida e transparente.

Para se ligar de forma segura à sua instância Stackhero for Docker, precisa de instalar os respetivos certificados no seu computador. Estes certificados garantem a autenticação e a encriptação, mantendo a sua ligação privada e protegida.

Pode utilizar o seguinte comando para descarregar e configurar os certificados:

# HOST é o nome de domínio da sua instância Docker (<XXXXXX>.stackhero-network.com).
# SERVICE_ID é o ID do seu serviço Stackhero.
# CERTIFICATES_PASSWORD é a palavra-passe definida na configuração Docker no dashboard da Stackhero.
(export HOST="<XXXXXX>.stackhero-network.com"
export SERVICE_ID="<SERVICE_ID>"
export CERTIFICATES_PASSWORD="<CERTIFICATES_PASSWORD>"

cd /tmp/ \
  && curl -o certificates.tar https://docker:$CERTIFICATES_PASSWORD@$HOST/stackhero/docker/certificates.tar \
  && tar -xf certificates.tar \
  && (docker context rm -f $HOST 2> /dev/null || true) \
  && docker context create $HOST \
    --description "$SERVICE_ID ($HOST)" \
    --docker "host=tcp://$HOST:2376,ca=ca.pem,cert=cert.pem,key=key.pem")

Este comando cria um context Docker com o nome do domínio do seu serviço. Pode ver todos os contexts disponíveis com:

docker context ls

Se alterar o domínio do seu serviço, os certificados serão atualizados. Terá de os reinstalar para voltar a ligar-se de forma segura.

Por defeito, ao executar docker ps são apresentados os contentores da sua máquina local. Por exemplo, ao executar:

docker run --rm alpine wget -q -O - ifconfig.me

será apresentado o IP público do seu computador, pois o contentor está a correr localmente.

Para trabalhar remotamente, altere o context Docker para a sua instância Stackhero for Docker:

docker context use <XXXXXX>.stackhero-network.com

A partir deste momento, todos os comandos Docker CLI serão executados no seu servidor Docker remoto. Se executar novamente o comando de verificação de IP:

docker run --rm alpine wget -q -O - ifconfig.me

será apresentado o IP público da sua instância Stackhero for Docker. Isto confirma que os seus contentores estão a correr no servidor remoto.

Para voltar ao daemon Docker local, basta executar:

docker context use default

Ao montar um volume num contentor remoto, os ficheiros disponíveis são os do servidor remoto, não os do seu computador local. Por exemplo, docker run -it -v ${PWD}:/mnt alpine irá montar o diretório remoto, não o seu diretório local atual.

O Docker Compose também utiliza o context Docker ativo. Assim que definir o context para a instância remota com:

docker context use <XXXXXX>.stackhero-network.com

todos os comandos Docker Compose que executar irão operar sobre o seu servidor remoto. Isto permite-lhe fazer deploy de aplicações multi-contentor com a mesma simplicidade de trabalhar localmente, mas agora diretamente no seu ambiente de produção.

Alterar de context com docker context é útil para utilização interativa. Para scripts ou Makefiles, a variável de ambiente DOCKER_CONTEXT oferece-lhe mais controlo. Pode encontrar mais detalhes na nossa documentação avançada.

Para saber mais sobre contexts Docker, consulte a documentação oficial Docker sobre contexts.