Docker - это инструмент, который помогает упаковывать приложения и их зависимости в отдельные “контейнеры”, делая их легкими для переноса и запуска на любой системе.
Контейнеризация - это тип виртуализации, который выводит виртуализацию на уровень операционной системы.
Преимущества
Недостатки
Используя инструкции с офф. источника на примере Ubuntu и др.
Установка с помощью скрипта
Проверить, успешно ли установлен Docker, выполнив команду:
:rw - доступ на чтение и запись:ro - только чтениеdocker volume lshttps://docs.docker.com/reference/dockerfile/
docker build <context> - Этот командный шаблон используется для сборки Docker-контейнера в соответствии с инструкциями, указанными в файле Dockerfile.
<context> - путь до базовой папки (чаще всего используется docker build .). При запуске инструкции build, docker демону передаётся указанный контекст, за исключением всех файлов, указанных в .dockerignore. Поэтому тяжелые файлы, которые не нужны для сборки образа лучше указывать в .dockerignore файле, чтобы не нагружать daemon.-f Dockerfile.debug - Параметр -f указывает путь к файлу Dockerfile, содержащему инструкции для сборки контейнера. В данном случае, Dockerfile.debug указывает на отладочный файл Dockerfile.-t <имя> - Опция -t используется для установки тега (имени) для собранного контейнера, чтобы можно было легко идентифицировать его в дальнейшем.docker run - Данная команда запускает собранный Docker-контейнер.
--rm - Опция --rm автоматически удаляет контейнер после его остановки, что полезно для избежания накопления неиспользуемых контейнеров.-it - Опция -it используется для запуска контейнера в интерактивном режиме, обеспечивая доступ к его стандартному вводу/выводу (stdin/stdout).-p 8080:80 - Этот флаг пробрасывает порт контейнера на хостовую машину. В данном случае, порт 80 контейнера привязывается к порту 8080 хостовой машины [external_port:internal_port].-v ./data/:/workdir/data - Опция -v используется для создания привязки тома, позволяя контейнеру доступ к файлам на хостовой машине. В данном примере, директория ./data/ на хостовой машине привязывается к директории /workdir/data внутри контейнера.--name <название> - Опция --name позволяет задать пользовательское имя контейнера для удобства идентификации его в дальнейшем.--net <тип> - Опция --net позволяет настраивать сетевое окружение контейнера. Значение <тип> определяет тип сети, в которой будет работать контейнер.-e <переменная=значение> - Опция -e позволяет передавать переменные среды в контейнер во время его выполнения.-d - запуск в тихом режиме, без отображения событий внутри работающего контейнера.-m 4GB - установка ограничения используемой контейнером памяти. В данном случае контейнер сможет использовать во время своего выполнения 4 ГБ памяти.docker ps - Эта команда отображает список запущенных Docker-контейнеров.
-a - Опция -a показывает все контейнеры, включая остановленные.-q - показывает только идентификаторы контейнеров. Полезно для комбинаций команд, например команда docker stop $(docker ps -q) останавливает все запущенные контейнеры.docker logs <идентификатор_контейнера|имя_контейнера> - Команда docker logs используется для просмотра журналов вывода контейнера.
-f - Опция -f позволяет отслеживать живую потоковую передачу журналов, т.е. вывод в реальном времени.-n <число> - Опция -n позволяет указать количество последних строк журнала для отображения.docker stop <идентификатор_контейнера|имя_контейнера> - Эта команда используется для остановки запущенного Docker-контейнера.
docker rm <идентификатор_контейнера|имя_контейнера> - Команда docker rm удаляет указанный контейнер.
docker exec -it <идентификатор_контейнера|имя_контейнера> bash - Команда docker exec используется для выполнения команд внутри работающего контейнера Docker.
docker inspect <идентификатор_контейнера|имя_контейнера> - Команда docker inspect предоставляет подробную информацию о контейнере Docker, включая его настройки и параметры.
docker stats [ <идентификатор_контейнера|имя_контейнера> | --all ] - Команда docker stats позволяет в режиме реального времени мониторить ресурсы потребляемые одним контейнером, или всеми контейнерами при использовании флага --all.
docker <object> prune - очистка неиспользуемых объектов. Вместо <object> может находиться: container, image, volume, а в случае если нужно сразу очистить всё неиспользуемое - system.
Создадим файл с названием docker-compose.yml и поместим туда код.
тут ваш замечательный файл (предположим нам для чего-то понадобился редис)
version: '3.7'
services:
redis:
container_name: mlops_redis
image:
redis
app:
container_name: mlops_app
build:
context: .
dockerfile: Dockerfile
command: ["uvicorn", "..."] # перезаписывает CMD в Dockerfile
env_file:
- ".env"
depends_on:
redis
volumes:
- mlops_volume:/home/mlops/data:rw
volumes:
mlops_volume:docker-compose up - Эта команда используется для запуска сервисов, описанных в файле docker-compose.yml.
-d - Опция -d позволяет запустить сервисы в фоновом режиме, без вывода логов в терминал.--build - Опция --build используется для пересборки образов перед запуском контейнеров.docker-compose down - Данная команда останавливает и удаляет все контейнеры, созданные с помощью docker-compose up.
--volumes - Опция --volumes удаляет также и тома данных, связанные с контейнерами.docker-compose logs <service> - Команда docker-compose logs позволяет просматривать логи для определенного сервиса из вашего docker-compose.yml.
--follow - Опция --follow (или -f) отображает логи в реальном времени.docker-compose ps - Эта команда показывает статус всех сервисов, запущенных с помощью docker-compose.
docker-compose exec <service> <command> - Команда docker-compose exec используется для выполнения команд внутри контейнера сервиса.
docker-compose exec webserver bash запускает интерактивный терминал в контейнере webserver.docker-compose restart <service> - Эта команда перезапускает указанный сервис.
docker-compose stop <service> - Команда docker-compose stop останавливает указанный сервис без его удаления.
docker-compose start <service> - Эта команда запускает остановленный сервис.
docker-compose build - Команда docker-compose build используется для сборки образов, описанных в docker-compose.yml.
docker-compose config - Эта команда проверяет конфигурационный файл docker-compose.yml и выводит его валидность, а также объединяет все файлы конфигурации в один.
Соберите образ с тэгом mlops_app:latest, передав текущую папку как контекст
Запустите контейнер с названием mlops_container
В отдельном терминале подключитесь к файловой системе запущенного контейнера
Также в отдельном терминале можно проверить ресурсы, которые потребляет контейнер с помощью команды