Conceptos básicos de Docker para Amazon ECS - Amazon Elastic Container Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Conceptos básicos de Docker para Amazon ECS

Docker es una tecnología que proporciona las herramientas para crear, ejecutar, probar e implementar aplicaciones distribuidas basadas en contenedores Linux. Amazon ECS utiliza imágenes de Docker en definiciones de tareas para lanzar contenedores como parte de tareas en los clústeres.

AWS y Docker han colaborado para crear una experiencia de desarrollador simplificada que le permite implementar y administrar contenedores en Amazon ECS directamente mediante herramientas de Docker. Ahora puede crear y probar sus contenedores localmente utilizando Docker Desktop y Docker Compose y, a continuación, implementarlos en Amazon ECS en Fargate. Para comenzar a utilizar la integración de Amazon ECS y Docker, descargue Docker Desktop y, si lo desea, inscríbase para obtener un ID de Docker. Para obtener más información, consulte Docker Desktop y Docker ID signup.

Docker proporciona un tutorial sobre la implementación de contenedores en Amazon ECS. Para obtener más información, consulte Implementación de contenedores Docker en Amazon ECS.

En la documentación de esta guía se presupone que el lector posee conocimientos básicos sobre Docker y su funcionamiento. Para obtener más información sobre Docker, consulte ¿Qué es Docker? y la descripción de Docker.

Instalar Docker

importante

Si ya tiene Docker instalado, pase a Creación de una imagen de Docker.

Docker Desktop es una aplicación fácil de instalar para su entorno Mac o Windows que le permite crear y compartir aplicaciones y microservicios en contenedores. El escritorio de Docker incluye Docker incluye Docker Engine, el cliente de la CLI de Docker, Docker Compose y otras herramientas útiles cuando se utiliza Docker con Amazon ECS. Para obtener más información sobre cómo instalar Docker Desktop en su sistema operativo preferido, consulte Información general de Docker Desktop.

Si no necesita un entorno de desarrollo local y prefiere utilizar una instancia Amazon EC2 para utilizar Docker, proporcionamos los siguientes pasos para lanzar una instancia Amazon EC2 e instalar Docker Engine y la CLI de Docker.

Para instalar Docker en una instancia de Amazon EC2

  1. Lance una instancia con la Amazon Linux 2 de Amazon Linux o AMI. Para obtener más información, consulte Lanzamiento de una instancia en la Guía del usuario de Amazon EC2 para instancias de Linux.

  2. Conéctese a la instancia. Para obtener más información, consulte Conexión con la instancia de Linux en la Guía del usuario de Amazon EC2 para instancias de Linux.

  3. Actualice la caché de paquetes y los paquetes instalados en la instancia.

    sudo yum update -y
  4. Instale el paquete de Docker Engine más reciente.

    Amazon Linux 2

    sudo amazon-linux-extras install docker

    Amazon Linux.

    sudo yum install docker
  5. Abra el servicio de Docker.

    sudo service docker start
  6. Agregue el ec2-user al grupo docker para que pueda ejecutar comandos de Docker sin usar sudo.

    sudo usermod -a -G docker ec2-user
  7. Cierre sesión y vuelva a iniciarla para actualizar los nuevos permisos de grupo de docker Para ello, cierre la ventana de su terminal de SSH actual y vuelva a conectarse a la instancia en una ventana nueva. De esta forma, la nueva sesión de SSH tendrá los permisos de grupo de docker adecuados.

  8. Compruebe que el ec2-user puede ejecutar comandos de Docker sin sudo.

    docker info
    nota

    En algunos casos, es posible que tenga que reiniciar su instancia para que el ec2-user tenga los permisos necesarios para acceder al demonio de Docker. Intente reiniciar su instancia si ve el siguiente error:

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Creación de una imagen de Docker

Amazon ECSLas definiciones de tareas de usan imágenes de Docker para lanzar contenedores en las instancias de contenedor de sus clústeres. En esta sección va a crear una imagen de Docker de una aplicación web simple y probarla en su sistema local o su instancia Amazon EC2. A continuación, enviará la imagen a un registro de contenedor (como Amazon ECR o Docker Hub) para poder utilizarla en una definición de tarea de Amazon ECS

