Docker
Motivation
- As DevOps I want to quickly spin up a new server
- As DevOps I want to change the setup for all existing servers / part of them / new servers
- As DevOps I want to test the env changes before actually applying them
- As DevOps I want to run different stack components versions on the same server (e.g. panda)
- As a developer I want to reproduce "only at the server" bug.
- As a developer I want to setup a new dev env
Meet Docker...
- Virtualization alternative
- Linux containers based
- Fast growing technology
Basics
- Images - transportation mean
- Containers - execution mean
- Dockerfile (remember Vagrantfile?)
- Docker Hub - Registry
Examples
-
docker run ubuntu:14.04 /bin/echo 'Hello world'
-
docker ps (-a)
- docker kill
- docker rm
- docker pull
-
docker build
-
docker images
-
docker rmi
-
docker push
-
Dockerfile syntax
Our Need
-
Setup Server 12 from top to bottom
-
Based on the prescription we have
-
Some components required as is
-
Some components will go through config change
-
Some components are not required anymore
-
-
Proudly invented elsewhere...
-
Is there a ready made image? Not really
-
Can we re-use some image as a baseline
-
Our Image Evolution - 1
-
First take: build a full stack image:
-
Centos
-
Hardening, users, sshd
-
Firewall, Antivirus, rkhunter, etc
-
LAMP
-
Backup, monitor, logging
-
...
-
-
Second take: Different Envs - Different Needs
-
Separate Prod from Dev
-
Re-use as much as possible => base-image
-
TODO: change config files instead of copying
-
Our Image Evolution - 2
-
Third take: separation of concerns
-
Desirably container per service
-
Linking containers
-
MySQL container + HTTPD Container
-
Restriction: image derivation is not possible
-
Both containers use the same Prod-Image
-
-
Fourth take: data persistency
-
Setting up data volumes
-
var/www/html volume
-
mysql volume
-
config volume
-
Our Image Evolution - 3
-
Fifth take: Orchestration
-
Need a tool to manage the containers
-
Meet fig AKA docker-compose
-
docker-compose.yml
-
-
Future Evolution:
-
Near term
-
Containers for additional services
-
Hardening the host
-
-
Longer term
-
Containers per site-service (i.e. pandora httpd)
-
No SSHD?
-
Own Registry
-
-
Additional Tools
- Docker hub - registry (for running)
- Bitbucket - images code (for building)
- Windows - special as always
- VirtualBox+Boot2Docker
- VirtualBox+Vagrant... + <some distro>
- See this
Docker
By dofinity
Docker
- 179