Збірка Docker дає «неможливо підготувати контекст: контекст повинен бути каталогом: / Users / tempUser / git / docker / Dockerfile»


92

У мене є такий, Dockerfileякий повинен будувати Ubuntuімідж. Але коли я коли-небудь біжу

docker build -t ubuntu-test:latest ./Dockerfile

На консолі відображається така помилка

неможливо підготувати контекст: контекст повинен бути каталогом: / Users / tempUser / git / docker / Dockerfile

Я на Mac OsX. Я теж намагався sudo. Нічого не виходить.

Відповіді:


142

Натомість вам потрібно вказати на каталог . Ви не повинні вказувати файл docker.

docker build -t ubuntu-test:latest .робить роботу .

docker build -t ubuntu-test:latest ./Dockerfileнічого не працює .


чому це так? здається дивним необхідність вказувати на папку, коли ви могли б легко вказувати на сам файл
Моніка Хеднек

72

Ви також можете запустити збірку докера з -fопцією

docker build -t ubuntu-test:latest -f Dockerfile.custom .


1
Це спрацювало для мене. Ім'я Dockerfile у моєму випадку було Dockerfile-abcd, тому мені довелося звільнити:docker build -t my-custom-name -f /path_to_my_docker_file/Dockerfile-abcd .
niranjan harpale

17

Щоб вказати, Dockerfileколи будувати, ви можете використовувати:

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

Але це не вдасться, якщо є команда ADDабо COPYкоманда, яка залежить від відносного шляху. Існує багато способів вказати contextдля docker build, для отримання додаткової інформації ви можете звернутися до документів збірки docker .


Зробив це для ubuntu 12.04 : docker build -t ubuntu:12.04 - < DockerfileВи повинні бути в корені файлу Docker
Домінік Мотука

15

Зрозумійте контексти

docker buildкоманда

Основним синтаксисом команди збірки docker є

docker build -t imagename:imagetag context_dir

Контекст

Контекст - це каталог, який визначає, який процес збірки docker буде бачити: З точки зору Dockerfile, будь-який файл context_dir/mydir/myfileу вашій файловій системі стане /mydir/myfileв Dockerfile і, отже, під час процесу збірки.

Докер-файл

Якщо файл докер викликається Dockerfileі живе в контексті, він буде неявно знайдений за домовленістю. Це приємно, оскільки це означає, що ви зазвичай можете знайти файл Docker у будь-якому контейнері докера відразу.

Якщо ви наполягаєте на використанні іншої назви, скажімо "/ tmp / mydockerfile", ви можете використовувати -fтак:

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

але тоді файл docker не буде в тій же папці або, принаймні, буде важче знайти.


2

Це просто, щоразу, коли запускається збірка Docker, docker хоче знати, яке ім’я зображення, тому нам потрібно передати -t:. Тепер переконайтеся, що ви перебуваєте в тому ж каталозі, де є ваш файл Docker, і запустіть його

docker build -t <image_name>:<version> . Приклад, docker build -t my_apache:latest .якщо ви перебуваєте в тому ж каталозі, що і ваш Dockerfile, інакше передайте прапор -f та Dockerfile.

docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile


Щоб отримати другу команду, яка працює для мене, мені довелося її трохи змінити: docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile(зверніть увагу на додавання .
Джош,

2

Я стикаюся з тим самим питанням. Я використовую docker version:17.09.0-ce.

Я виконую наступні кроки:

  1. Створіть файл Docker та додані команди для створення образу докера
  2. Перейдіть до каталогу, де ми створили файл Dock
  3. виконати команду нижче $ sudo docker build -t ubuntu-test:latest .

Це вирішило проблему та образ, створений успішно.

Примітка: команда build залежить від версії docker, а також від того, який варіант побудови ми використовуємо. :)


1

Однією з причин, через яку я отримав помилку, було ім'я файлу, переконайтесь, що ім'я файлу - Dockerfile. Отже, я зрозумів це, сподіваюся, це може комусь допомогти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.