Inicio/Profesional/TICs y Computación/Programación/APRENDER DOCKER – Un enfoque práctico

APRENDER DOCKER – Un enfoque práctico

$598

Hay existencias

Autor: José Juan Sánchez Hernández

Páginas: 306

Año: 2022

Edición: 1

Editorial: Alfaomega – Marcombo

Apoyos: Web

Presentación:

E-Book:  https://www.alfaomegaeditor.com.mx/default/aprender-docker-un-enfoque-practico-10506.html

Nivel:

Encuadernación: Rústica

Hay existencias

ISBN: 9786075389691 Categorías: ,

Descripción

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.

Lista de siglas y acrónimos……………………………………………………………………………….. 13
Acerca de este libro ………………………………………………………………………………………… 15
CAPÍTULO 1 Conceptos básicos…………………………………………………………………… 17
1.1. ¿Qué es Docker? ……………………………………………………………………………………..17
1.1.1. Docker como tecnología de contenedores…………………………………………….17
1.1.2. Docker, Inc. ……………………………………………………………………………………….17
1.2. ¿Qué ventajas nos aporta el uso de Docker?……………………………………………….18
1.3. Breve historia de las tecnologías de aislamiento ………………………………………….18
1.4. ¿Qué es una máquina virtual?……………………………………………………………………19
1.5. ¿Qué es un contenedor?…………………………………………………………………………..19
1.6. Analogía con los contenedores de transporte marítimo………………………………..20
1.7. Diferencias entre contenedores y máquinas virtuales…………………………………..20
1.8. Arquitectura de Docker…………………………………………………………………………….21
1.9. Cliente de Docker……………………………………………………………………………………. 22
1.9.1. Docker CLI …………………………………………………………………………………………24
1.9.2. Docker Compose………………………………………………………………………………..24
1.10. Docker Engine …………………………………………………………………………………………25
1.10.1. Docker Engine API………………………………………………………………………………26
1.10.2. Docker daemon………………………………………………………………………………….27
1.11. Container runtime ……………………………………………………………………………………28
1.11.1. containerd…………………………………………………………………………………………28
1.11.2. runc ………………………………………………………………………………………………….29
1.12. Docker Registry ……………………………………………………………………………………….29
1.12.1. Docker Hub ……………………………………………………………………………………….30
1.12.2. Otros registros …………………………………………………………………………………..30
1.13. Objetos de Docker……………………………………………………………………………………31
1.13.1. Imágenes…………………………………………………………………………………………..31
1.13.2. Contenedores……………………………………………………………………………………. 31

1.13.3. Volúmenes………………………………………………………………………………………..33
1.13.4. Redes………………………………………………………………………………………………..33
1.14. Orquestación de contenedores………………………………………………………………….34
1.15. Organizaciones y estándares……………………………………………………………………..35
1.15.1. Open Container Initiative (OCI)…………………………………………………………….36
1.15.2. Cloud Native Computing Foundation (CNCF)………………………………………….36
1.16. Alternativas a Docker……………………………………………………………………………….37
CAPÍTULO 2 Instalación de Docker………………………………………………………………. 39
2.1. Docker Engine Community………………………………………………………………………..39
2.2. Instalación de Docker Engine en Linux……………………………………………………….. 40
2.2.1. Métodos de instalación en Ubuntu……………………………………………………….40
2.2.2. Instalación en Ubuntu utilizando el script oficial …………………………………….41
2.2.3. Instalación en Ubuntu desde los repositorios oficiales de Docker …………….41
Configuración del repositorio oficial de Docker……………………………………..41
Instalación de Docker Engine ………………………………………………………………43
Comprobación de la instalación …………………………………………………………..43
2.2.4. Pasos posteriores a la instalación en Linux…………………………………………….46
Configuración del usuario……………………………………………………………………46
Configuración de Docker Engine para que se inicie automáticamente………47
2.3. Instalación de Docker Desktop en Windows 10……………………………………………47
2.3.1. Instalación de Docker Desktop utilizando WSL 2 como backend……………….48
2.4. Instalación de Docker Engine en Windows Server………………………………………..54
Comprobación de la instalación …………………………………………………………..55
2.5. Instalación de Docker Desktop en macOS……………………………………………………56
2.6. Play with Docker………………………………………………………………………………………59
CAPÍTULO 3 Imágenes Docker…………………………………………………………………….. 61
3.1. ¿Qué es una imagen Docker?…………………………………………………………………….61
3.2. ¿Qué es un repositorio de imágenes?…………………………………………………………61
3.3. ¿Qué es un tag? ………………………………………………………………………………………63
3.4. ¿Qué es el digest de una imagen?………………………………………………………………64

