Docker: xây dựng bản mạng yêu cầu 1 đối số. Xem 'xây dựng docker - trợ giúp'


315

Cố gắng làm theo các hướng dẫn để xây dựng hình ảnh docker từ trang web docker.

https://docs.docker.com/examples/rasty_redis_service/

đây là lỗi tôi nhận được sẽ làm theo hướng dẫn trên tài liệu và sử dụng Dockerfile này

FROM        ubuntu:14.04
RUN         apt-get update && apt-get install -y redis-server
EXPOSE      6379
ENTRYPOINT  ["/usr/bin/redis-server"]


sudo docker build -t myrepo/redis
docker: "build" requires 1 argument. See 'docker build --help'.

Làm thế nào để giải quyết?

Câu trả lời:


657

Bạn cần thêm một dấu chấm, ví dụ, docker build -t mytag .điều đó có nghĩa là bạn sử dụng Dockerfile trong thư mục cục bộ và nếu bạn sử dụng docker 1.5, bạn có thể chỉ định Dockerfile ở nơi khác, trích xuất từ ​​trợ giúp của việc xây dựng docker-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)


3
bạn có thể vui lòng đánh dấu lệnh chính xác: "docker build -t mytag." didn
Tiếtt

6
@ user2915097 Tôi không đồng ý điều đó. (dấu chấm) có nghĩa là thư mục cục bộ, vì khi sử dụng tùy chọn -f (--file), hãy đặt. (dấu chấm) vẫn là bắt buộc.
andolsi đã khoanh vùng

5
các . chỉ định bối cảnh của công trình
andolsi đã khoanh vùng

35
Câu hỏi phổ biến cho thấy cú pháp lệnh docker không rõ ràng như thế nào ... Cá nhân tôi nghĩ rằng dấu chấm chỉ có nghĩa là kết thúc câu ...
Thất vọng

2
Xin chào từ docs.docker.com/get-started/part2/#apppy - Tôi đã quá mù để xem. cũng có
Alex Jansen

31

Bạn đã sao chép lệnh xây dựng từ một nơi khác (trang web hoặc một số tệp khác)? Hãy thử gõ nó từ đầu.

Tôi đã sao chép một lệnh xây dựng từ một hướng dẫn AWS và dán nó vào thiết bị đầu cuối của tôi và nhận được lỗi này. Nó làm tôi phát điên. Sau khi gõ nó bằng tay, nó đã làm việc! Nhìn gần hơn và các lệnh thất bại trước đây của tôi, tôi nhận thấy ký tự "dash" khác, nó là ký tự gạch ngang mỏng hơn, dài hơn tôi nhận được nếu tôi tự gõ nó bằng phím "trừ / gạch ngang".

Xấu:

sudo docker xây dựng bột foo.

Tốt

sudo docker xây dựng -t foo.

Bạn có thể thấy sự khác biệt không? .. Cắt và dán thật khó.


22

Sử dụng lệnh sau

docker build -t mytag .

Lưu ý rằng mytag và dot có khoảng cách giữa chúng. Dấu chấm này đại diện cho thư mục làm việc hiện tại.


17

nhập mô tả hình ảnh ở đâyChỉ cần cung cấp dấu chấm (.) Ở cuối lệnh bao gồm một khoảng trắng.

thí dụ:

lệnh: docker build -t "nháy: v1".

Tại đây bạn có thể thấy "nháy: v1" rồi dấu cách rồi chấm (.)

Đó là nó.


17

Trong trường hợp của tôi, lỗi này đã xảy ra trong một đường ống Gitlab CI khi tôi chuyển nhiều biến env Gitlab sang docker buildvới --build-argcờ.

Hóa ra một trong các biến có một khoảng trắng trong đó gây ra lỗi. Rất khó để tìm thấy vì các bản ghi đường ống chỉ hiển thị $VARIABLE_NAME.

Đảm bảo trích dẫn các biến môi trường để không gian được xử lý chính xác.

Thay đổi từ:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

đến:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"

1
cứu lấy sự googling của tôi;)
Adiii

