| layout | slide |
|---|---|
| title | Docker |
- Неудачи при попытке установить все зависимое ПО, при этом не "сломав" ничего локально
- Непонимание, как запустить приложение
- Несоответствие локальной инфраструктуры с удаленной
- Поддержка инфраструктуры приложения на удаленных серверах
- Масштабирование приложения на production окружении
--
Упаковываваем и запускаем ваше ПО со всеми его зависимостями в небольших изолированных средах, называемых контейнерами
--
-
Независимость от архитектуры сервера
-
Удобное управление версиями и зависимостями
-
Простота масштабирования
-
Оптимальное использование ресурсов
-
Инфраструктура как код
--
-
Производительность
-
Усложнение архитектуры
-
Непростая настройка и поддержка
-
Плохая обратная совместимость
Docker строится на контейнеризации приложений в изолированной среде.
--
Образ — это пакет, который включает в себя все необходимые для запуска приложения
Контейнер — это экземпляр образа вашего приложения во время выполнения.
--
Виртуальной машина предоставляет среде больше ресурсов, чем требуется большинству приложений
--
Контейнер работает в Linux и разделяет ядро HostOS с другими контейнерами. Он запускается в отдельном процессе, занимая минимум памяти
Dockerfile состоит из команд (RUN, ENTRYPOINT, CMD и другие).
Каждая команда создание нового слоя при сборке образа.
Структура связей между слоями в Docker - иерархическая.
--
--
Это инструкция для сборки образ вашего ПО
--
Когда запускается контейнер, он создает еще один слой поверх образа
Только слой контейнера доступен для записи
--
Docker volume – папка на HostOS, "примонтированная" к файловой системе контейнера
--
Docker Compose - это инструмент для определения и запуска многоконтейнерных приложений Docker.
--
Возможности Compose:
-
Запуск нескольких изолированных сред на одном хосте
-
Настройка volumes при создании контейнеров
-
Удобный менеджмент запущенных контейнеров
-
Удобная конфигурация контейнеров и коммуникации между ними
--
С Compose вы используете файл YAML для настройки сервисов(контейнеров) вашего приложения и одну команду для создания и запуска всех сервисов из этого файла конфигурации
--
docker pull hello-world--
docker run hello-world--
docker build -t <image_tag> - < Dockerfileand then you can run it in interactive mode:
docker run -it <image_tag> bashor run in deamon mode
docker run -d <image_tag> rails sor just run, execute command and stop
docker run <image_tag> uname -a--
docker psIf you want to see all containers - live and dead, so just add -a to commant:
docker ps -a--
You can run command and get output:
docker exec <container_id or name> some commandor run command in interactive mode:
docker exec -it <container_id or name> rails c--
docker images lsdocker rmi <image_id or tag>--
docker volume lsdocker volume create <name>docker volume rm <name>--
docker system prune -af--
docker logs <container_id or name>--
docker inspect <container_id or name>--
docker-compose build--
docker-compose up--
docker-compose up --build--
docker-compose down--
Let's image that you already have running containers, but empty database, so to seed you just need to execute one command:
docker exec -it <rails_container_id> rake db:seed--
Just attach to the running rails container
docker attach <rails_container_id>and magic...
--
--
--
A tool for exploring a docker image, layer contents, and discovering ways to shrink the size of your Docker/OCI image:
The Docker Bench for Security is a script that checks for dozens of common best-practices around deploying Docker containers in production:
VScode extension
--
https://github.com/bl0rch1d/docker_lecture_materials
git clone https://github.com/bl0rch1d/docker_lecture_materials.git
cd docker_lecture_materials
docker build -t sw_movie - < ./dockerfiles/simple.Dockerfile
docker run -it sw_movie telnet towel.blinkenlights.nl