3.5. ¿Qué es el namespace de un repositorio? …………………………………………………..65
3.6. ¿Qué es un registry? …………………………………………………………………………………66
3.7. Docker Hub……………………………………………………………………………………………..67
3.7.1. Repositorios de imágenes oficiales……………………………………………………….68
3.7.2. Repositorios de imágenes de organizaciones verificadas…………………………70
3.7.3. Repositorios de imágenes de la comunidad …………………………………………..71
3.8. El archivo Dockerfile…………………………………………………………………………………71
3.9. Creación de una imagen a partir de un archivo Dockerfile …………………………….82
3.10. Cómo publicar una imagen en Docker Hub………………………………………………….86
3.11. Capas de una imagen ……………………………………………………………………………….90
3.12. Soporte para múltiples arquitecturas ……………………………………………………….100
3.13. Formato de las imágenes Docker……………………………………………………………..101
3.14. Buscar imágenes en Docker Hub ‒ docker search……………………………………….102
3.14.1. Buscar imágenes por nombre …………………………………………………………….103
3.14.2. Buscar imágenes utilizando filtros………………………………………………………104
3.15. Administración de imágenes – docker image …………………………………………….105
3.16. Descargar imágenes – docker pull…………………………………………………………….108
3.16.1. Descargar imágenes desde Docker Hub……………………………………………….109
3.16.2. Descargar imágenes desde un registry diferente a Docker Hub………………111
3.17. Mostrar imágenes – docker images………………………………………………………….111
3.17.1. Mostrar las imágenes que tenemos descargadas………………………………….113
3.17.2. Mostrar las imágenes intermedias………………………………………………………113
3.17.3. Mostrar el identificador de las imágenes……………………………………………..114
3.17.4. Mostrar el digest de las imágenes ………………………………………………………114
3.18. Eliminar imágenes – docker rmi ……………………………………………………………….115
3.18.1. Eliminar una imagen por su tag ………………………………………………………….116
3.18.2. Eliminar una imagen por su identificador…………………………………………….117
3.18.3. Eliminar todas las imágenes, excepto las dangling images …………………….119
3.18.4. Eliminar las dangling images ……………………………………………………………..119
3.18.5. Eliminar las imágenes que no están siendo utilizadas…………………………… 119
3.19. Consultar el historial de una imagen – docker history …………………………………120
3.20. Mostrar información detallada – docker inspect ………………………………………..122

CAPÍTULO 4 Contenedores Docker…………………………………………………………….. 125
4.1. Ciclo de vida de un contenedor………………………………………………………………..125
4.2. Administración de contenedores – docker container ………………………………….126
4.3. Creación y ejecución de contenedores – docker run …………………………………..128
4.4. Hello World!………………………………………………………………………………………….131
4.5. Obtener el listado de contenedores – docker ps ………………………………………..134
4.5.1. Obtener el listado de los contenedores que están en ejecución……………..136
4.5.2. Obtener el listado de todos los contenedores………………………………………137
4.5.3. Obtener el identificador de los contenedores que están en ejecución …….138
4.5.4. Obtener el identificador de todos los contenedores……………………………..138
4.6. Ejecutar un comando dentro de un contenedor…………………………………………139
4.7. Ejecutar un contenedor en modo interactivo…………………………………………….140
4.8. Eliminar contenedores – docker rm ………………………………………………………….144
4.8.1. Eliminar un contenedor que está detenido ………………………………………….145
4.8.2. Eliminar un contenedor que está en ejecución …………………………………….145
4.8.3. Eliminar un contenedor y sus volúmenes anónimos asociados……………….146
4.8.4. Eliminar los contenedores que están detenidos……………………………………146
4.8.5. Eliminar los contenedores que están en ejecución y detenidos………………147
4.9. Mostrar la salida estándar de un contenedor – docker logs…………………………147
4.10. Creación de un contenedor en segundo plano …………………………………………..149
4.11. Publicar los puertos de un contenedor……………………………………………………..152
4.11.1. Opción -p, –publish…………………………………………………………………………..153
4.11.2. Opción -P, –publish-all………………………………………………………………………155
4.12. Cómo conectarnos a un contenedor en ejecución………………………………………156
4.12.1. docker attach …………………………………………………………………………………..156
4.12.2. docker exec ……………………………………………………………………………………..158
4.13. Copiar archivos y directorios – docker cp…………………………………………………..160
4.14. Cómo detener un contenedor – docker stop ……………………………………………..165
4.15. Cómo iniciar un contenedor – docker start………………………………………………..167
4.16. Políticas de reinicio ………………………………………………………………………………..169
CAPÍTULO 5 Almacenamiento en Docker ……………………………………………………. 171
5.1. Almacenamiento en Docker…………………………………………………………………….171

