Contenedores Con Docker PDF
Contenedores Con Docker PDF
I) Comenzando.
Daniel A. Cialdella C., José M. Cousiño y Pablo P. Corral L.
https://dockertips.com/ecosistema
Instalación.
Instalación.
❏ Linux
https://dockertips.com/instalando_docker
❏ Windows
https://dockertips.com/instalando-docker-en-windows-10
❏ Mac
https://dockertips.com/instalar-docker-en-mac-osx
Máquinas virtuales vs Docker.
Comparativa Contenedor vs VM.
Arquitectura y componentes.
Componentes.
● Un demonio/servicio (dockerd).
● Un programa de control (docker).
● Creación de Imágenes o usando las que existen.
○ Sitio web. https://hub.docker.com/ Repositorio de imágenes.
● El contenedor como unidad central.
● Cada contenedor tendrá IP, Espacio, nombre. (CPU y RAM compartidas)
● Usa el kernel del equipo real.
● Herramienta de monitorización, gestión, interacción y arranque.
https://dockertips.com/monitorizacion_en_docker
Contenido de un contenedor.
● Librerías del sistema operativo: dentro del contenedor se tiene todo lo
necesario de una sistema operativo para aislarlo del sistema que lo que ejecuta
(Host)
● Herramientas del sistema: herramientas que nos facilitan el trabajo con los
contenedores:
○ Editores de texto
○ Monitorización
○ Registro
● Principales comandos:
○ pull: descarga una imagen.
○ images: permite listar las imágenes que hay en la máquina.
○ build: construye una imagen personalizada.
○ run: crea un contenedor a partir de una imagen.
○ start: inicia un contenedor.
○ stop: para un contenedor.
○ rm: elimina un contenedor.
○ rmi: elimina una imagen.
○ exec corre un programa en un contenedor.
○ ps: muestra los contenedores en ejecución.
Con -a muestra los contenedores que están detenidos.
●
Fichero Dockerfile.
● Para crear imágenes personalizadas se necesita de un fichero llamado
Dockerfile.
● Es un fichero de texto plano donde cada línea es una instrucción para crear la
imagen.
●
● Comandos de Dockerfile:
○ FROM: indica la imagen base. Generalmente se utiliza una del repositorio de DockerHub o de
cualquier otro repositorio.
FROM microsoft/aspnet:4.7.2-windowsservercore-1803
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
FROM nginx
LABEL author=”JMC”
COPY ./dist/testangular /usr/share/nginx/html
EXPOSE 80 443
CMD [“nginx”, “-g”, “daemon off;”]
Crear un fichero Dockerfile
FROM ubuntu:17.10
RUN apt-get update
RUN apt-get install -y nmap apache2 htop
RUN echo "test" > test.txt
RUN mkdir -p /demo1
EXPOSE 80 443
# docker build -t apache2 . (genera una imágen local en base a una del hub)
# docker run --name ubu3 -d -it apache2:latest /bin/bash (genera un nuevo contenedor)
# docker build -t myserver . (genera una imágen local en base a una del hub)
# docker exec -it iisserver cmd se accede al explorador de archivos del contenedor
Demo.
Ejecutar contenedores.
Poner a funcionar un contenedor Linux.
● docker run --name ubu -d -it ubuntu:17.10 /bin/bash
● docker images
● docker ps -a
● docker start/stop ubu
● docker exec -it ubu /bin/bash
● uname -a (compartir kernel, ram y cpu con S.O. real)
● apt update; apt install htop nmap; htop ; nmap 127.0.0.1
https://dockertips.com/ubuntu_1804
https://dockertips.com/modos_run_docker
Poner a funcionar un contenedor Windows.
● docker run --name iisserver -d -it nanoserver/iis powershell
● docker images
● docker ps -a
● docker start/stop iisserver
● docker exec -it iisserver cmd
Comunicaciones con el contenedor.
● ping 172.17.0.1 y ping 172.17.0.2.
● apt install apache2; /etc/init.d/apache2 start
● nmap 172.17.0.2
● Acceder a la página http://172.17.0.2
● ls -ail /var/lib/docker/containers/
● exit sale del contenedor pero no lo detiene.
Almacenamiento.
Almacenamiento.
● Dos tipos de almacenamiento, interno y conectado al equipo real.
● docker run --name ubu2 -v /tmp:/host -d -it ubuntu:17.10 /bin/bash
● docker exec -it ubu2 /bin/bash
● ll /host muestra el contenido de la carpeta “host” apuntando a “/tmp”
● Cada contenedor tiene una zona en el disco real.
Limpieza. docker system prune -a
# docker system prune -a
docker rm ubu --force WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
docker rmi ubuntu:17.10 --force - all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
du -h /var/lib/docker 1450281e0150a64a07edd6ff27a96cb488556e8c618afb7acf768b6b3c954a27
Deleted Images:
rm -r /var/lib/docker untagged: ubuntu:latest
untagged:
ubuntu@sha256:945039273a7b927869a07b375dc3148de16865de44dec839867297
7e050a072e
/etc/init.d/docker restart untagged: my-apache2:latest
deleted:
sha256:f007c13967e9ae098a46393cc90b1a598f02dd9028e3c4f1f834a3f4953eb04f
docker ps -a
Total reclaimed space: 305.2MB
docker images
Preguntas.
Gracias por participar.
[email protected]
Próximo Meetup, II) Docker-Compose vs Docker-Swarm