Контейнер — это запущенный и изолированный образ с возможностью временного хранения данных в специальном read/write-слое. После уничтожения контейнера — данные пропадают, если не подключен том хранения данных Docker volume.
Основные команды для работы с контейнерами
Запуск контейнера из образа осуществляется командой docker run с указанием разнообразных ключей и нужного образа. Базовый вид команды: docker run python:latest (любое имя образа). Вот некоторые полезные ключи команды docker run:
- -t — предоставляет доступ к терминалу внутри контейнера.
- -i — делает возможным взаимодействие с терминалом внутри контейнера.
- -d — запуск контейнер в фоновом режиме. Это позволяет использовать терминал, из которого запущен контейнер, для выполнения других команд во время работы контейнера.
- --rm — автоматическое удаление контейнера после завершения его работы.
Например, мы запускаем контейнер с Python с доступом к терминалу, команда будет такой: docker run -ti python:latest. Если не указать -ti, то выйти из терминала Python будет очень затруднительно.
Просмотреть список запущенных контейнеров можно командой docker ps. Однако в таком виде команда вернёт список только запущенных контейнеров, чтобы вывести список всех контейнеров, в том числе и остановленных, нужно указать ключ -a. Еще один полезный ключ для отображения списка контейнеров: -q. Он выводит только ID контейнеров.
Остановить контейнер можно командой docker stop имя/id контейнера, а перезагрузить — docker restart имя/id контейнера.
Для удаления контейнера применяется команда docker rm имя/id контейнера. Если нужно удалить все контейнеры можно применить связку команд: docker rm $(docker ps -qa).
Удалить все не связанные с контейнерами ресурсы (образы, контейнеры, тома и сети) можно командой docker system prune. Если требуется удалить все остановленные контейнеры и неиспользуемые образы можно воспользоваться командой docker system prune -a.
Если вы интересуетесь Docker и контейнеризацией в целом, вам могут быть интересны следующие материалы:
История контейнеризации
Краткая история контейнеризации и разбор конкретных технологий: chroot, jail, namespaces и cgroups.
Введение в Docker
Разбираемся в том, что такое Docker, из каких компонентов состоит и какие технологии контейнеризации использует.