5.2. Bind mounts ………………………………………………………………………………………….172
5.3. Formas de crear un bind mount en un contenedor …………………………………….173
5.4. Crear un bind mount de solo lectura…………………………………………………………176
5.5. Cómo crear las rutas de los directorios en un bind mount ………………………….. 177
5.6. Ejemplo para compartir el código fuente de una aplicación…………………………179
5.7. Ejemplo para compartir un archivo de configuración………………………………….182
5.8. Volúmenes ……………………………………………………………………………………………184
5.9. Administración de volúmenes – docker volume …………………………………………186
5.10. Creación de un volumen …………………………………………………………………………187
5.10.1. Creación de un volumen con el comando docker volume create …………….187
5.10.2. Creación de un volumen al crear un contenedor con docker run…………….188
5.11. Inspeccionar un volumen ………………………………………………………………………..193
5.12. Obtener el listado de volúmenes……………………………………………………………..195
5.13. Eliminar volúmenes que no están en uso ………………………………………………….196
5.14. Eliminar volúmenes………………………………………………………………………………..197
5.15. Ejemplo de creación de un contenedor con MySQL ……………………………………198
5.15.1. Creación de un contenedor MySQL con un volumen anónimo ……………….198
5.15.2. Creación de un contenedor MySQL con un volumen con nombre …………..200
5.15.3. Inicializar un contenedor de MySQL con una base de datos …………………..205
CAPÍTULO 6 Redes en Docker……………………………………………………………………. 209
6.1. Redes en Docker……………………………………………………………………………………. 209
6.1.1. Container Network Model (CNM)……………………………………………………….209
6.1.2. libnetwork……………………………………………………………………………………….210
6.1.3. Drivers de red…………………………………………………………………………………..210
6.2. Redes de tipo bridge ………………………………………………………………………………215
6.3. Administración de redes – docker network………………………………………………..216
6.4. Obtener el listado de redes……………………………………………………………………..217
6.5. Creación de una red ……………………………………………………………………………….220
6.6. Conectar un contenedor a una red …………………………………………………………..225
6.6.1. Con el comando docker network connect…………………………………………….225
6.6.2. Con la opción –network cuando se crea un contenedor………………………..228

6.7. Desconectar un contenedor de una red ……………………………………………………230
6.8. Inspeccionar una red………………………………………………………………………………231
6.9. Eliminar las redes que no están en uso……………………………………………………..234
6.10. Eliminar redes ……………………………………………………………………………………….235
6.11. Cómo conectar un contenedor Adminer con MySQL…………………………………..235
6.11.1. Utilizando enlaces entre contenedores con la opción –link ……………………236
6.11.2. Utilizando una red bridge definida por el usuario …………………………………242
6.12. Cómo conectar WordPress, MySQL y phpMyAdmin……………………………………245
CAPÍTULO 7 Docker Compose …………………………………………………………………… 253
7.1. ¿Qué es Docker Compose? ……………………………………………………………………..253
7.1.1. La especificación Compose ………………………………………………………………..253
7.1.2. La implementación Docker Compose ………………………………………………….254
7.2. Instalación de Docker Compose v2 …………………………………………………………..255
7.3. El archivo de configuración de Docker Compose………………………………………..256
7.3.1. version…………………………………………………………………………………………….257
7.3.2. services …………………………………………………………………………………………..258
7.3.3. volumes…………………………………………………………………………………………..265
7.3.4. networks…………………………………………………………………………………………266
7.3.5. configs…………………………………………………………………………………………….268
7.3.6. secrets…………………………………………………………………………………………….269
7.4. Comandos de Docker Compose ……………………………………………………………….271
7.5. Ejemplo de un servicio Apache HTTP Server………………………………………………273
7.6. Ejemplo de un servicio MySQL …………………………………………………………………276
7.7. Cómo utilizar archivos con variables de entorno………………………………………..280
7.8. Ejemplo de una aplicación con dos servicios ……………………………………………..282
7.9. Despliegue de una aplicación WordPress ………………………………………………….288
7.10. Creación de un entorno de desarrollo LAMP ……………………………………………..291
7.11. Creación de un entorno de desarrollo LEMP ……………………………………………..296
7.12. Repositorio con proyectos de ejemplo ……………………………………………………..300
ANEXO A docker system ………………………………………………………………………. 301

Información adicional

Peso .700 kg
Dimensiones 23 × 17 × 3 cm

Título

Ir a Arriba