docker for admins

30
Docker 101 В хозяйстве и быту Valentin Nastenko

Upload: valentin-nastenko

Post on 14-Apr-2017

55 views

Category:

Technology


0 download

TRANSCRIPT

Docker 101

В хозяйстве и бытуValentin Nastenko

Наша боль

Ворох устаревших зависимостей на неподдерживаемой операционке.

“Грязная” система

“Быстрое” масштабирование

Обратная совместимость

Незаменимый админ полубог

Чего хотят клиенты ?

№1 Add more servers?

Дорого и долго (эксплуатация, поломки)

Уникальные “сервера снежинки”

Скрытые связи частей приложений

Устаревание “железа”

Система управления конфигурациями

Админы (больше и разных)

№2 Virtual Machines

Ворох “тупых” VDS и странных панелей

Дорогие IasS и PaaS с гарантированным Vendor lock in (AWS, GAE, Azure)

“Заточенные” админы

Радуга окружений и конфигураций (dev, test, stage, uat, production)

Проблема у “облака” = проблема у всех

№3 Containers

Один контейнер - одна задача

Иммутабельность

Изоляция и управление ресурсами

Ментальный переход к микроархитектуре и микросервисам

Скорость, стабильность, качественно и дешево

Cattle vs Pets

Container workflow

Glossary

Docker engine

Docker image

Docker container

Docker registry

https://docs.docker.com/engine/reference/glossary/

Docker use cases

Docker platform

Docker Hubhttps://hub.docker.com

Docker image

Dockerfile это просто

Docker Container Anti Patterns

1. Data or logs in containers2. IP addresses of container3. Don’t try to start multiple processes4. Don’t use docker exec5. Keep your image clean6. Create image from a running container7. Security credentials in Docker image8. Don’t use latest tag 9. Don’t use different images, or even different tags in

dev, test, staging and production environment10.Don’t use -P to publish all the exposed ports.

Dockerfile

Docker build

Docker Toolbox, Docker Machine, Docker Compose, Docker Swarm,Docker WHAT!?

Docker toolbox

Docker toolbox (Windows)

Docker for Mac

Docker on Windows

Docker machine$ docker-machine create --driver [Provider] dev$ eval "$(docker-machine env dev)"

Docker compose

web: restart: always build: ./web expose: - "8000" links: - postgres:postgres volumes: - /usr/src/app/static env_file: .env command: /usr/local/bin/gunicorn -w 2 -b :8000 app:app

nginx: restart: always image: nginx:1.10.2 ports: - "80:80" volumes: - /www/static volumes_from: - web links: - web:web

………………………...

$ docker-compose up -dCreating orchestratingdocker_data_1...Creating orchestratingdocker_postgres_1...Creating orchestratingdocker_web_1...Creating orchestratingdocker_nginx_1…$ docker-compose scale web=2

Docker swarm

Swarm: High-availability mode

Docker notary

Docker Ecosystem

Спасибо за внимание !!!