by Daniel Romero / @infoslack
Projeto PaaS da dotCloud
Open source escrito em Go
Facilita a criação de containers LXC
Iniciado em 18/01/2013
Versão 0.1 em 25/03/2013
1966-1972 - IBM CP/CMS
1989 - Insignia SoftPC
1997 - Connectix VirtualPC
1999 - VMWare Workstation
2002 - Xen
2001 - IBM AIX LPAR
2006 - Amazon EC2
2007 - Sun Logical Domains
2007 - Linux KVM
2007 - InnoTek VirtualBox
2008 - MS Hyper-V
1979-1982 - UNIX chroot
1998 - FreeBSD jail
2001 - Parallels Virtuozzo
2001 - Linux-VServer
2005 - Solaris Containers
2005 - OpenVZ
2008 - Linux LXC
2007-2008 - (Heroku)
2013 - Docker
Linux - (Nativo)
OS X - (Boot2Docker/kitematic)
Windows - (Boot2Docker)
Template read only
Faz uso de UFS
Contém os arquivos da sua app
Criadas por Commit ou Dockerfile
Depende de uma imagem
Geram novas imagens
Conectividade com o host e outros containers
Execução controlada - CPU,RAM,I/O,etc
Descartáveis ou persistentes
# Opção run com interatividade:
$ docker run -it image_name [command]
# Executando em background:
$ docker run -d image_name
# Eliminando após o uso:
$ docker run --rm -it image_name [command]
# Iniciar container interativo:
$ docker run -it ubuntu
# Realizar alterações:
$ sudo apt-get update && apt-get install -y ruby
# Encerrar e commitar;
$ docker commit [image_id]
FROM ubuntu
MAINTAINER Daniel Romero infoslack[at]gmail.com
RUN apt-get update && apt-get install -y nginx
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
# Opção build seguido de user/serviço e dockerfile
$ docker build -t infoslack/nginx [path_dockerfile]
# Login em https://registry.hub.docker/com
$ docker login
# Baixando imagens:
$ docker pull image_name
# Buscando imagens:
$ docker search name
# Enviando imagens:
$ docker push infoslack/nginx
db:
image: postgres:9.3
volumes:
- ~/.volumes/app/db/:/var/lib/postgresql/data/
expose:
- 5432
app:
build: .
command: bundle exec rails s
volumes:
- .:/usr/src/app
ports:
- 80:3000
links:
- db