Ответ об ошибке от демона: Ошибка разбора Dockerfile Неизвестный флаг: монтирование - PullRequest
8 голосов
/ 14 марта 2019

Предыдущий вопрос ( Неизвестный флаг Docker --mount ) сталкивался с той же ошибкой, что и устаревшая версия Docker.У меня установлена ​​последняя версия Docker.

У меня есть следующее Dockerfile:

FROM continuumio/miniconda3

RUN --mount=type=ssh pip install git+ssh://git@github.com/myrepo/myproject.git@develop
RUN conda install numpy
...

Согласно документации , я должен бытьвозможность просто запустить docker build --ssh default ..Тем не менее, я получаю следующую ошибку:

Sending build context to Docker daemon  2.048kB
Error response from daemon: Dockerfile parse error line 3: Unknown flag: mount

Вывод docker version:

Client: Docker Engine - Community
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        6247962
 Built:             Sun Feb 10 04:12:39 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:13:06 2019
  OS/Arch:          linux/amd64
  Experimental:     true

Я хотел бы создать образ Docker, не раскрывая мои личные учетные данные SSH, и это казалосьбыть поддерживаемым методом.У кого-нибудь есть мысли о том, что является причиной проблемы?

Ответы [ 2 ]

11 голосов
/ 14 марта 2019

ТЛ; др

Dockerfile

# syntax=docker/dockerfile:experimental
FROM continuumio/miniconda3

RUN --mount=type=ssh pip install git+ssh://git@github.com/myrepo/myproject.git@develop
RUN conda install numpy
...

Затем создайте свой образ докера с помощью:

DOCKER_BUILDKIT=1 docker build --ssh default -t my_image .

С этим вы сможете использовать --mount параметр для директивы RUN в вашем Dockerfile.


Длинный ответ

Как указано в документации здесь , ssh forwarding , когда сборка образа Docker включена только при использовании BuildKit backend:

Внешние функции реализации

Эта функция доступна только при использовании BuildKit бэкенд.

Сборка Docker поддерживает экспериментальные функции, такие как монтирование кэша, сборка секреты и пересылка по ssh, которые включены с помощью внешнего реализация компоновщика с синтаксической директивой. Узнать о эти функции см. в документации BuildKit. хранилище .

Для этого вам потребуется Docker 18.09 (или более поздняя версия), а также вам нужно запустить команду docker build с переменной среды DOCKER_BUILDKIT=1 и запустить файл Docker с помощью следующий магический комментарий: # syntax=docker/dockerfile:experimental.

1 голос
/ 14 марта 2019

Сообщение об ошибке, которое вы получаете из-за записи --mount внутри Dockerfile. Вы должны сначала включить Docker BuildKit, чтобы использовать этот синтаксис.

Упомянутый вами вопрос относится к команде docker run command not docker build и не относится к Dockerfile.

Вы можете проверить все доступные на данный момент опции сборки через здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...