Docker имеет два способа хранения изображений:
- удаленный реестр (по умолчанию docker.io, другие частные как
настраивается вручную)
- локальный диск (/ var / lib / docker / image по умолчанию, может быть настроен с флагом -g)
Демон Docker использует имя изображения (т. Е. 10.10.100.30:80/public/ubuntu:18.04
) для анализа, чтобы выяснить, в каком реестре и хранилище он должен искать.
Но демон docker проверит, существует ли образ на локальном диске, прежде чем выполнить его удаленный поиск в реестре. Эта часть может быть самой путаницей, которую вы страдаете.
Пожалуйста, прочитайте больше информации ниже.
Реестр по умолчанию: docker.io
Как говорили люди, это не может быть перезаписано конфигурацией. Может быть, из соображений безопасности или нет.
Определяемый пользователем личный реестр
Я вполне уверен, что мы могли бы определить наш собственный личный реестр для образов докеров. После развертывания реестра, который должен быть легко доступен, все, что нам нужно сделать, это настроить файл /etc/docker/daemon.json
(создать его, если он не существует) с {“insecure-registries”: [“10.10.100.30:80”]}
.
Конечно, мы должны перезапустить демон docker после настройки. Выполнить systemctl restart docker
. Если у вас есть имя пользователя / пароль, установленные в этом реестре, вы должны выполнить вход в систему. Выполните docker login 10.10.100.30:80
, затем введите имя пользователя и пароль. Вы можете увидеть сообщение об успешном входе в систему, если не было ошибок.
Теперь попробуйте ввести docker info
, вы можете увидеть сообщение, как показано ниже:
Insecure Registries:
10.10.100.30:80
127.0.0.0/8
Наконец, вы можете выдвигать / извлекать изображения с частным префиксом реестра, т.е. 10.10.100.30:80/public/ubuntu:18.04
.
Локальное дисковое хранилище
Здесь находится выход docker images
.
Есть две перспективы, чтобы понять, как изображения хранятся на локальном диске:
От человека / файловой системы в ОС, то есть файл и каталог (только мой
мнение)
Каталог по умолчанию /var/lib/docker/image/<Storage Driver>
(
отображается с драйвером хранилища на выходе docker info
). Следующий,
есть несколько каталогов (distribution / imagedb / layerdb) и
файл с именем repositories.json
. Это должно быть самым важным
файл в операции docker images
.
От демона докера
Несколько слоев состояли из изображения. Когда мы выполняем docker
build
с Dockerfile, каждый исполнитель приведет к созданию слоя
по демону докера. И один и тот же слой может быть разделен между изображениями.
Итак, демон Docker поддерживает базу данных на основе графов для управления
отношения между этими слоями изображения -
родители / дети / нижний / верхний ...
Каждый раз, когда вы выполняете команду docker, включающую образ (ы) docker, демон docker сначала проверяет свою собственную базу данных на основе графов. Если файл не найден, выполните docker pull
автоматически и сохраните информацию об изображении в базе данных для ускорения будущих операций.
Так как я все еще новичок в Docker, я думаю, вы можете посмотреть Документы на docker.com. Это довольно подробно.
Пусть это поможет ~