= 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''