Aprender Docker, un enfoque práctico

Aprender Docker, un enfoque práctico
Автор книги: id книги: 2282063     Оценка: 0.0     Голосов: 0     Отзывы, комментарии: 0 1881,72 руб.     (18,34$) Читать книгу Купить и скачать книгу Электронная книга Жанр: Математика Правообладатель и/или издательство: Bookwire Дата добавления в каталог КнигаЛит: ISBN: 9788426734488 Скачать фрагмент в формате   fb2   fb2.zip Возрастное ограничение: 0+ Оглавление Отрывок из книги

Реклама. ООО «ЛитРес», ИНН: 7719571260.

Описание книги

Si quiere aprender a utilizar la tecnología de contenedores que ha revolucionado el desarrollo y la distribución de aplicaciones web, ha llegado al libro indicado.
Antes de que Docker apareciese en la industria del desarrollo de software, era complicado garantizar la consistencia entre los entornos de desarrollo y producción. Era habitual encontrarse con aplicaciones que no se ejecutaban de forma correcta en el entorno de producción porque utilizaban dependencias con diferentes versiones de las que se habían utilizado en el entorno de desarrollo.
La tecnología de contenedores de software soluciona este problema, ya que permite empaquetar y distribuir una aplicación con todas las dependencias que necesita garantizando que se va a ejecutar de la misma manera sobre cualquier tipo de infraestructura. Gracias a esta forma de desarrollar y distribuir las aplicaciones, se ha conseguido eliminar las inconsistencias entre los entornos de desarrollo y producción.
Los desarrolladores de aplicaciones ya no necesitan crear máquinas virtuales pesadas en sus equipos de trabajo. Docker les permite disponer de un entorno de desarrollo mucho más ligero, que utiliza menos recursos y ofrece mayores prestaciones.
El uso de los contenedores ha permitido acelerar el proceso de desarrollo de las aplicaciones, así como facilitar la forma de distribuirlas y la automatización del despliegue en producción. Cada vez hay más equipos de desarrollo y operaciones que están utilizando la tecnología de contenedores Docker en sus flujos de trabajo. Si todavía no sabe utilizar Docker y quiere aprender para mejorar profesionalmente, no espere más, este libro le ayudará a conseguirlo. José Juan Sánchez Hernández es ingeniero en Informática y tiene un máster en Técnicas Informáticas Avanzadas por la Universidad de Almería, donde trabajó como investigador. Sus principales líneas de investigación están en el área de la compresión y transmisión de imágenes, sobre las que ha realizado publicaciones en congresos nacionales e internacionales. También ha trabajado como analista de sistemas y programador en el ámbito de la empresa pública y privada. Actualmente desarrolla su carrera profesional como profesor de enseñanza secundaria en la especialidad de Informática y es docente en los ciclos formativos de grado superior de Administración de Sistemas Informáticos en Red y Desarrollo de Aplicaciones Web.

Оглавление

José Juan Sánchez Hernández. Aprender Docker, un enfoque práctico

Índice general

Lista de siglas y acrónimos

Acerca de este libro

CAPÍTULO 1. Conceptos básicos. 1.1. ¿Qué es Docker?

1.1.1. Docker como tecnología de contenedores

1.1.2. Docker, Inc

1.2. ¿Qué ventajas nos aporta el uso de Docker?

1.3. Breve historia de las tecnologías de aislamiento

1.4. ¿Qué es una máquina virtual?

1.5. ¿Qué es un contenedor?

1.6. Analogía con los contenedores de transporte marítimo

1.7. Diferencias entre contenedores y máquinas virtuales

1.8. Arquitectura de Docker

1.9. Cliente de Docker

Ejemplo de ejecución del comando docker pull

Ejemplo de ejecución del comando docker run

1.9.1. Docker CLI

1.9.2. Docker Compose

1.10. Docker Engine

1.10.1. Docker Engine API

Ejemplo

1.10.2. Docker daemon

1.11. Container runtime

1.11.1. containerd

1.11.2. runc

1.12. Docker Registry

1.12.1. Docker Hub

1.12.2. Otros registros

1.13. Objetos de Docker

