Docker: Primeiros passos

Como começar com o Stackhero para Docker

👋 Bem-vindo à documentação da Stackhero!

A Stackhero oferece uma solução Docker cloud CaaS (Containers as a Service) pronta a usar que proporciona uma série de benefícios, incluindo:

  • Implemente facilmente os seus containers em produção com apenas um docker-compose up.
  • Nome de domínio personalizável seguro com HTTPS (por exemplo, https://api.sua-empresa.com, https://www.sua-empresa.com, https://backoffice.sua-empresa.com).
  • Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.
  • Atualizações sem esforço com apenas um clique.

Poupe tempo e simplifique a sua vida: são necessários apenas 5 minutos para experimentar a solução de hospedagem cloud Docker CaaS da Stackhero e implementar os seus containers em produção!

O Docker CLI deve estar instalado no seu computador. Se ainda não o instalou, pode descarregá-lo aqui: https://www.docker.com/products/docker-desktop/.

Com o Stackhero para Docker, pode conectar-se ao seu servidor Docker remotamente a partir do seu computador, tal como faria ao trabalhar localmente. Esta configuração permite-lhe manter o seu fluxo de trabalho habitual, proporcionando uma forma robusta de gerir os seus containers em produção.

Para isso, são utilizados "contexts" Docker. Os contexts Docker permitem-lhe usar o Docker CLI no seu computador e especificar onde os comandos devem ser executados: no seu daemon Docker local (como de costume) ou na sua instância Stackhero para Docker.

Para se conectar remotamente à sua instância Stackhero para Docker, precisará primeiro de instalar os seus certificados. Estes certificados garantem autenticação e encriptação seguras entre o seu computador e a sua instância Stackhero para Docker.

No seu computador, pode usar o seguinte comando:

# HOST é o nome de domínio da sua instância Stackhero para Docker (<XXXXXX>.stackhero-network.com).
# SERVICE_ID é o seu ID de serviço Stackhero.
# CERTIFICATES_PASSWORD é a palavra-passe definida na sua configuração Stackhero para Docker.
(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")

Agora criou um context Docker que tem o nome do domínio do seu serviço. Para ver todos os seus contexts, pode executar o comando docker context ls.

aviso Se atualizar o domínio do seu serviço, os certificados irão mudar e precisará de os reinstalar.

Atualmente, se listar os seus containers com o comando docker ps, o seu Docker CLI usará o seu daemon Docker local, exibindo containers em execução no seu computador.

Por exemplo, pode executar este comando para obter o IP público do seu daemon Docker: docker run --rm alpine wget -q -O - ifconfig.me. Como o container está a ser executado no seu computador, verá o IP do seu router de internet como resposta.

Vamos mudar o context Docker para usar a sua instância Stackhero para Docker. Basta executar o comando docker context use <XXXXXX>.stackhero-network.com. Agora, os comandos Docker iniciados no seu computador serão executados de forma segura no seu daemon Docker remoto.

Execute novamente o mesmo comando para obter o IP público do seu daemon Docker: docker run --rm alpine wget -q -O - ifconfig.me. Deverá agora ver o IP público da sua instância Stackhero para Docker, confirmando que o seu container está a ser executado no seu servidor e não mais no seu computador.

Para voltar a usar o seu daemon Docker local, basta mudar novamente o seu context Docker para "default": docker context use default.

Quando monta um volume num container remoto, os dados acessíveis serão os do servidor remoto e não os do seu computador. Assim, executar um comando como docker run -it -v ${PWD}:/mnt alpine não montará o diretório do seu computador como poderia esperar.

Tal como o Docker CLI, o Docker-compose CLI usará o seu context atual. Portanto, uma vez que tenha mudado para a sua instância remota com docker context use <XXXXXX>.stackhero-network.com, todos os comandos Docker-compose serão executados na sua instância remota também.

Usar o comando docker context é eficaz, mas pode não ser a melhor abordagem ao lidar com contexts nos seus scripts ou Makefiles. Nesses casos, considere usar a variável de ambiente DOCKER_CONTEXT, que é detalhada nas nossas páginas de documentação avançada.