Tl; р; Что эквивалентно Docker Run -V для сборки Docker?
Я создал тестовый набор, включающий два шага:
- построение образа докера с использованием Dockerfile
- запуск команды с использованием только что созданного образа докера
Это хорошо работает, но я сейчас думаю о том, как запустить его из
в нашей настройке Jenkins CI.
У нас есть Dockerfile, который Jenkins использует для настройки сборки
среды и для запуска тестов, поэтому у меня есть докер в ситуации докер .
Я прочитал обычный совет, в том числе https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
но я все еще немного озадачен основами.
Я думаю, что обсуждения имеют тенденцию сосредотачиваться на "Docker Run" внутри "Docker Run"
в то время как я хочу "сборку докера, затем запустить docker" внутри "сборки докера"
Для простоты я пока игнорирую часть Дженкинса и сократил свой Dockerfile до
до минимума, который я строю, используя:
docker build -t minimal -f Dockerfile.minimal .
Я могу создать образ Docker, который может почти запустить Docker.
Моя первая проблема заключается в том, что вывод запуска "Docker run" не отображается в терминале
RUN docker -v /var/run/docker.sock:/var/run/docker.sock run hello-world
работает, по-видимому, успешно, но я вижу только:
Step 10/10 : RUN docker -v /var/run/docker.sock:/var/run/docker.sock run hello-world
---> Running in 6334040920e9
Docker version 18.09.3, build 774a1f4
Removing intermediate container 6334040920e9
---> bd3eaf625228
Вместо:
>docker run -t hello-world
Hello from Docker!
...
Я хочу построить изображение в родительском контексте как родного брата, а не как ребенка. Проблема в том, что «сборка докера» не имеет опции -v.
Итак, на данный момент у меня есть:
Step 12/12 : RUN docker build -f Dockerfile .
---> Running in cb45800fb1cf
ошибка проверки контекста: «невозможно статить» / proc / 1 / map_files ».
Команда '/ bin / sh -c docker build -f Dockerfile.' вернул ненулевой код: 1
Мой текущий минимальный Dockerfile:
FROM debian:9
RUN apt-get -y update && apt-get install -y gpg-agent apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -XGET -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get -y update && apt-get -y install docker-ce
RUN whoami
VOLUME /var/run/docker.sock
RUN docker --version
RUN docker -v /var/run/docker.sock:/var/run/docker.sock ps
RUN sh -c '(docker -v /var/run/docker.sock:/var/run/docker.sock run hello-world)'
COPY Dockerfile2 Dockerfile
RUN docker build -f Dockerfile .
, где Dockerfile2 еще более минимален:
FROM debian:9
RUN echo "hello world"
Это может быть дубликат Докер доступа в Dockerfile? , который говорит, что это невозможно, но, возможно, Docker эволюционировал с тех пор, как на этот вопрос был дан ответ?