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 Hub
https://hub.docker.com
Docker image
Dockerfile это просто
Docker Container Anti Patterns
1. Data or logs in containers
2. IP addresses of container
3. Don’t try to start multiple processes
4. Don’t use docker exec
5. Keep your image clean
6. Create image from a running container
7. Security credentials in Docker image
8. Don’t use latest tag
9. Don’t use different images, or even different tags in
dev, test, staging and production environment
10.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 -d
Creating 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
Спасибо за
внимание !!!

Docker for admins