= MasterClass Docker
{{tag>docker}}
== info masterclass
ponente: Dani Sanchez U2FsdGVkX1/bo65aAxmidXcqKXcZMeZwmSKTF6KVElQDer9c0K7fmdmujlBWTpFY --> docker user U2FsdGVkX19JO3r1pIy6PbnvUpZf9ti/ehiMS/fZz1I=
pass:2...s
== docker
=== info general
3 componentes:
* docker daemon
* rest api (escuchando en file system) --> nos permite hablar con otros demonios docker (en otras máquinas)
* docker client (la consola que envía comandos al daemon)
alpine : lenguaje propio para dockerimágenes basadas en distribución linux muy ligera
=== trabajando con docker
''$ docker run httpd -p 80:80 httpd:2.4'' --> mapeando puerto de la red de docker a tu ordenador
''$ docker run httpd -P httpd:2.4 ; docker ps'' --> muestra que puertos se están mapeando (por si no sabes que puertos ofrece el contenedor)
''$ docker run httpd -d -P httpd:2.4'' --> detach (para liberar la consola)
''$ docker logs $(docker ps -q)'' --> mirar logs (normalmente se le pasa el ID o nombre del contenedor
vinculación a una carpeta del equipo "host":
''$ docker run -d -v /home/dani/workspace:/usr/local/apache2/htdocs -p 80:80 httpd:2.4'' --> vinculación con carpeta local:contenedor
''$ docker stop ''
''$ docker exec -it bash'' --> entrar en el contenedor, en modo interactivo y terminal
* desde aquí dentro podemos hacer cambio, PERO NO TIENEN PERSISTENCIA
* podemos sacar una imagen de un contenedor (con los cambios realizados)
* ''$ docker commit -t ''
* ''$ docker tag ''
* no se suele hacer así, se usa **docker file**
=== Dockerfile
FROM '' descargará si no está
COPY index.html /usr/local/apache2/htdocs/
''$ docker build -t apache '' --> contexto = path (de donde copiará los ficheros)
* por defecto coge el fichero Dockerfile del path actual
* se puede especificar otro fichero con ''-f''
a docker se pueden subir todas las imágenes que quieras, gratuitamente.
== docker compose
para uso local, ejecutar varios contenedores, para desarrollo
''docker-compose.iml'', estilo JSON, menos verboso, ejecuta comandos de docker
version: '3.2'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
=== entornos
* implementación
* pre-producción
* producción
* (Q&A)
=== subir
* ''docker login''