очень сложный контекст для образа докера

Я создал пару разных каталогов на моей хост-машине, когда я пытаюсь узнать о Docker, просто чтобы сохранить мои файлы докерства. Мой Dockerfile, который я только что запустил, выглядит так:

FROM crystal/centos
MAINTAINER crystal

ADD ./rpms/test.rpm ./rpms/ 
RUN yum -y --nogpgcheck localinstall /rpms/test.rpm 

Мое фактическое число оборотов в минуту составляет всего 1 ГБ. Но когда я пытаюсь выполнить sudo docker build -t="crystal/test" ., я получаю отправку контекста сборки демону Docker 3,5 ГБ. Есть ли что-то еще, о чем я не знаю, когда вы продолжаете создавать образы Docker? Накапливается ли моя память, когда я создаю больше изображений в других моих каталогах на моей хост-машине?

72 голоса | спросил Crystal 28 +03002014-10-28T07:10:49+03:00312014bEurope/MoscowTue, 28 Oct 2014 07:10:49 +0300 2014, 07:10:49

5 ответов


0

Клиент Docker отправляет весь «контекст сборки» демону Docker. Этот контекст сборки (по умолчанию) - это весь каталог, в котором находится Dockerfile (то есть весь rpms дерево).

Вы можете настроить .dockerignore , чтобы Docker игнорировал некоторые файлы. Возможно, вы захотите поэкспериментировать с этим.

Кроме того, вы можете переместить папку rpms на один уровень выше своего каталога Dockerfile и только символическая ссылка test.rpm в Dockerfile.

ответил Thomas Orozco 28 +03002014-10-28T12:02:00+03:00312014bEurope/MoscowTue, 28 Oct 2014 12:02:00 +0300 2014, 12:02:00
0

Я исправил это, переместив мой Dockerfile и docker-compose.yml в подпапку, и он отлично работал. Судя по всему, docker отправляет текущую папку демону, а моя папка была 9 гигабайт.

ответил Emad 25 +03002015-10-25T16:26:10+03:00312015bEurope/MoscowSun, 25 Oct 2015 16:26:10 +0300 2015, 16:26:10
0

В моем случае это было, когда я выполняю с неверными аргументами -f - без пути к каталогу, в котором находится Dockerfile

docker build --no-cache -t nginx5 -f /home/DF/Dockerfile /home/DF/ - справа

docker build --no-cache -t nginx5 -f /home/DF/Dockerfile - неверно

ответил FreeStyler 16 J0000006Europe/Moscow 2017, 11:53:34
0

Если у вас есть файл .dockerignore и контекст сборки все еще велик, вы можете проверить, что отправляется в контекст сборки докера, используя Серебряный поисковик :

ag --path-to-ignore .dockerignore --files-with-matches

Обратите внимание, что некоторые шаблоны ** могут работать неправильно.

Дополнительную информацию смотрите в этой проблеме Github: https://github.com/moby/moby /вопросы /16056

ответил Luís Bianchin 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 25 Sep 2018 22:20:34 +0300 2018, 22:20:34
0

У меня была та же проблема, что и у FreeStyler. Однако я строил из каталога один из моего контекста. Таким образом, аргументы -f были правильными, контекст был неверным.

project 
|
-------docker-dir 

Сборка из директории Docker показала, что все в порядке

docker build -t br_base:0.1 . 

Сборка из папки Dock изменила контекст сборки. Поэтому мне нужно было изменить контекст в команде. Контекст задается символом «.» в команде выше.

Новая команда из каталога проекта должна быть

docker build -t br_base:0.1 ./base

Контекст здесь задается как «./base»

ответил BravoRomeo23 9 +03002017-10-09T18:46:57+03:00312017bEurope/MoscowMon, 09 Oct 2017 18:46:57 +0300 2017, 18:46:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132