Crear redes y volumenes en contenedores
Marcelo Denis
Ing. Informático
@mdrm016
mdrm016@gmail.com
- Docker Network
- Docker Storage
- Docker Registry
- Ejercicios
Estructura de Docker
Networking
Gestión de Puertos
Client
80
8080
http://localhost:8080
Container
Host
Gestión de Puertos
Con el argumento -P se asigna puertos aleatorios del host a los puertos de escucha del contenedor.
docker run -P nginx
Con el argumento -p podemos mapear explícitamente un puerto del host a un puerto del contenedor.
docker run -p 8080:80 nginx
Host
Contenedor
Redes en Docker
docker network ls
Redes en Docker
Inspeccionar un Contenedor
docker inspect <CONTAINER_ID>
Inspeccionar una Red
docker network inspect <network>
Crear Redes
docker network create --help
Crear Redes
docker network create --help
docker network create red1
docker inspect red1
docker network create -d bridge red2
docker network create --subnet=192.168.0.0/16 --gateway=192.168.0.1 red3
Asociar Contenedor a una Red
docker inspect ubuntu1
docker run -it --name ubuntu1 --network red1 ubuntu
Asociar Contenedor a una Red
docker run -d --name nginxA --network red1 nginx
docker inspect nginxA
Asociar Contenedor a una Red
apt-get install iputils-ping --> ubuntu1
ping 172.19.0.3
Asociar Contenedor a una Red
docker network connect red2 ubuntu1
docker inspect ubuntu1
La red none
docker run --network none --name hola -d -ti centos
Eliminar Redes
docker network rm red1
Docker Volúmenes
Los volúmenes nos permiten almacenar información persistente en el contenedor.
Los datos almacenados en el contenedor es temporal, al eliminar el contenedor se elimina toda la información del mismo.
Por ejemplo Base de Datos, filesystem, etc.
Tipos de volúmenes
Crear Volumen
docker volume create dbdata
Crear Volumen
docker run -d --name db --mount src=dbdata,dst=/data/db mongo
Crear Volumen en un Contenedor
docker run -it -v /info --name ubuntu1 ubuntu bash
Inspeccionar Volumen
docker volume ls
docker inspect dbdata
Eliminar Volumen
docker volume rm <volume_name>
Directorios Compartidos
docker run -it -v C:/docker_files:/docker_files_container --name ubuntu1 ubuntu
Crear Volúmenes Personalizados
docker volume create <nombre_volumen>
Asociar Volúmenes Personalizados
docker run -it --name ubuntuA -v new_volume:/info ubuntu bash
Montajes TMPFS
Un montaje de este tipo es temporal y solo persiste en la memoria del host anfitrión.
¿Qué es?
Docker Registry es una aplicación del lado del servidor sin estado y altamente escalable que almacena y le permite administrar y distribuir imágenes de Docker.
Docker Registry es de código abierto.
Puede encontrar el código fuente en GitHub.
Nos permite almacenar las versiones de una misma imagen.
Implementar un Registry
docker pull registry
docker run -d -p 5000:5000 --name mi_registro registry
Subir Imágenes del Registro
docker tag nginx localhost:5000/mi-nginx
docker images localhost:5000/mi-nginx
docker push localhost:5000/mi-nginx
Bajar Imágenes del Registro
docker pull localhost:5000/mi-nginx
Cambiar la Ruta de Almacenamiento del Registry
docker run -d --name repositorio1 -p 5000:5000 -v /register_docker:/var/lib/registry registry
docker tag nginx localhost:5000/nginx:repoPrueba
docker push localhost:5000/nginx:repoPrueba
Utilizando los 3 contenedores de la clase anterior...
- Estructura de docker
- Storage
- Docker Registry
- Ejercicios