Đây chính xác là vấn đề mà tôi có. Cảm ơn rât nhiều!
phi

10


Bạn cần một DOT ở cuối ...


Ví dụ:

$ docker build -t <your username>/node-web-app .

Nó hơi bị ẩn, nhưng nếu bạn chú ý đến .cuối ...


1
Bạn đã cứu ngày của tôi. Cảm ơn bạn.
PhátHV

3

Bạn có thể xây dựng hình ảnh docker từ một tệp có tên là docker file và được đặt tên là Dockerfile theo mặc định. Nó có tập lệnh / lệnh mà bạn cần trong thùng chứa docker. Bên dưới lệnh tạo hình ảnh với thẻ mới nhất, Dockerfile sẽ xuất hiện trên vị trí đó (có nghĩa là hiện tại direcotry)

docker build . -t <image_name>:latest

Bạn có thể chỉ định Dockerfile qua -f nếu tên tệp không mặc định (Dockerfile) Sameple Docker nội dung tệp.

FROM busybox
RUN echo "hello world"

2

Trên các phiên bản cũ hơn của Docker, có vẻ như bạn cần sử dụng thứ tự này:

docker build -t tag .

và không

docker build . -t tag


1

Mở PowerShelland và làm theo các hướng dẫn này. Loại lỗi này là cơ bản trong Windows SO Khi bạn sử dụng lệnh xây dựng cần một tùy chọn và đường dẫn.

Có loại lỗi này vì bạn chưa chỉ định đường dẫn cho Dockerfile của bạn.

Thử cái này:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. Friendlyhello là tên người bạn gán cho conteiner của bạn
  2. C: \ Users \ Daniele \ app \ là đường dẫn tới Dockerfile của bạn

nếu bạn muốn thêm một thẻ

C:\Users\Daniele\app> docker build -t friendlyhello:3.0 C:\Users\Daniele\app\

1

Trong trường hợp bất kỳ ai gặp phải vấn đề này khi cố gắn thẻ -thình ảnh và cũng xây dựng nó từ một tệp KHÔNG được đặt tên Dockerfile(nghĩa là không sử dụng .đường dẫn đơn giản ), bạn có thể làm như thế này:

docker build -t my_image -f my_dockerfile .

Lưu ý rằng docker mong muốn một thư mục là tham số và tên tệp là một tùy chọn.


0

Vấn đề của tôi là Dockerfile.txt cần được chuyển đổi thành tệp thực thi Unix. Một khi tôi đã làm điều đó lỗi đã biến mất.

Bạn có thể cần phải xóa phần .txt trước khi thực hiện việc này, nhưng trên máy mac, hãy chuyển đến terminal và cd vào thư mục chứa Dockerfile của bạn và loại

chmod +x "Dockerfile"

Và sau đó nó sẽ chuyển đổi tệp của bạn thành tệp thực thi Unix, sau đó có thể được thực thi bằng lệnh xây dựng Docker.


0

Lệnh sau làm việc cho tôi. Docker tập tin đã được đặt trong thư mục my-app-master.

docker build -f my-app-master / Dockerfile -t my-app-master.


-4

Docker Build Định dạng lệnh

Trong powershell của bạn: Có loại lỗi này vì bạn chưa chỉ định đường dẫn với Dockerfile của bạn.

Thử cái này:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt

Friendlyhello là tên bạn gán cho container của bạn và thêm phiên bản, chỉ cần sử dụng : mới nhất

-f C: \ TestDockerApp \ Dockerfile.txt - bạn muốn thêm thẻ vì lệnh xây dựng cần một tham số hoặc thẻ - DockerFile là một tài liệu văn bản để thêm phần mở rộng .txt

** Hãy thử định dạng này:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**

1
Lệnh bạn đã cung cấp sẽ thất bại với cùng một lỗi. Bạn phải bao gồm một bối cảnh xây dựng làm đối số, thường là .để chỉ ra thư mục hiện tại sẽ được gửi đến công cụ docker làm bối cảnh xây dựng.
BMitch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.