GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo usar imágenes, contenedores y archivos Docker en profundidad

Las imágenes de Docker facilitan la implementación de varios contenedores sin tener que mantener la misma imagen en varias máquinas virtuales. Puede usar un Dockerfile para automatizar la instalación y configuración de una imagen y sus dependencias. ADockerfile es un archivo de texto de los comandos (que se ejecutan en orden) que se utiliza para automatizar la instalación y configuración de una imagen de Docker. Este artículo amplía nuestra guía sobre cómo usar un Dockerfile para crear una imagen de Docker y cubre el uso en profundidad de las imágenes, los contenedores y los archivos de Docker.

Antes de comenzar

  1. Familiarícese con nuestra guía de introducción, cree y actualice un Linode e instale Docker. Alternativamente, puede implementar rápidamente un Linode actualizado y habilitado para Docker con la aplicación Docker Marketplace.

  2. Asegúrese de que su Linode esté seguro siguiendo nuestra guía sobre Configuración y protección de una instancia informática.

  3. Esta guía asume que se siente cómodo con el uso de la interfaz de línea de comandos (CLI) de Docker. Para obtener más información sobre la CLI de Docker, consulte su documentación.

  4. Revise nuestra guía para familiarizarse con los conceptos básicos de Dockerfiles.

Crea tu Dockerfile para la imagen de Docker

