Páginas:
306
Edición:
1
Fecha de publicación:
26/01/2022
ISBN:
9788426731944
Formato:
17x24 cms

Aprender Docker, un enfoque práctico

22,85 21,70
22,85 21,70
Añadir a cesta
Recíbelo en 24/48h
ENVÍO GRATIS PARA PEDIDOS
SUPERIORES A 35€ EN PENÍNSULA

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.

CAPÍTULO 1.      Conceptos básicos          18

1.1.        ¿Qué es Docker?              18

1.1.1.     Docker como tecnología de contenedores          18

1.1.2.     Docker Inc.         19

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

1.3.        Breve historia de las tecnologías de aislamiento                19

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

1.5.        ¿Qué es un contenedor?             20

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

1.7.        Diferencias entre contenedores y máquinas virtuales     21

1.8.        Arquitectura de Docker 22

1.9.        Cliente de Docker            23

1.9.1.     Docker CLI           25

1.9.2.     Docker Compose             25

1.10.      Docker Engine   26

1.10.1.  Docker Engine API           27

1.10.2.  Docker Daemon               29

1.11.      Container Runtime         29

1.11.1.  containerd          29

1.11.2.  runc       30

1.12.      Docker Registry 31

1.12.1.  Docker Hub        31

1.12.2.  Otros registros  31

1.13.      Objetos de Docker          32

1.13.1.  Imágenes            32

1.13.2.  Contenedores   32

1.13.3.  Volúmenes        34

1.13.4.  Redes   34

1.14.      Orquestación de contenedores 35

1.15.      Organizaciones y estándares      36

1.15.1.  Open Container Initiative (OCI) 37

1.15.2.  Cloud Native Computing Foundation (CNCF)      37

1.16.      Alternativas a Docker     38

 

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                40

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

2.2.4.     Pasos posteriores a la instalación en Linux           46

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

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             102

3.14.      Buscar imágenes en Docker Hub – docker search               103

3.14.1.  Buscar imágenes por nombre    104

3.14.2.  Buscar imágenes utilizando filtros            105

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

3.16.      Descargar imágenes – docker pull            109

3.16.1.  Descargar imágenes desde Docker Hub 110

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

3.17.      Mostrar imágenes – docker images         112

3.17.1.  Mostrar las imágenes que tenemos descargadas              113

3.17.2.  Mostrar las imágenes intermedias          114

3.17.3.  Mostrar el identificador de las imágenes              114

3.17.4.  Mostrar el digest de las imágenes           115

3.18.      Eliminar imágenes – docker rmi 116

3.18.1.  Eliminar una imagen por su tag 117

3.18.2.  Eliminar una imagen por su identificador             118

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

3.18.4.  Eliminar las dangling images       120

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

3.19.      Consultar el historial de una imagen – docker history     121

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               135

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        139

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  146

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

4.8.4.     Eliminar los contenedores que están detenidos 147

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         168

 

CAPÍTULO 5.      Almacenamiento en Docker       170

5.1.        Almacenamiento en Docker       170

5.2.        Bind mounts      171

5.3.        Formas de crear un bind mount en un contenedor          172

5.4.        Crear un bind mount de solo lectura       175

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

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

5.7.        Ejemplo para compartir un archivo de configuración       181

5.8.        Volúmenes        183

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

5.10.      Creación de un volumen              186

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

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

5.11.      Inspeccionar un volumen            192

5.12.      Obtener el listado de volúmenes             193

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

5.14.      Eliminar volúmenes       196

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

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

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

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

 

CAPÍTULO 6.      Redes en Docker              208

6.1.        Redes en Docker              208

6.1.1.     Container Network Model (CNM)            208

6.1.2.     libnetwork          209

6.1.3.     Drivers de red   209

6.2.        Redes de tipo bridge      214

6.3.        Administración de redes – docker network         215

6.4.        Obtener el listado de redes        216

6.5.        Creación de una red       219

6.6.        Conectar un contenedor a una red          224

6.6.1.     Con el comando docker network connect            224

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

6.7.        Desconectar un contenedor de una red 230

6.8.        Inspeccionar una red     230

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

6.10.      Eliminar redes   234

6.11.      Cómo conectar un contenedor Adminer con MySQL       234

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

6.11.2.  Utilizando una red bridge definida por el usuario              241

6.12.      Cómo conectar WordPress, MySQL y phpMyAdmin         244

 

CAPÍTULO 7.      Docker Compose             251

7.1.        ¿Qué es Docker Compose?         251

7.1.1.     La especificación Compose         251

7.1.2.     La implementación Docker Compose     252

7.2.        Instalación de Docker Compose v2          253

7.3.        El archivo de configuración de Docker Compose               254

7.3.1.     version 255

7.3.2.     services               256

7.3.3.     volumes              263

7.3.4.     networks            264

7.3.5.     configs 266

7.3.6.     secrets 267

7.4.        Comandos de docker compose 269

7.5.        Ejemplo de un servicio Apache HTTP Server        271

7.6.        Ejemplo de un servicio MySQL   274

7.7.        Cómo utilizar archivos con variables de entorno               278

7.8.        Ejemplo de una aplicación con dos servicios       280

7.9.        Despliegue de una aplicación WordPress             286

7.10.      Creación de un entorno de desarrollo LAMP       289

7.11.      Creación de un entorno de desarrollo LEMP       294

7.12.      Repositorio con proyectos de ejemplo  298

 

ANEXO A.            docker system  299

A color
Páginas:
306
Edición:
1
Año Publicación:
26/01/2022
ISBN:
9788426731944
Formato:
17x24 cms
Colección

Valoraciones

No hay valoraciones aún.

Relacionados

¿Quiéres conocer las últimas novedades?

Inscribiéndote recibirás unos regalos exclusivos para ti