Это старая версия документа!
Прежде всего это средство изоляции процесса (задачи). Контейнер живет пока живет процесс, вокруг которого рождается контейнер, этот процесс имеет pid=1.
Рядом с этим процессом можно порождать сколько угодно других процессов, но убив (перезагрузив) pid=1, контейнер выходит.
Внутри контейнера имеется расположение директорий идентичное исходному дистрибутиву.
Данные созданные внутри контейнера остаются только внутри контейнера, удаляются вместе с контейнером поэтому нужные данные в нем не хранят, а выносят наружу, например в хостовую ОС.
Контейнеры хранятся в хранилищах, т.н. docker registry, общедоступные, приватные и т.д. Это единое место хранения и обмена контейнерами
Скачать образ из репозитория:
# docker pull wallarm/node
Загрузить образ в репозиторий:
# docker push example.com:5000/my_image
Запустить свой registry можно всего одной командой:
# docker run -d -p 5000:5000 --restart=always --name registry registry:2
Принцип контейнера в том что берется исходный контейнер, чистая ОС, т.е. ядро, все изменения (настройка) регистрируются в слоях.
Настройка прописывается в скрипте Dockerfile т.е. каждый слой контейнера это результат работы команды в этом файле.
Т.е. образ это шаблон, на основе которого вы будете запускать контейнеры. Все что запускается на основе этого образа и есть контейнер (инстанс), с одного образа можно запускать несколько одинаковых копий этого образа, далее из этого контейнера можно создать новый образ (шаблон). Хранится все это в /var/lib/docker.
Достоинство в том что слои переиспользуются, т.е. что то типа дерева изменений и можно использовать с любого уровня.., я так думаю..
«Например корневой слой с debian будет использоваться всеми контейнерами, основанными на debian. Если ваш второй слой, например, установка nginx, а третий — положить конфиг, то при изменении конфига и сборке нового образа, он будет состоять из 2-х старых слоев и одним новым.» так сказано на ресурсе.
Список образов в вашей системе:
# docker images
Список контейнеров:
# docker ps
#
#
#
#