Docker requiere un Dockerfile en funcionamiento para sus compilaciones. Aquí, crearemos un Dockerfile que configura una imagen de Ubuntu con Apache actuando como un servidor web y usando el puerto HTTP estándar 80.

  1. En el símbolo del sistema (ya sea a través de SSH o Lish en Linode Manager), cree y cambie a un nuevo directorio:

    mkdir ~/mydockerbuild && cd ~/mydockerbuild
    
  2. Cree un Dockerfile de ejemplo para su aplicación Apache:

    touch apache_dockerfile
    
  3. Abra el Dockerfile usando el editor de texto de su elección (para este ejemplo, usamos nano):

    nano apache_dockerfile
    
  4. Copie el siguiente ejemplo en su Dockerfile. Esto crea un Dockerfile que genera una imagen de Ubuntu actualizada, establece la información del mantenedor, instala Apache, abre el puerto 80 del contenedor y finalmente inicia un servidor Apache cuando se ejecuta:

    Archivo:apache_dockerfile
    Nota El ARG DEBIAN_FRONTEND=noninteractive La instrucción asegura que el subsiguiente RUN apt-get los comandos se ejecutan sin necesidad de entrada adicional del usuario al crear imágenes. Esta instrucción también podría escribirse usando ENV en lugar de ARG para hacer que la variable de entorno persista en los contenedores que se implementan con la imagen. Debido a que no se puede esperar la falta de interactividad cuando se trabaja dentro de dichos contenedores, ARG se recomienda en este caso.
  5. Guarde y cierre el archivo.

  6. Crear una imagen de Docker desde Dockerfile

    1. Cree una imagen etiquetada como apache_image desde Dockerfile usando docker build comando:

      docker build ~/mydockerbuild -f apache_dockerfile -t apache_image
      
    2. Una vez que finalice la compilación y regrese al símbolo del sistema, muestre las imágenes disponibles de su sistema con el siguiente comando:

       docker images
      

      El resultado debería verse así (el repositorio "ubuntu" también está disponible debido a la línea "FROM ubuntu" en el Dockerfile):

      REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
      apache_image   latest    7e5c14739da5   7 seconds ago   215MB
      ubuntu         latest    7e0aa2d69a15   6 weeks ago     72.7MB
      Nota

      De forma predeterminada, las imágenes creadas se etiquetan como "más reciente". Si desea cambiar la etiqueta, como "desarrollo", formatee el comando de la siguiente manera:

      docker build ~/mydockerbuild -f apache_dockerfile -t apache_image:development
      

    Ejecutando sus imágenes Docker como contenedores

    Cuando ejecutas docker run comando, inicia un contenedor Docker vinculado a su sesión de terminal. Esto también se conoce como ejecutar un proceso en primer plano . Cuando su proceso raíz está en primer plano y está vinculado a una sesión de terminal, su contenedor sale tan pronto como cierra la sesión de terminal. Si desea que su contenedor se ejecute incluso después de que se cierre la sesión de su terminal, puede ejecutar su contenedor en separado modo. Esto ejecuta su contenedor en fondo .

    Para ejecutar la imagen de Docker como un contenedor en modo separado:

    1. Ingrese el siguiente comando para construir un contenedor llamado apache con tu imagen, usando -d argumento para garantizar que su contenedor se ejecute en segundo plano:

      docker run --name apache -d apache_image
      
    2. Una vez que regrese al símbolo del sistema, ejecute el siguiente comando para enumerar sus contenedores activos y confirme que apache ejecutándose en segundo plano:

      docker ps
      
      CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
      1d5e1da50a86   apache_image   "apache2ctl -D FOREG…"   3 minutes ago   Up 3 minutes   80/tcp    apache
    3. Ahora puede realizar su trabajo de desarrollo con el servidor Apache y seguir teniendo acceso a la línea de comandos. Sin embargo, su contenedor no es de acceso público ya que carece de configuraciones de puertos adicionales. En la siguiente sección, reconstruirá el contenedor con configuraciones de puertos que le permitan acceder al servidor web. Por ahora, detenga el contenedor:

      docker stop apache
      
      Nota Puede ingresar la ID del contenedor en lugar de apache en el comando anterior.
    4. Introduzca docker ps de nuevo para asegurarse de que todo su apache contenedor ya no se está ejecutando.

    5. Ahora que el contenedor se ha detenido, puede eliminarlo:

      docker rm apache
      
    Precaución

    Al eliminar un contenedor de esta manera, se eliminan todos los datos dentro del contenedor. Si ha realizado ajustes que desea trasladar a un nuevo contenedor, puede usar docker commit en su lugar. para crear una nueva imagen que incluya tus actualizaciones:

    docker commit apache apache_image_update
    

    Luego, puede implementar un nuevo contenedor basado en el nuevo apache_image_update imagen en la siguiente sección.

    Configure los puertos de su contenedor Docker

    Puedes usar el run opciones del comando para configurar diferentes aspectos de su contenedor. Cuando su contenedor se ejecuta en un host remoto y sirve su aplicación, puede configurar sus puertos para exponer la aplicación a los usuarios.

    Por ejemplo, puede configurar su apache contenedor para usar el puerto de host 8080 y puerto de contenedores 80 como con el comando de ejemplo a continuación. Observe el -d opción utilizada en el comando para ejecutar el contenedor como un proceso separado.

    docker run --name apache -p 8080:80 -d apache_image
    

    La sintaxis general de este comando es la siguiente:

    docker run -–name <container name> -p <network port>:<container port> -d <container image label or ID>
    

    Cada parámetro se describe en la siguiente lista:

    • <container name> :Nombre del contenedor Docker
    • <host port> :puerto de host que está asignado al puerto abierto del contenedor
    • <container port> :Puerto donde escucha el contenedor Docker
    • <container image name> :nombre de la imagen de Docker utilizada para su implementación

    Ahora, navegue a la dirección IP de su Linode en el puerto de host 8080 navegando a http://<your Linode's IP address>:8080 en un navegador web. Debería ver la "Página predeterminada de Apache2 Ubuntu" servida desde su contenedor Docker.

    Precaución Al implementar contenedores con configuraciones de puertos, Docker también puede crear reglas de firewall de host para permitir el acceso público a esos contenedores. Esto puede anular o entrar en conflicto con las reglas del servidor de seguridad que ha configurado en su Linode.

    Lecturas adicionales

    Esta guía y Cómo usar un Dockerfile para crear una imagen de Docker cubrieron los conceptos básicos del uso de Dockerfiles para crear imágenes y contenedores, pero apenas rascan la superficie de lo que puede lograr con Docker. Para más información:

    • visite la documentación oficial de Mejores prácticas de Dockerfile para obtener más información sobre Dockerfiles;

    • y, a pesar de su nombre, la guía Get Started de Docker es un tutorial detallado que conduce a guías aún más detalladas, como la implementación de aplicaciones en la nube y la configuración de CI/CD. (integración y despliegue continuos).

    Más información

    Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.

    • Prácticas recomendadas para escribir Dockerfiles
    • Imágenes oficiales de Docker en Docker Hub
    • Documentos de Docker

    Docker
    1. Cómo eliminar todas las imágenes, contenedores, volúmenes, redes y recursos no utilizados de Docker

    2. Cómo exportar e importar contenedores Docker

    3. Cómo instalar y usar Docker en Ubuntu 20.04

    4. Cómo usar un Dockerfile para crear una imagen de Docker

    5. Cómo hacer una copia de seguridad y restaurar contenedores Docker

    ¿Qué es Docker Compose y cómo se usa?

    Cómo usar Docker Cp para copiar archivos entre el host y los contenedores

    Cómo limpiar y eliminar imágenes de Docker

    Cómo usar Hadolint para filtrar sus Dockerfiles

    Cómo instalar y usar Docker en Ubuntu 20.04

    Cómo instalar y usar Docker en AlmaLinux 8

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      FROM ubuntu
      MAINTAINER John Doe [email protected]
      ARG DEBIAN_FRONTEND=noninteractive
      RUN apt-get update
      RUN apt-get upgrade -y
      RUN apt-get install apache2 -y
      RUN apt-get clean
      EXPOSE 80
      CMD ["apache2ctl","-D","FOREGROUND"]