slides.com/axelmonroy/docker-workshop-es/live
git
$ git
$ docker
$ docker login
$ docker-compose
$ docker run -p 8080:3000 axelmonroyx/hello:1
Una imagen es un sistema de archivos y parámetros para usar en tiempo de ejecución. No tiene estado y nunca cambia.
$ docker images
Incluyen la aplicación y todas sus dependencias, ejecutándose como procesos aislados en el espacio de usuario en el sistema operativo del host. Funcionan en cualquier computadora, en cualquier infraestructura, y en cualquier nube.
$ docker ps --all
$ docker pull node:6
$ docker run -it --rm node:6 /bin/bash
-i interactivo mantiene el contenedor adjunto
-t tty muestra la consola dentro del contenedor
-rm elimina el contenedor cuando cierres la terminal
$ echo "console.log('Hello from container'); " >> hello.js
$ node hello.js
$ node -v
docker pull [IMAGE]:[VERSION]
$ docker run -it --name SuperContainer node:6 /bin/bash
$ docker ps
$ docker stop SuperContainer
$ docker ps --all
$ docker start SuperContainer
$ docker exec -it SuperContainer /bin/bash
$ git clone https://github.com/AxelMonroyX/workshop-docker-meetup.git
$ cd workshop-docker-meetup
https://github.com/AxelMonroyX/workshop-docker-meetup
FROM node:6
MAINTAINER Your Name <mail@mail.com>
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
ENV DEBUG myapp:*
COPY . /usr/src/app
EXPOSE 3000
CMD [ "npm", "start" ]
$ docker build -t user/imageName .
$ docker push user/imageName
$ docker run -it --name Express-app axelmonroyx/express-app /bin/bash
$ exit
$ docker ps --all
$ docker start -i Express-app
$ exit
Directorios (o archivos) que están fuera de los contenedores y que existen como directorios y archivos normales en el sistema de archivos host.
Los cambios se reflejan inmediatamente, ya que el directorio del contenedor es simplemente un montaje del directorio en el host.
$ docker run -d --name SuperContainerWithVolume -v $PWD:/usr/src/app -w /usr/src/app -p 8080:3000 node:6 npm start
$ docker run -d --name SuperContainerWithVolume -v /Users/<path>:/usr/src/app -w /usr/src/app -p 8080:3000 node:6 npm start
$ docker run -d --name SuperContainerWithVolume -v //c/<path>:/usr/src/app -w /usr/src/app -p 8080:3000 node:6 npm start
$ echo "<h1>Hola desde el contenedor, usando voluménes :D <h1>" >> public/html/index.html
O cambia public/html/index.html para verificar solo entra a:
$ git clone https://github.com/AxelMonroyX/workshop-docker-meetup.git
$ cd workshop-docker-meetup
https://github.com/AxelMonroyX/workshop-docker-meetup
$ docker run -d --name mongodb -p 27017 mongo:3.0
$ docker run -it --rm --link mongodb:db -v $PWD:/usr/src/app -w /usr/src/app -p 80:3000 node:6 npm start
$ docker run -d --name mongodb -p 27017 mongo:3.0
$ docker run -it --rm --link mongodb:db -v /Users/<path>:/usr/src/app -w /usr/src/app -p 80:3000 node:6 npm start
$ docker run -d --name mongodb -p 27017 mongo:3.0
$ docker run -it --rm --link mongodb:db -v //c/<path>:/usr/src/app -w /usr/src/app -p 80:3000 node:6 npm start
var MongoClient = require('mongodb').MongoClient
MongoClient.connect('mongodb://db', function (err, db) {
if (err) throw err
console.log("DB: CONNECTED TO THE DATABASE")
})
var MongoClient = require('mongodb').MongoClient
MongoClient.connect('mongodb://<dbuser>:<dbpassword>@127.0.1.1:27017', function (err, db) {
if (err) throw err
console.log("DB: CONNECTED TO THE DATABASE")
})
version: '2'
services:
node:
image: node:6
ports:
- "3000:3000"
environment:
- DEBUG=myapp:*
volumes:
- ./:/usr/src/app
working_dir: /usr/src/app
depends_on:
- mongo
links:
- mongo:db
command: /bin/bash -c "npm install && npm start"
mongo:
image: mongo:3
ports:
- "27017:27017"
volumes:
- ./docker/develop/data:/data/db
$ docker-compose up