Sesión 2: Docker

  • sudoreplay
    • /var/log/sudo-io
  • supervisor daemon (levanta varios servicios)
  • Avro / Parquet / Hadoop
  • docker run -ti –entrypoint /bin/bash grafana/grafana
  • desconfiar (imágenes) de lo que no se puede trazar o comprobar
    • probablemente no se actualicen
    • si no hay Dockerfile o depende de otras imágenes que no son confiables, no es recomendable
  • agrupar capas de comandos que las generan siempre que sea posible
    • RUN, COPY, ADD…
  • docker volume create <nombre>
    • por defecto en local, al crear se puede especificar otro (drivers)
  • docker volume ls
  • ubicación volúmenes: /var/lib/docker/volumes/…
  • bridge = switch software
  • brctl show
  • docker network create –attachable <red>
    • --attachable permite añadir a mano otros contenedores a una red
  • REDIS
    • usarlo para guardar sesiones, permite ampliar los frontales
docker-compose.yml
version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

/via: https://docs.docker.com/compose/wordpress/

  • stack: conjunto de servicio+volumenes+redes…
  • docker stack ls
  • docker node ls
  • docker stack servies <STACK>
  • docker service scale wordpresito_wordpress=10 : escala a 10 los wordpress
    • en este caso no coordina las sesiones (para eso el REDIS)
  • docker stack deploy -c docker-compose.yaml <nombre_stack>
  • canary release : 5% + 95%
    • rolling updates : actualizamos un nodo, si todo correcto, a por el siguiente, si no, atrás
  • blue-green (red-black)
  • microservicios
    • cada uno con su storage
    • ACID - CAP (2 de 3)
fracaso
FROM debian:7-slim 

ARG WP_FILE=latest.tar.gz

WORKDIR /tmp
#ADD https://wordpress.org/${WP_FILE} .

RUN apt-get -y update
RUN apt-get install -y apache2 wget php7.0
RUN wget --no-check-certificate https://wordpress.org/${WP_FILE}
RUN tar xf ${WP_FILE}
#RUN mkdir -p /var/www/html
RUN mv wordpress/* /var/www
RUN rm ${WP_FILE}
RUN apt-get clean

#    apt-get install -y apache2 libapache2-mod-php7.0 php-mysql php-gd php-redis && \

EXPOSE 80

ENTRYPOINT ["/usr/sbin/apache2ctl", "-DFOREGROUND"]

funciona por separado, pero no junto

docker-compose.yml
version: '3.3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: toor 
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress 

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress

volumes:
  db_data:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '${HOME}/Docker/_storage/mysql/wordpress'
  • docker run -d –rm –name mysql-test -p 3306:3306 –env-file mysql.env -v ${DATA_PATH}/mysql/test:/var/lib/mysql mysql:5.7.25
  • docker run –link mysql-test:mysql -p 8080:80 -d wordpress
  • info/cursos/pue/devops/sesion2.txt
  • Darrera modificació: 23/02/2019 03:12
  • per mate