1.13.1. Imágenes

1.13.2. Contenedores

Contenedores Linux y contenedores Windows

1.13.3. Volúmenes

1.13.4. Redes

1.14. Orquestación de contenedores

Docker Swarm

Kubernetes

1.15. Organizaciones y estándares

1.15.1. Open Container Initiative (OCI)

1.15.2. Cloud Native Computing Foundation (CNCF)

1.16. Alternativas a Docker

CAPÍTULO 2. Instalación de Docker. 2.1. Docker Engine Community

2.2. Instalación de Docker Engine en Linux

2.2.1. Métodos de instalación en Ubuntu

2.2.2. Instalación en Ubuntu utilizando el script oficial

2.2.3. Instalación en Ubuntu desde los repositorios oficiales de Docker

Configuración del repositorio oficial de Docker

Instalación de Docker Engine

Comprobación de la instalación

2.2.4. Pasos posteriores a la instalación en Linux

Configuración del usuario

Configuración de Docker Engine para que se inicie automáticamente

2.3. Instalación de Docker Desktop en Windows 10

Hyper-V

WSL 2

2.3.1. Instalación de Docker Desktop utilizando WSL 2 como backend

Requisitos mínimos del sistema

Instalación de WSL 2 en Windows 10

Instalación de Docker Desktop en Windows 10

Opciones de configuración de Docker Desktop

Contenedores Linux y contenedores Windows

Comprobación de la instalación

2.4. Instalación de Docker Engine en Windows Server

Comprobación de la instalación

2.5. Instalación de Docker Desktop en macOS

Requisitos mínimos del sistema para un Mac con chip de Apple (arm64)

Requisitos mínimos del sistema para un Mac con chip de Intel (amd64)

Instalación de Docker Desktop en macOS

Opciones de configuración de Docker Desktop

Comprobación de la instalación

2.6. Play with Docker

CAPÍTULO 3. Imágenes Docker. 3.1. ¿Qué es una imagen Docker?

3.2. ¿Qué es un repositorio de imágenes?

3.3. ¿Qué es un tag?

Ejemplo de una imagen con varias etiquetas

3.4. ¿Qué es el digest de una imagen?

3.5. ¿Qué es el namespace de un repositorio?

Namespaces utilizados en Docker Hub

Namespaces anidados

3.6. ¿Qué es un registry?

3.7. Docker Hub

3.7.1. Repositorios de imágenes oficiales

Namespace para los repositorios de imágenes oficiales

3.7.2. Repositorios de imágenes de organizaciones verificadas

Namespace para los repositorios de imágenes verificadas

3.7.3. Repositorios de imágenes de la comunidad

Namespace para los repositorios de imágenes de la comunidad

3.8. El archivo Dockerfile

FROM

ARG

ENV

LABEL

RUN

COPY

ADD

EXPOSE

VOLUME

WORKDIR

HEALTHCHECK

USER

SHELL

ENTRYPOINT

CMD

3.9. Creación de una imagen a partir de un archivo Dockerfile

Ejemplo ‒ Creación de una imagen con una aplicación Python

3.10. Cómo publicar una imagen en Docker Hub

Creación de un Docker ID

Inicio de sesión desde la línea de comandos

Creación de una imagen local que incluya el nombre del usuario de Docker Hub

Publicar una imagen local en un repositorio de Docker Hub

3.11. Capas de una imagen

Ejemplo ‒ Análisis de las capas de la imagen hola-mundo:latest

Ejemplo ‒ Análisis de las capas de la imagen alpine:latest

Cómo se comparten capas entre imágenes

Aclaración sobre los identificadores de las capas de una imagen

3.12. Soporte para múltiples arquitecturas

3.13. Formato de las imágenes Docker

3.14. Buscar imágenes en Docker Hub ‒ docker search

Opciones

3.14.1. Buscar imágenes por nombre

Limitar el número de resultados de una búsqueda

Mostrar el texto de la descripción sin truncar

3.14.2. Buscar imágenes utilizando filtros

Filtrar por el número de estrellas

Filtrar solo imágenes oficiales

Filtrar solo imágenes con build automatizado

