Este sería el tercer tutorial de como instalar Docker en Cuba. A diferencia de los otros 2, en este se pretende no usar ningún recurso fuera de cuba y que todo quede en la intranet cubana. Gracias a Argenis Ochoa González(AKA @linux8a) por el aporte a la comunidad.
Tener todo lo necesario para trabajar con Docker. Usando solamente los recursos que disponemos dentro de nuestra red. Instalaremos Docker, docker-compose y usaremos como mirror el registro de la universidad de las villas. Como extra montaremos localmente un servidor registro de docker y dos imágenes la cual nos ayudara en las implementaciones futuras.
Este post es una recopilación de todas las notas interactivas del canal de telegram de dockercuba
Nota: Puede usar nauta hogar o la red de datos de etecsa. Los recursos que usaremos están libres de costo.
Nota: Estaré usando en esta guía un Ubuntu 20.04. Pero puedes seguirla con cualquier otra versión o con Debian. Cambiando en el source.list por el repo pertinente https://repos.uclv.edu.cu/ubuntu/ o https://repos.uclv.edu.cu/debian/
Comencemos editando nuestro source.list . Para no hacer el ajuste a mano usare el comando sed para cambiar el repo de archive.ubuntu.com a repos.uclv.edu.cu
buscamos nuestro fichero source.list Ruta: /etc/apt/sources.list Agregamos estos repos: sudo sed -i 's/archive.ubuntu.com/repos.uclv.edu.cu/' /etc/apt/sources.list sudo sed -i 's/security.ubuntu.com/repos.uclv.edu.cu/' /etc/apt/sources.list
Y actualizamos el sistema
sudo apt update && sudo apt upgrade
sudo apt install docker.io docker-compose -y
Si estamos detras de un proxy, crearemos el fichero proxy.conf en al siguiente ruta /etc/apt/apt.conf.d/ y dentro agregamos estas lineas:
Acquire { HTTP::proxy "http://username:password@ip:port"; HTTPS::proxy "http://username:password@ip:port"; ftp::proxy "http://username:password@ip:port"; }
Nota: Si no existen usuario y contraseña para validar, solo se pone lo que continua después de @, en formato ip:port.
Comprobamos
sudo docker version o docker version
El resultado del comando será algo parecido a esto:
sudo docker-compose version o docker-compose version
Ahora crearemos el daemon.json para usar como mirror el registro de la universidad de las villas.
nano /etc/docker/daemon.json Agregamos las siguientes lineas: { "registry-mirrors": [ "https://docker.uclv.cu" ] }
NOTA: Si necesitas cambiar la subnet por defecto de docker. Pon las siguientes líneas al final del archivo como se explica aqui:
{ "registry-mirrors": [ "https://docker.uclv.cu" ], "bip":"10.200.0.1/24", "default-address-pools":[ {"base":"10.201.0.0/16","size":24}, {"base":"10.202.0.0/16","size":24} ] }
Cada vez que ajuste el daemon.json debe reiniciar el servicio o hacer un reload
sudo service docker reload o sudo service docker restart
Probemos con la imagen hello-word
sudo docker run hello-world o sudo docker run docker.uclv.cu/hello-world
NOTA: Si desea asignar permisos a una cuenta no root para usar Docker haga lo siguiente:
sudo usermod -aG docker elusuarioquedeseasusarcondocker
Debo advertir que agregar un usuario al grupo docker le otorga la capacidad de ejecutar contenedores que se pueden usar para obtener privilegios de root en el host de Docker. Para conocer más del tema: Docker Daemon Attack Surface
Si desea hacer esta parte de forma desatendida les dejo este script:
#!/bin/bash # cambiando source.list echo "Cambiando source.list de archive.ubuntu.com a repos.uclv.edu.cu" sudo sed -i 's/archive.ubuntu.com/repos.uclv.edu.cu/' /etc/apt/sources.list sudo sed -i 's/security.ubuntu.com/repos.uclv.edu.cu/' /etc/apt/sources.list # actualizando sudo apt update && sudo apt upgrade -y # Instalando docker docker-compose sudo apt install docker.io docker-compose -y # creando daemon.json sudo bash -c 'cat << EOF > /etc/docker/daemon.json { "registry-mirrors": [ "https://docker.uclv.cu" ] } EOF' sleep 10 # Reiniciando docker echo "Reiniciando servicio docker" sudo service docker restart
Corresponde el turno para crear nuestro docker registry local. Alternativas para disponer de un registry hay varias tales como: Nexus, Harbor etc. Implementaremos registry oficial de Hub Network por los pocos recursos que usa. La imagen que usaremos implementa un docker registry HTTP API v2. Para nuestro proyecto crearemos una carpeta llamada registry.
mkdir registry cd registry
Creamos el fichero docker-compose.yml y dentro agregamos:
nano docker-compose.yml Y peguemos dentro: version: '3.5' services: registry: image: docker.uclv.cu/registry:2.7.1 container_name: registry networks: - hub_network restart: always ports: - '5000:5000' volumes: - ./registry-data:/var/lib/registry - ./config.yml:/etc/docker/registry/config.yml environment: REGISTRY_PROXY_REMOTEURL: "https://docker.uclv.cu" # Si navegas por proxy descomenta las líneas de abajo y pon la ip y puerto del proxy #HTTP_PROXY: ip:puerto #HTTPS_PROXY: ip:puerto #NO_PROXY: localhost,127.0.0.1,10.0.0.7 #no_proxy: localhost,127.0.0.1,10.0.0.7 networks: hub_network: driver: bridge
Nuestro docker compose hace referencia a config.yml el cual tendremos que crear
nano config.yml Contendido: version: 0.1 log: fields: service: registry storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry delete: enabled: true http: addr: :5000 headers: X-Content-Type-Options: [nosniff] health: storagedriver: enabled: true interval: 10s threshold: 3
Levantamos el servicio:
sudo docker-compose up -d
Para usar tu nuevo servidor registry agrega esta líneas en daemon.json
nano /etc/docker/daemon.json Agregar la final { "registry-mirrors": ["http://registry:5000", "https://docker.uclv.cu"], "insecure-registries":["http://registry:5000", "https://docker.uclv.cu"] }
Reiniciamos el servicio
sudo service docker restart
Para que el host pueda resolver el nombre del registry que asignamos debemos cargarlo al fichero /etc/hosts
nano /etc/hosts Agregar: tuipdelhost registry
Aprovecharemos e implementaremos 2 imágenes las cuales nos facilitaran la vida. La primera tiene que ver con la documentación de docker y la segunda con las imágenes y opciones que podemos usar. Como mencionamos en el titulo aprovecharemos todo lo que tenemos a nuestro alcance en la red de cuba.
Puedes usar este recurso, el cual está libre de costo en https://docker-docs.uclv.cu. Tienes la opción de Implementarlo de una de las dos formas. Usando docker cli o corriendo docker-compose. Aprovecharemos y llamaremos la imagen desde nuestro registry local. Para que lo baje y nos lo deje guardado en él.
docker run -d -p 4000:4000 registry:5000/docs/docker.github.io
Crearemos la carpeta para una mayor organización
mkdir docker_docs cd docker_docs
Creamos el fichero docker-compose.yml
nano docker-compose.yml Agregamos: version: "3.7" services: docker_docs: image: registry:5000/docs/docker.github.io container_name: docker_docs expose: - "4000"
Para levantarlo damos un simple
docker-compose up -d
Accedemos a él abriendo nuestro navegador http://ip:4000
Esta imagen está hecha para tener la ayuda completa de las imágenes oficiales de Docker desconectado; sus opciones, tag etc. Está pensada para usar por los miembros de la comunidad docker de cuba. Pues para acceder https://hub.docker.com/ es necesario usar vpn. Con esta imagen tendremos todo lo necesario desde la red de cuba.
docker run -d -p 8000:8000 registry:5000/linux8a/docsimagesdocker:v2.0.1
mkdir documentacionimagenesdocker cd documentacionimagenesdocker
Creamos el fichero docker-compose.yml
nano docker-compose.yml Agregar: version: '3.3' services: documentacionimagenesdocker: image: registry:5000/linux8a/docsimagesdocker:v2.0.1 restart: always ports: - 8000:8000 volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro
Accedemos a él abriendo nuestro navegador http://ip:8000
Esto es una pequeña muestra de lo que podemos lograr para aprender y hacer crecer más a nuestra comunidad logrando aprovechar los recursos que tenemos en nuestra mano. Si deseas puedes implementar otros servicios https://github.com/linux8a/Docker-Cuba
Me complace anunciar la creación de esta útil herramienta (SquidStats), para el análisis y monitoreo…
La inteligencia artificial está revolucionando las industrias al automatizar tareas, predecir patrones y permitiendo tomar…
Uno de los grandes retos al que nos podemos enfrentar cuando una aplicación crece, es…
Percona Monitoring and Management (PMM) es una herramienta de código abierto para la supervisión y…
Qué es lo que deseo hacer en este capítulo? Básicamente un sonoff, quiero encender/apagar las…
Hace algunos meses estoy escuchando hablar del proyecto Home Assistant (HA). En palabras literales del…
View Comments
Muy bueno gracias
Un placer compartir este tutorial. Te invitamos si no lo has hecho aun a unirte al grupo de telegram https://t.me/dockercuba
El la configuración para docker_docs tampoco me funcionó pero cambié
expose:
- "4000"
por
ports:
- "4000:4000"
y todo como la seda
Bien. Es con deberia ser.
ports:
- 4000:4000
Me fue de maravilla con el tutorial para montar docker para hacer algunas pruebas pero falle con el segundo contenedor.
Tuve que hacerle unos cambios al docker-compose.yml debido a que tengo otros servicios corriendo a la vez y me quedó de esta manera:
version: '3.3'
services:
docs_docker_images:
image: registry:5000/linux8a/docsimagesdocker:v2.0.1
restart: always
ports:
- 6000:8000
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
Cuando hago un localhost:6000, el navegador no logra acceder al sitio
Alguna idea??
Gracias de antemano
Arthanys89 una vez hagas docker-comopose up -d debes esperar unos minutos para que se cargue todas las ayudas de las imagenes.
POdras ver el progreso con docker-compose logs veras un resultado en pantalla con algo asi.
documentacionimagenesdocker_1_43ee0a7b0c92 | - xwiki/get-help.md
documentacionimagenesdocker_1_43ee0a7b0c92 | - xwiki/issues.md
documentacionimagenesdocker_1_43ee0a7b0c92 | - znc/variant-slim.mddocumentacionimagenesdocker_1_43ee0a7b0c92 | INFO - Documentation built in 426.71 seconds
documentacionimagenesdocker_1_43ee0a7b0c92 | INFO - [18:14:53] Serving on http://0.0.0.0:8000/
documentacionimagenesdocker_1_43ee0a7b0c92 | INFO - [18:16:32] Browser connected: https://docsimagenesoficiales.unixfree.org/alpine/index.html