Creación de una imagen Docker de una aplicación web simple

  1. Cree un archivo denominado Dockerfile. Un Dockerfile es un manifiesto que describe la imagen base para su imagen Docker y qué desea instalar y que se ejecute en ella. Para obtener más información acerca de los archivos Docker, consulte Docker Reference.

    touch Dockerfile
  2. Editar el Dockerfile que acaba de crear y añadir el siguiente contenido.

    FROM ubuntu:18.04 # Install dependencies RUN apt-get update && \ apt-get -y install apache2 # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh

    Este Dockerfile utiliza la imagen Ubuntu 18.04. Las instrucciones RUN actualizan las cachés de paquete, instalan algunos paquetes de software para el servidor web y, a continuación, escriben el código "Hello World!" en la raíz de documentos del servidor web. El folleto EXPOSE expone el puerto 80 en el contenedor y las instrucciones CMD inician el servidor web.

  3. Cree la imagen Docker desde el Dockerfile.

    nota

    Algunas versiones de Docker pueden requerir la ruta completa a su Dockerfile en el siguiente comando en lugar de la ruta relativa que se muestra a continuación.

    docker build -t hello-world .
  4. Ejecute docker images para comprobar que la imagen se haya creado correctamente.

    docker images --filter reference=hello-world

    Salida:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
  5. Ejecute la nueva imagen. La opción -p 80:80 asigna el puerto 80 expuesto en el contenedor al puerto 80 del sistema de host. Para obtener más información acerca de docker run, diríjase a la referencia de ejecución de Docker.

    docker run -t -i -p 80:80 hello-world
    nota

    La salida desde el servidor web Apache se muestra en la ventana de la terminal. Puede hacer caso omiso del mensaje "Could not reliably determine the server's fully qualified domain name

  6. Abra un navegador y encuentre el servidor que está ejecutando Docker y alojando su contenedor.

    • Si está utilizando una instancia EC2, este es el valor de DNS público para el servidor, que es la misma dirección que utiliza para conectarse a la instancia con SSH. Asegúrese de que el grupo de seguridad para la instancia permite el tráfico entrante en el puerto 80.

    • Si ejecuta Docker de forma local, dirija el navegador a http://localhost/.

    • Si utiliza docker-machine en un equipo Windows o Mac, busque la dirección IP del VirtualBox VM que aloja Docker con el comando docker-machine ip, sustituyendo machine-name con el nombre de la máquina de Docker que está utilizando.

      docker-machine ip machine-name

    Debería ver una página web con su aplicación "Hello World!" statement.

  7. Detenga el contenedor de Docker escribiendo Ctrl + c.

Envíe la imagen a Amazon EC2 Container Registry

Amazon ECR es un servicio administrado de registro de Docker de AWS Puede utilizar la CLI de Docker para insertar, extraer y administrar imágenes en sus repositorios de Amazon ECR. Para obtener información detallada sobre el producto Amazon ECR, casos prácticos destacados de clientes y preguntas frecuentes, consulte las páginas de detalles del producto Amazon EC2 Container Registry.

Para esta sección, se necesita lo siguiente:

Etiquetado de la imagen y envío a Amazon ECR

  1. Cree un repositorio de Amazon ECR para almacenar su imagen hello-world En los resultados, anote el repositoryUri

    aws ecr create-repository --repository-name hello-repository --region region

    Salida:

    {
        "repository": {
            "registryId": "aws_account_id",
            "repositoryName": "hello-repository",
            "repositoryArn": "arn:aws:ecr:region:aws_account_id:repository/hello-repository",
            "createdAt": 1505337806.0,
            "repositoryUri": "aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository"
        }
    }
  2. Etiquete la imagen de hello-world con el valor de repositoryUri del paso anterior.

    docker tag hello-world aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
  3. Ejecute el comando aws ecr get-login-password. Especifique el URI del registro en el que desea autenticar. Para obtener más información, consulte Autenticación del registro en la Guía del usuario de Amazon EC2 Container Registry.

    aws ecr get-login-password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

    Salida:

    Login Succeeded
    importante

    Si recibe un error, instale o actualice a la versión más reciente de la AWS CLI. Para obtener más información, consulte Instalación de la AWS Command Line Interface en la AWS Command Line Interface Guía del usuario.

  4. Envíe la imagen a Amazon ECR con el valor repositoryUri del paso anterior.

    docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository

Eliminar recursos

Cuando haya terminado de experimentar con su imagen de Amazon ECR, puede eliminar el repositorio para que no se le cobre por el almacenamiento de imágenes.

aws ecr delete-repository --repository-name hello-repository --region region --force