3.15. Administración de imágenes – docker image

Comandos

Equivalencia entre comandos

3.16. Descargar imágenes – docker pull

Opciones

Sintaxis nueva

3.16.1. Descargar imágenes desde Docker Hub. Cómo descargar una imagen etiquetada como latest

Cómo descargar una imagen indicando una etiqueta

Cómo descargar una imagen indicando un digest

3.16.2. Descargar imágenes desde un registry diferente a Docker Hub

Descarga de imágenes desde un registro privado

Descarga de imágenes desde Microsoft Container Registry

Descarga de imágenes desde Red Hat Container Catalog

3.17. Mostrar imágenes – docker images

Opciones

Sintaxis nueva

3.17.1. Mostrar las imágenes que tenemos descargadas

3.17.2. Mostrar las imágenes intermedias

3.17.3. Mostrar el identificador de las imágenes

3.17.4. Mostrar el digest de las imágenes

Diferencia entre DIGEST e IMAGE ID

3.18. Eliminar imágenes – docker rmi

Opciones

Sintaxis nueva

Ejemplo

3.18.1. Eliminar una imagen por su tag

3.18.2. Eliminar una imagen por su identificador

Ejemplo

Cómo eliminar una imagen con múltiples tags

3.18.3. Eliminar todas las imágenes, excepto las dangling images

3.18.4. Eliminar las dangling images

3.18.5. Eliminar las imágenes que no están siendo utilizadas

3.19. Consultar el historial de una imagen – docker history

Opciones

Sintaxis nueva

Ejemplo

3.20. Mostrar información detallada – docker inspect

Sintaxis nueva

Ejemplo

CAPÍTULO 4. Contenedores Docker. 4.1. Ciclo de vida de un contenedor

4.2. Administración de contenedores – docker container

Equivalencia entre comandos

4.3. Creación y ejecución de contenedores – docker run

Opciones

Sintaxis nueva

Formas de uso

4.4. Hello World!

Análisis del archivo Dockerfile para Linux

Análisis del archivo Dockerfile para Windows

Creación de un contenedor Linux

Creación de un contenedor Windows

4.5. Obtener el listado de contenedores – docker ps

Opciones

Sintaxis nueva

4.5.1. Obtener el listado de los contenedores que están en ejecución

Ejemplo

4.5.2. Obtener el listado de todos los contenedores

Ejemplo

4.5.3. Obtener el identificador de los contenedores que están en ejecución

Ejemplo

4.5.4. Obtener el identificador de todos los contenedores

Ejemplo

4.6. Ejecutar un comando dentro de un contenedor

Ejemplo

4.7. Ejecutar un contenedor en modo interactivo

Ejemplo de un contenedor en modo interactivo con Ubuntu

Opción --rm

Opción --name

4.8. Eliminar contenedores – docker rm

Opciones

Sintaxis nueva

4.8.1. Eliminar un contenedor que está detenido

Ejemplo

4.8.2. Eliminar un contenedor que está en ejecución

Ejemplo

4.8.3. Eliminar un contenedor y sus volúmenes anónimos asociados

4.8.4. Eliminar los contenedores que están detenidos

4.8.5. Eliminar los contenedores que están en ejecución y detenidos

4.9. Mostrar la salida estándar de un contenedor – docker logs

Opciones

Sintaxis nueva

Ejemplo

4.10. Creación de un contenedor en segundo plano

Ejemplo de un contenedor en segundo plano con un servidor web

4.11. Publicar los puertos de un contenedor

4.11.1. Opción -p, --publish

Ejemplo

4.11.2. Opción -P, --publish-all

Ejemplo

4.12. Cómo conectarnos a un contenedor en ejecución

4.12.1. docker attach

Opciones

Sintaxis nueva

Ejemplo

4.12.2. docker exec

Sintaxis nueva

Cómo crear un nuevo terminal en un contenedor que está en ejecución

Ejemplo

4.13. Copiar archivos y directorios – docker cp

Opciones

Sintaxis nueva

Ejemplo de cómo copiar un archivo de un contenedor al host de Docker

Ejemplo de cómo copiar un archivo del host de Docker a un contenedor

