docker novosibirsk meetup #3 - docker in production

23
Docker in Production Something new or just buzzwords?

Upload: gianluca-arbezzano

Post on 12-Apr-2017

134 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Docker Novosibirsk Meetup #3 - Docker in Production

Docker in ProductionSomething new or just buzzwords?

Page 2: Docker Novosibirsk Meetup #3 - Docker in Production

Gianluca ArbezzanoSoftware Engineer @CurrencyFair

DevOps enthusiast and Open Source developer.

● http://scaledocker.com● http://gianarb.it● https://twitter.com/gianarb● https://github.com/gianarb● [email protected]

> Automate the boring stuffs.

Page 3: Docker Novosibirsk Meetup #3 - Docker in Production

Internet users in the World

http://www.internetlivestats.com/internet-users/

Page 4: Docker Novosibirsk Meetup #3 - Docker in Production

Cloud Computing

1960s The initial concepts of time-sharing became popularized via RJE (Remote Job Entry);[

1990s Telecommunications companies, who previously offered primarily dedicated point-to-point data circuits, began offering virtual

private network (VPN) services with comparable quality of service, but at a lower cost.

2000s Cloud computing has come into existence. In early 2008, NASA's OpenNebula

2006s Amazon introduced its Elastic Compute Cloud.

2008s Microsoft Azure was announced as "Azure". It was released on 1 February 2010 as Windows Azure

2010s Rackspace Hosting and NASA jointly launched an open-source cloud-software initiative known as OpenStack

https://en.wikipedia.org/wiki/Cloud_computing#Origin_of_the_term

Page 5: Docker Novosibirsk Meetup #3 - Docker in Production

Your application and your business

That’s what matters

Page 6: Docker Novosibirsk Meetup #3 - Docker in Production

Problems that I see● Onboarding new users● Testing● Deploy your application● Scalability● Timing● Number of applications

Page 7: Docker Novosibirsk Meetup #3 - Docker in Production

Why containers are good● Easier to deploy● Good to keep developers and system administrator frends● Less expensive to manage in time compared with VM. But you still need

VMs or at least servers.● Immutable

Page 8: Docker Novosibirsk Meetup #3 - Docker in Production

you still need VMs or at least servers.

Page 9: Docker Novosibirsk Meetup #3 - Docker in Production

You still need to manage● Network● Hostname● Firewall● Maybe some tools like vim, you always need vim● Docker itself needs to be installed and configurated

Page 10: Docker Novosibirsk Meetup #3 - Docker in Production

Everything as code:1. Cloud init2. Configuration management3. Docker

https://github.com/chef-cookbooks/docker

Page 11: Docker Novosibirsk Meetup #3 - Docker in Production

VPN - It’s not complicated! Stop to think that...

https://community.openvpn.net/openvpn/wiki/BridgingAndRouting

Page 12: Docker Novosibirsk Meetup #3 - Docker in Production

dockerd -H fd:// -H tcp://10.7.5.22 --label kind=private

Page 13: Docker Novosibirsk Meetup #3 - Docker in Production

6 October 2016© 2016 CurrencyFair Ltd

Docker 1.13 makes production environment

good.

Page 14: Docker Novosibirsk Meetup #3 - Docker in Production

6 October 2016© 2016 CurrencyFair Ltd

CLI redesign

Docker CLI is always a privileged client for the daemon. Thousand

of users learn how to run contains with this tools:

docker run -it alpine sleep 10

Page 15: Docker Novosibirsk Meetup #3 - Docker in Production

6 October 2016© 2016 CurrencyFair Ltd

CLI redesign

Advanced users or scripts to build complex solution:

find '/var/lib/docker/volumes/' -mindepth 1 -maxdepth 1 -type d | grep -vFf <(

docker ps -aq | xargs docker inspect | jq -r '.[]|.Mounts|.[]|.Name|select(.)'

)

Page 16: Docker Novosibirsk Meetup #3 - Docker in Production

6 October 2016© 2016 CurrencyFair Ltd

But was time for a little re-design

Page 17: Docker Novosibirsk Meetup #3 - Docker in Production

6 October 2016© 2016 CurrencyFair Ltd

top level command

● checkpoint Manage checkpoints

● container Manage containers

● image Manage images

● network Manage networks

● node Manage Swarm nodes

● plugin Manage plugins

● secret Manage Docker secrets

● service Manage services

● stack Manage Docker stacks

● swarm Manage Swarm

● system Manage Docker

● volume Manage volumes

100% compatible with the old commands: run, stop, start and so on

http://blog.arungupta.me/docker-1-13-management-commands/

Page 18: Docker Novosibirsk Meetup #3 - Docker in Production

6 October 2016© 2016 CurrencyFair Ltd

Keep your environment clean

docker system

docker system info == docker info

docker system event => to follow stream’s events from deamon

docker system prune => to clean your env from bad layers,

volumes and networks

Page 19: Docker Novosibirsk Meetup #3 - Docker in Production

6 October 2016© 2016 CurrencyFair Ltd

Welcome compose v3version: ‘3’

services:

micro:

image: gianarb/micro:1.2.0

deploy:

mode: replicated

replicas: 2

resources:

limits:

cpus: '0.25'

memory: 512M

reservations:

cpus: '0.25'

memory: 256M

restart_policy:

condition: on-failure

delay: 5s

max_attempts: 3

window: 120s

Compatible with Swarm modedocker stack create \ -c ./docker-compose.yml frontend

Page 20: Docker Novosibirsk Meetup #3 - Docker in Production

6 October 2016© 2016 CurrencyFair Ltd

Secrets are available in Swarm mode

docker secret create well ./secret.json

docker service create --secret well alpine sleep 1000

Secrets are running in directory /run

Page 21: Docker Novosibirsk Meetup #3 - Docker in Production

6 October 2016© 2016 CurrencyFair Ltd

Squash layers

docker build --squash -t jenkins-sq .

Page 23: Docker Novosibirsk Meetup #3 - Docker in Production

Thankshttp://gianarb.it