Docker cr ineta-20150601

29
Docker

Transcript of Docker cr ineta-20150601

Docker

Chris OrtmanUniversity of Iowa

! @chriso

" chrisortman

Jerry  Steele  

• Historic  2008  floods  begat  epic  cooperation  between  civic  leaders,  business,  universities,  community  colleges,  and  startups  

• Making  “We  Create  Here”  meaningful  &  accessible

http://j.mp/tc-slack

Docker is Awesome

1. Install and run any application with a single command

2. GIT for servers

3. Executable setup documentation

4. Isolate development environments and tools

Key Components

Registry Image

pull

Container

run

Imagecommit

push

Dockerfilebuild

XML CONFIGURATION

Key Component: Registry

Registry is a storage location where you can pull and push preconfigured images that are ready to go.

An example is DockerHub, but you can also host your own pretty easily.

DEMO 1applications

HomebrewBoot2docker

–me

“It’s like git, but for servers”

docker run -d --publish 8080:8080 cptactionhank/atlassian-jira

Key Component: Image

Image is a readonly template that contains your operating system files.

You can create new images by commiting your changes to a container.

DEMO 2images

Executable setup documentation

Key Component: Dockerfile

Dockerfile is a Makefile for your image.

–Wayne Mack c2wiki http://c2.com/cgi/wiki?TestsAreAnExecutableSpecification

“The key advantage of a test set as proposed in TestFirstDesign as a specification is that it is unambiguously verifiable against the code. ”

DEMO 3rvm-base dockerfile

Isolation

Key Component: ContainerContainer is your virtualized operating system.

It uses namespaces, control groups, and union file systems to provide isolation for applications.

docker@boot2docker:~$ df -hFilesystem Size Used Available Use% Mounted ontmpfs 1.8G 94.5M 1.7G 5% /tmpfs 1002.1M 324.0K 1001.8M 0% /dev/shm/dev/sda1 18.2G 6.8G 10.4G 40% /mnt/sda1cgroup 1002.1M 0 1002.1M 0% /sys/fs/cgroupnone 464.8G 299.6G 165.1G 64% /Users/dev/sda1 18.2G 6.8G 10.4G 40% /mnt/sda1/var/lib/docker/aufsnone 18.2G 6.8G 10.4G 40% /mnt/sda1/var/lib/docker/aufs/mnt/431abd58c10b5560fee38b4dab8f6121f2f5b3f9475298e90b184caa423dd369none 18.2G 6.8G 10.4G 40% /mnt/sda1/var/lib/docker/aufs/mnt/2342b6aa2e395dd9dd

root@2342b6aa2e39:/# df -hFilesystem Size Used Avail Use% Mounted onnone 19G 6.9G 11G 40% /tmpfs 1003M 0 1003M 0% /devshm 64M 0 64M 0% /dev/shm/dev/sda1 19G 6.9G 11G 40% /etc/hoststmpfs 1003M 0 1003M 0% /proc/kcoretmpfs 1003M 0 1003M 0% /proc/timer_stats

daemon@431abd58c10b:/var/local/atlassian/jira$ df -hFilesystem Size Used Avail Use% Mounted onnone 19G 6.9G 11G 40% /tmpfs 1003M 0 1003M 0% /devshm 64M 0 64M 0% /dev/shm/dev/sda1 19G 6.9G 11G 40% /etc/hosts

DEMO 4containers, data volumes, and links

What we’ve learned

• Download and run pre-configured applications

• Create images and share them

• Persist data

• Connect containers

• Registry is a storage location where you can pull and push preconfigured images that are ready to go.

• Image is a readonly template that contains your operating system files.

• Dockerfile is a Makefile for your image.

• Container is your virtualized operating system.

Registry Image

pull

Container

run

Imagecommit

push

Dockerfilebuild

http://j.mp/tc-slack

docker

Questions??! @chriso

" chrisortman