4.14. Cómo detener un contenedor – docker stop

Opciones

Sintaxis nueva

Ejemplo

4.15. Cómo iniciar un contenedor – docker start

Opciones

Sintaxis nueva

Ejemplo

4.16. Políticas de reinicio

Ejemplo

CAPÍTULO 5. Almacenamiento en Docker. 5.1. Almacenamiento en Docker

5.2. Bind mounts

¿Cuándo se recomienda utilizar un bind mount?

5.3. Formas de crear un bind mount en un contenedor

Opción -v, --volume

Opción --mount

Diferencias entre la opción -v y --mount

5.4. Crear un bind mount de solo lectura

5.5. Cómo crear las rutas de los directorios en un bind mount

Linux y macOS

Windows

5.6. Ejemplo para compartir el código fuente de una aplicación

5.7. Ejemplo para compartir un archivo de configuración

5.8. Volúmenes

¿Cuándo se recomienda utilizar un volumen?

5.9. Administración de volúmenes – docker volume

Comandos

5.10. Creación de un volumen. 5.10.1. Creación de un volumen con el comando docker volume create

Opciones

Ejemplo de creación de un volumen con nombre

Ejemplo de creación de un volumen anónimo

5.10.2. Creación de un volumen al crear un contenedor con docker run

Opción -v, --volume

Ejemplo de creación de un volumen con nombre con la opción -v

Ejemplo de creación de un volumen anónimo con la opción -v

Opción --mount

Ejemplo de creación de un volumen con nombre con la opción --mount

Ejemplo de creación de un volumen anónimo con la opción --mount

5.11. Inspeccionar un volumen

Opciones

Ejemplo

5.12. Obtener el listado de volúmenes

Opciones

Ejemplo

5.13. Eliminar volúmenes que no están en uso

Opciones

Ejemplo

5.14. Eliminar volúmenes

Opciones

Ejemplo

5.15. Ejemplo de creación de un contenedor con MySQL

5.15.1. Creación de un contenedor MySQL con un volumen anónimo

5.15.2. Creación de un contenedor MySQL con un volumen con nombre

Ejercicio propuesto

5.15.3. Inicializar un contenedor de MySQL con una base de datos

Ejemplo para importar una base de datos en un contenedor de MySQL

CAPÍTULO 6. Redes en Docker. 6.1. Redes en Docker

6.1.1. Container Network Model (CNM)

6.1.2. libnetwork

6.1.3. Drivers de red

Drivers de red para contenedores Linux

Drivers de red para contenedores Windows

6.2. Redes de tipo bridge

Diferencias entre la red bridge por defecto y las redes bridge definidas por el usuario

6.3. Administración de redes – docker network

Comandos

6.4. Obtener el listado de redes

Opciones

Ejemplo para obtener el listado de redes

Ejemplo para mostrar el identificador completo de las redes

Ejemplo de cómo aplicar filtros en el listado de redes

Ejemplo de cómo formatear la salida del comando con una plantilla de Go

6.5. Creación de una red

Opciones

Ejemplo de creación de una red bridge definida por el usuario

Ejemplo de creación de una red bridge definida por el usuario con opciones avanzadas

6.6. Conectar un contenedor a una red

6.6.1. Con el comando docker network connect

Opciones

Ejemplo para conectar un contenedor a una red

Ejemplo para crear un alias de red de un contenedor

6.6.2. Con la opción --network cuando se crea un contenedor

Ejemplo para conectar un contenedor a una red con la opción --network

Ejemplo para crear un alias de red de un contenedor con la opción --network-alias

6.7. Desconectar un contenedor de una red

Opciones

Ejemplo

6.8. Inspeccionar una red

Opciones

Ejemplo

6.9. Eliminar las redes que no están en uso

Opciones

Ejemplo

6.10. Eliminar redes

Ejemplo

6.11. Cómo conectar un contenedor Adminer con MySQL

6.11.1. Utilizando enlaces entre contenedores con la opción --link

Creación de un alias de red con la opción --link

Uso de la variable de entorno ADMINER_DEFAULT_SERVER

