Hola amigos!! Esta vez les voy a contar un poco de Mi experiencia con Docker la cual tal vez le sirva a alguno que otro por ahi que esta o estuvo en la misma. Lo lindo de internet es que somos tantos que alguno seguro ya le paso!. En fin, la idea es poder contribuir un poco con situaciones sobre #Docker y #Gnu/linux que ya me pasaron, que nos quede de ayuda memoria, y que sirva si es que sirve para alguien más. Sin más los dejo con esta entrada humilde y sencilla dedicada al amigo Matias Sanchez que me dio una mano en el tema para sobre llevar los primeros pasos en docker!

docker sobre ubuntu focal
Mi experiencia con Docker

La idea no es contarles que es docker sino como lo fui aprendiendo a los golpes para que no les pase lo mismo. Verdaderamente tendría que haber leído conceptos básicos y después meterme, pero el perfil ansioso de este cristiano y la casualidad que tenia que formatear la #RaspberryPi hizo que me meta de una en el tema.

Si necesitas saber como Instalar Docker sobre Ubuntu 20.04 te dejo este LINK

Verdaderamente los comandos más importantes para mi en un comienzo y por desconocer fueron:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

Es que cuando estaba creando los contenedores le erraba bastante y tenia que listar los contenedores:

docker ps

y luego stopearlos o pararlos de uno con:

docker stop iddelcontenedor

Si prestan atención a los dos comandos que puse uno para o stopea a todos los contenedores de un saque y el otro los borra (ver palabras stop y rm en cada comando).

Otra cosa que me ayudo es tener algo más visual que la terminal. Por eso elegí #Portainer que si bien muchos les van a decir que no es el camino correcto al principio sirve hasta entender un poco más

portainer en mi raspberry
Portainer en mi #Raspberry con Jellyfin Pihole Transmission y Mysql

Como ven en la imagen anterior “es bastante mas lindo que ver una terminal”, aunque “no hace falta tener un contenedor con portainer” para administrar los contenedores.

La instalación de portainer es sencilla. Teniendo instalado docker luego tiran este comando en la terminal:

docker volume create portainer_data

y luego este otro:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --restart always portainer/portainer

Ya con esto entran en un navegado a localhost:9000 y les va a pedir crear un usuario (el de portainer) y ya tienen una interfaz gráfica.

Luego me paso que lógicamente no es lo mismo raspberry que tiene Raspbian 10 buster ARMH que Ubuntu 20.04 cuya distro es de 64bit entonces hay que entrar en https://hub.docker.com/ y buscar la documentación de lo que uno quiere hacer.

docker

Una de las cosas importante para mi fue aprender a manejar volumenes ya que si no los creamos el contenido de ese docker no es persistente, no perdura en el tiempo, y si tu contenedor es wordpress te vas a querer matar luego de crear varias entradas y no contar con ese rescuardo.

Docker Compose:

El consejo más importane que les voy a dar es que laburen con docker compose, es más dificil al principio pero vale la pena!!

A continuación les voy a dejar un docker-compose.yml con un contenedor que tiene wordpress, otro con la base de datos, otro con nginx y otro letencrypt con lo cual van a lograr en un vps contratado montar por terminal en escasos minutos un gran servicio como tener tu propia web (igual a este blog) con https (ssl) gratuito!!

version: '3.7'

services:

  db:
    image: mysql:5.7
    ports:
      - "3306:3306"
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - ./dbmysql:/var/lib/mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: usuariomysql
      MYSQL_DATABASE: base
      MYSQL_USER: usuariomysql
      MYSQL_PASSWORD: contraseñadelusuario


  wplz:
    depends_on:
      - db
    image: wordpress:latest
    expose:
      - "80"
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: usuarioquecreamosantesenlabase
      WORDPRESS_DB_PASSWORD: passworddelabase
      WORDPRESS_DB_NAME: nombredelabasecreada
      VIRTUAL_HOST: dominiopublico.com.ar
      LETSENCRYPT_HOST: dominiopublico.com.ar
      LETSENCRYPT_EMAIL: tumail@mail.com
    volumes:
      - ./wordpress:/var/www/html


  jwilder-proxy:
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    environment:
      DEFAULT_HOST: dominiopublico.com.ar
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - certs:/etc/nginx/certs:ro
      - vhostd:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
    restart: unless-stopped


  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion:stable
    restart: always
    environment:
      - NGINX_PROXY_CONTAINER=jwilder-proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - certs:/etc/nginx/certs:rw
      - vhostd:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
    depends_on: 
      - "jwilder-proxy"

volumes:
  certs:
  vhostd:
  html:

La verdad este archivo costo tiempo de mi flia y de la de mati sanchez asi que mil gracias a ambas!!! jajajaaj posta, capaz para otros es facil, pero cuesta cuando las versiones de sistema operativos son distintas. Ahora que ya estan creados los contenedores siguiendo con parametros similares se pueden agregar distintos dominios y webs.

Nginx (que les juro se pronuncia Enginex y no EnjinX) tambien me costo bastante. En un tutorial anterior mostraba en este blog la instalacion de wordpress y mariadb pero sin conocer la polenta que tiene nginx.

explicacion del docker-compose
Espero sirva de algo

Este archivo lo deberíamos poner dentro de una carpeta como por ejemplo /home/misdockers y luego de guardarlo con el nombre docker-compose.yml deberíamos ejecutarlo con el comando docker-compose up -d

En unos escasos segundos tenemos manso servicio arriba y sin sufrir el tiempo que se perdia con el virtualbox! Una vez que arrancan es un camino de ida! posta!! aprenderlo es genial aunque te queme la unica neurona!!

Por ultimo alguna seguidillas de buenas practicas:

  • Stopear todos los contenedores.
  • Comprimir la carpeta misdockers. Si no sabes puedes usar:
tar -czvf backup-directorio-usuario.tar.gz /home/usuario
  • Luego ingresar al vps desde tu maquina (yo tengo ubuntu) y con el comando:
scp usuario@servidor:ruta_servidor_donde_esta_el_archivo ruta_ordenador_local_donde_poner_el_archivo
  • Obviamente si luego te paso lo que a mi y necesitas subir el backup que siempre aconsejo tener podes volver a subir los archivos con:
scp archivo usuario@servidor:ruta_servidor_donde_colocar_archivo

Espero que les haya sido al menos un poco útil ya que para mi fue un antes y un después en el mundito de docker y esto es solo el primer paso!!!

Como siempre: Si lo escucho lo olvido, si lo veo lo recuerdo, pero si hago y lo practico lo aprendo!! hasta el infinito y más allá!

Print Friendly, PDF & Email
Share:

2 comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *