Docker corre procesos NO CORRE INSTANCIAS DE SERVIDORES
Instalación
apt-get install curl
curl -sSL https://get.docker.com/ | bash
Directorio principal
/var/lib/docker
Acceso no root
groupadd docker
usermod -aG docker <usuario>
Docker Hub
https://hub.docker.com/
Login Docker hub
docker login
Revisando los tres componentes: containers - imágenes - registry
docker images
docker ps
cat .docker/config.json
docker run debian:jessie /bin/echo 'Hello world'
docker ps -a
Descargando una imagen
Corriendo un container
docker pull debian:jessie
docker images
Eliminación
docker rm <id o nombre>
docker rmi <id o nom:tag>
docker stop <id>
docker start <id>
Detener y levantar
docker run -d ubuntu:latest \
/bin/sh -c "while true; do echo hello world; sleep 1; done"
Container demonizado y si no tenemos la imagen
docker logs -f <id>
Ver logs
Revisión de procesos containers, etc...
docker top <id>
docker inspect <id-container>
docker inspect <id-imagen>
docker inspect -f '{{ .NetworkSettings.IPAddress }}' <id-conainer>
Ejemplo de ejecución de un container con opciones
docker run -d \
--name caba-web-training \
--hostname caba-web-training \
-p 5000:5000 \
training/webapp \
python app.py
docker exec -it caba-web-training echo "Hola mundo"
docker exec -it caba-web-training /bin/bash
Ejecutando comandos en el container
Revisión de procesos containers, etc...
docker run -d \
-e AUTOR="Line 64" \
-e NOMBRE="Ale Drabenche" \
--name caba-web-training \
--hostname caba-web-training \
-p 5000:5000 \
training/webapp python app.py
Ejemplo de ejecución de un container con opciones
docker run -d \
--name caba-web-training \
--hostname caba-web-training \
-p 5000:5000 \
training/webapp \
python app.py
docker exec -it caba-web-training /bin/bash
echo $AUTOR
echo $NOMBRE
Ejecutando comandos en el container
Volumen
Editemos el app.py y hagamos restart
mkdir /srv/containers/caba-web-training -p
docker run -d \
--name caba-web-training \
--hostname caba-web-training \
-v /srv/containers/caba-web-training:/opt/webapp \
-p 5000:5000 \
training/webapp \
python app.py
docker restart caba-web-training
Dockerfile y construcción de imágenes
FROM: Imagen base
MAINTAINER: Quien mantiene esta imagen
ENV: Variables de Entorno
RUN: Comandos que se ejecutan antes del run
EXPOSE : Puertos en los que escuchará el container
ADD o COPY: Copia archivos locales al container; pero ADD tiene la chance de
descomprimirlo
CMD: Instrucción para correr la aplicación.
ENTRYPOINT: Como se desea correra la aplicación. Generalmente
es ENTRYPOINT CMD para los parametros
WORKDIR: Cambiamos el Directorio en el cual trabajamos
Crear un archivo Dockerfile
FROM ubuntu:14.04
MAINTAINER Alejandro Drabenche <alejandro.drabenche@line64.com>
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q python-all python-pip
ADD ./webapp/requirements.txt /tmp/requirements.txt
RUN pip install -qr /tmp/requirements.txt
ADD ./webapp /opt/webapp/
WORKDIR /opt/webapp
EXPOSE 5000
CMD ["python", "app.py"]
Armando la imagen
docker build -t caba-web:v1 .
docker build -t adrabenche/caba-web:v1 .
docker push adrabenche/caba-web:v1
Armando la imagen; pero con push al registry
¿Por que las imagenes tienen el mismo id?
Clonamos el repo:
git clone https://github.com/docker-training/webapp.git
docker login adrabenche
docker run -d --name caba-mysql-wordpress \
-e MYSQL_ROOT_PASSWORD=linux \
-p 3306:3306 \
mysql:5.7
docker run -d --name caba-web-wordpress \
--hostname caba-web-wordpress \
-p 80:80 \
-e WORDPRESS_DB_HOST=192.168.1.208 \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=linux \
wordpress
Y listo