Inspeccionamos la red bridge por defecto

6.11.2. Utilizando una red bridge definida por el usuario

Creación de un alias con la opción --network-alias

Inspeccionamos la red bridge que hemos creado

6.12. Cómo conectar WordPress, MySQL y phpMyAdmin

Creación de la red bridge

Creación de un volumen para MySQL

Creación de un contenedor con MySQL

Creación de un volumen para WordPress

Creación de un contenedor con WordPress

Creación de un contenedor con phpMyAdmin

CAPÍTULO 7. Docker Compose. 7.1. ¿Qué es Docker Compose?

7.1.1. La especificación Compose

7.1.2. La implementación Docker Compose

7.2. Instalación de Docker Compose v2

Instalación de Docker Compose v2 en Linux como un plugin de Docker CLI

7.3. El archivo de configuración de Docker Compose

Nombre del archivo de configuración

Secciones del archivo de configuración

7.3.1. version

7.3.2. services

Claves de configuración para los servicios

image

build

command

entrypoint

container_name

ports

volumes

networks

environment

env_file

depends_on

restart

profiles

7.3.3. volumes

Ejemplo

7.3.4. networks

Ejemplo

7.3.5. configs

Ejemplo

7.3.6. secrets

Ejemplo

7.4. Comandos de Docker Compose

Lista de comandos más utilizados con docker compose

7.5. Ejemplo de un servicio Apache HTTP Server

Contenido del directorio de trabajo

Contenido del archivo docker-compose.yml

Crear y ejecutar los servicios en segundo plano

Consultar la lista de contenedores que están en ejecución

Diferencia entre docker ps y docker compose ps

Consultar la salida estándar (STDOUT)

Ejecutar un comando en un contenedor que está en ejecución

Detener y eliminar todos los servicios

7.6. Ejemplo de un servicio MySQL

Contenido del directorio de trabajo

Contenido del archivo docker-compose.yml

environment

Crear y ejecutar los servicios en segundo plano

Consultar la lista de contenedores que están en ejecución

Detener y eliminar todos los servicios

7.7. Cómo utilizar archivos con variables de entorno

Definir variables de entorno en archivos .env

Contenido del archivo .env

Contenido del directorio de trabajo

Contenido del archivo docker-compose.yml

Cómo utilizar archivos con variables de entorno que no se llamen .env

7.8. Ejemplo de una aplicación con dos servicios

Servicio: mysql

Servicio: phpmyadmin

Contenido del directorio de trabajo

Contenido del archivo .env

Contenido del archivo docker-compose.yml

depends_on

restart

7.9. Despliegue de una aplicación WordPress

Redes

Contenido del directorio de trabajo

Contenido del archivo .env

Contenido del archivo docker-compose.yml

7.10. Creación de un entorno de desarrollo LAMP

Contenido del directorio de trabajo

Contenido del archivo .env

Contenido del archivo database.sql

Contenido del directorio src

Servicio: apache

Servicio: mysql

Servicio: phpmyadmin

Contenido del archivo docker-compose.yml

7.11. Creación de un entorno de desarrollo LEMP

Contenido del directorio de trabajo

Servicio: nginx

Servicio: php-fpm

Servicios: mysql y phpmyadmin

Contenido del archivo docker-compose.yml

7.12. Repositorio con proyectos de ejemplo

ANEXO A. docker system

Comandos

Mostrar el espacio de disco utilizado por Docker

Eliminar los objetos que no se están utilizando para liberar espacio de disco

Obtener información detallada del sistema

Obtener información en tiempo real de los eventos que ocurren en el Docker daemon

Отрывок из книги

A mis padres, José y María; a mi mujer, Noelia y a mi hija, María

Acerca de este libro

.....

4.8.3. Eliminar un contenedor y sus volúmenes anónimos asociados

4.8.4. Eliminar los contenedores que están detenidos

.....

Добавление нового отзыва

Комментарий Поле, отмеченное звёздочкой  — обязательно к заполнению

Отзывы и комментарии читателей

Нет рецензий. Будьте первым, кто напишет рецензию на книгу Aprender Docker, un enfoque práctico
Подняться наверх