Docker: Primeros pasos

Gestión remota de Docker rápida y segura con Stackhero for Docker

Bienvenido a la documentación de Stackhero

Stackhero ofrece una plataforma Docker cloud CaaS (Containers as a Service) lista para usar, diseñada para despliegues de contenedores rápidos y fiables:

  • Despliegue en producción con un simple docker-compose up. No necesita configuración adicional: simplemente inicie sus contenedores.
  • Elija su propio nombre de dominio, asegurado automáticamente con HTTPS (por ejemplo: https://api.su-empresa.com, https://www.su-empresa.com o https://backoffice.su-empresa.com).
  • Disfrute de un alto rendimiento y una seguridad robusta sobre infraestructura privada y dedicada.
  • Aplique actualizaciones con un solo clic para un mantenimiento sencillo y sin complicaciones.

Puede tener sus contenedores en producción en unos cinco minutos. Stackhero gestiona la infraestructura, las actualizaciones y la seguridad por usted, para que pueda centrarse en el desarrollo de sus aplicaciones. Lea más sobre el alojamiento cloud Docker CaaS.

Docker CLI debe estar instalado en su ordenador. Si aún no lo ha instalado, puede descargarlo desde el sitio oficial de Docker: Docker Desktop.

Con Stackhero for Docker, puede gestionar sus contenedores de forma remota con Docker CLI, igual que lo haría en local. Así mantiene su flujo de trabajo habitual, pero ahora puede ejecutar comandos directamente en su servidor Docker listo para producción: de manera segura y eficiente.

Los "contextos" de Docker hacen esto posible. Los contextos permiten indicar a Docker CLI dónde enviar sus comandos: a su demonio Docker local o a su instancia Stackhero for Docker. Cambiar de contexto es rápido y transparente.

Para conectarse de forma segura a su instancia Stackhero for Docker, debe instalar sus certificados en su ordenador. Estos certificados gestionan la autenticación y el cifrado, asegurando que su conexión sea privada y protegida.

Puede utilizar el siguiente comando para descargar e instalar los certificados:

# HOST es el nombre de dominio de su instancia Docker (<XXXXXX>.stackhero-network.com).
# SERVICE_ID es el identificador de su servicio Stackhero.
# CERTIFICATES_PASSWORD es la contraseña definida en la configuración de Docker en el panel de 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 crea un contexto de Docker con el nombre de su dominio de servicio. Puede ver todos los contextos disponibles con:

docker context ls

Si actualiza el dominio de su servicio, los certificados cambiarán. Tendrá que reinstalarlos para volver a conectarse de forma segura.

Por defecto, al ejecutar docker ps se muestran los contenedores de su máquina local. Por ejemplo, al ejecutar:

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

se devuelve la IP pública de su ordenador, ya que el contenedor se ejecuta localmente.

Para trabajar de forma remota, cambie el contexto de Docker a su instancia Stackhero for Docker:

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

Ahora, cada comando de Docker CLI se ejecutará en su servidor Docker remoto. Si ejecuta el mismo comando para comprobar la IP:

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

verá la IP pública de su instancia Stackhero for Docker. Esto confirma que sus contenedores se están ejecutando en el servidor remoto.

Para volver a su demonio Docker local, simplemente ejecute:

docker context use default

Cuando monte un volumen en un contenedor remoto, los archivos disponibles serán los del servidor remoto, no los de su máquina local. Por ejemplo, docker run -it -v ${PWD}:/mnt alpine montará el directorio remoto, no su directorio local actual.

Docker Compose también utiliza el contexto Docker actual. Una vez que haya establecido el contexto en la instancia remota con:

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

cualquier comando de Docker Compose que ejecute operará sobre su servidor remoto. Así, desplegar aplicaciones multicontenedor es tan sencillo como trabajar en local, pero directamente en su entorno de producción.

Cambiar de contexto con docker context es útil para uso interactivo. Para scripts o Makefiles, la variable de entorno DOCKER_CONTEXT le ofrece un mayor control. Puede encontrar más detalles en nuestra documentación avanzada.

Para profundizar en el uso de contextos de Docker, la documentación oficial de Docker sobre contextos ofrece información adicional.