นักเทียบท่า:“ สร้าง” ต้องการ 1 อาร์กิวเมนต์ ดู 'สร้างนักเทียบท่า - ช่วย'


315

พยายามทำตามคำแนะนำในการสร้างภาพนักเทียบท่าจากเว็บไซต์นักเทียบท่า

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

นี่เป็นข้อผิดพลาดที่ฉันได้รับจะทำตามคำแนะนำในเอกสารและใช้ Dockerfile นี้

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'.

จะแก้ไขอย่างไร

คำตอบ:


657

คุณต้องเพิ่มจุดตัวอย่างdocker build -t mytag .หมายความว่าคุณใช้ Dockerfile ในไดเรกทอรีท้องถิ่นและถ้าคุณใช้นักเทียบท่า 1.5 คุณสามารถระบุ Dockerfile ได้จากที่อื่นแยกจากความช่วยเหลือของนักสร้างนักเทียบท่า-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)


3
คุณช่วยกรุณาทำเครื่องหมายคำสั่งที่แน่นอน: "docker build -t mytag" ไม่เห็นจุด
nekperu15739

6
@ user2915097 ฉันไม่เห็นด้วย (dot) หมายถึงโลคัลไดเร็กทอรีเนื่องจากเมื่อใช้ตัวเลือก -f (--file) ให้วางเครื่องหมาย (จุด) ยังคงเป็นข้อบังคับ
andolsi zied

5
. ระบุบริบทของการสร้าง
andolsi zied

35
ความนิยมของคำถามแสดงให้เห็นว่าไวยากรณ์คำสั่งนักเทียบท่าไม่ชัดเจนอย่างไร ... โดยส่วนตัวแล้วฉันคิดว่าจุดนั้นหมายถึงจุดสิ้นสุดของประโยค ...
ผิดหวัง

2
สวัสดีจากdocs.docker.com/get-started/part2/#apppy - ฉันตาบอดเกินไปที่จะเห็น ที่นั่นเช่นกัน!
Alex Jansen

31

คุณคัดลอกคำสั่ง build จากที่อื่น (หน้าเว็บหรือไฟล์อื่น) ลองพิมพ์จากศูนย์

ฉันคัดลอกคำสั่ง build จากบทช่วยสอน AWS และวางลงในเทอร์มินัลและได้รับข้อผิดพลาดนี้ มันทำให้ฉันบ้า หลังจากพิมพ์ด้วยมือมันทำงานได้! เมื่อมองใกล้และคำสั่งที่ล้มเหลวก่อนหน้าของฉันฉันสังเกตเห็นว่าอักขระ "เส้นประ" แตกต่างกันมันเป็นตัวอักษรเส้นประที่บางกว่าและยาวกว่าที่ฉันได้รับถ้าฉันพิมพ์ด้วยตัวเองโดยใช้ปุ่ม "ลบ / ขีด"

แย่:

sudo docker build –t foo

ดี:

sudo docker build -t foo

คุณเห็นความแตกต่างหรือไม่ .. การตัดและวางทำได้ยาก


22

ใช้คำสั่งดังต่อไปนี้

docker build -t mytag .

โปรดทราบว่า mytag และ dot มีช่องว่างระหว่างกัน จุดนี้แสดงถึงไดเรกทอรีการทำงานปัจจุบัน


17

ป้อนคำอธิบายรูปภาพที่นี่เพียงระบุจุด (.) ที่ส่วนท้ายของคำสั่งรวมถึงช่องว่างหนึ่งช่อง

ตัวอย่าง:

คำสั่ง: นักเทียบท่า build -t "blink: v1"

ที่นี่คุณสามารถเห็น "กะพริบ: v1" จากนั้นเว้นวรรคแล้วตามด้วยจุด (.)

แค่นั้นแหละ.


17

ในกรณีของฉันข้อผิดพลาดนี้เกิดขึ้นใน Gitlab CI ไปป์ไลน์เมื่อฉันผ่านตัวแปร Gitlab env หลายตัวไปdocker buildพร้อมกับ--build-argค่าสถานะ

ปรากฎว่าตัวแปรตัวใดตัวหนึ่งมีช่องว่างซึ่งทำให้เกิดข้อผิดพลาด $VARIABLE_NAMEมันเป็นเรื่องยากที่จะหาตั้งแต่บันทึกท่อเพียงแค่แสดงให้เห็นว่า

ตรวจสอบให้แน่ใจว่าได้อ้างอิงตัวแปรสภาพแวดล้อมเพื่อให้มีการจัดการช่องว่างอย่างถูกต้อง

เปลี่ยนจาก:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

ถึง:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"

1
บันทึก googling ของฉัน;)
Adiii

นี่เป็นปัญหาที่ฉันมี ขอบคุณมาก!
phi

10


คุณต้องการ DOT ในตอนท้าย ...


ตัวอย่างเช่น:

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

มันค่อนข้างซ่อนอยู่ แต่ถ้าคุณให้ความสนใจ.ในตอนท้าย ...


1
คุณบันทึกวันของฉัน ขอบคุณ.
PhatHV

3

คุณสามารถสร้างภาพนักเทียบท่าจากไฟล์ชื่อไฟล์นักเทียบท่าและตั้งชื่อ Dockerfile ตามค่าเริ่มต้น มันมีชุดของคำสั่ง / คำสั่งที่คุณต้องการในภาชนะนักเทียบท่าของคุณ คำสั่งด้านล่างสร้างภาพด้วยแท็กล่าสุด Dockerfile ควรแสดงในตำแหน่งนั้น (. หมายถึงการแสดงภาพปัจจุบัน)

docker build . -t <image_name>:latest

คุณสามารถระบุ Dockerfile ผ่าน -f หากชื่อไฟล์ไม่ใช่ค่าเริ่มต้น (Dockerfile) เนื้อหาไฟล์ Docker ที่เหมือนกัน

FROM busybox
RUN echo "hello world"

2

ใน Docker รุ่นเก่าดูเหมือนว่าคุณจำเป็นต้องใช้คำสั่งนี้:

docker build -t tag .

และไม่

docker build . -t tag


1

เปิด PowerShell และทำตามขั้นตอนเหล่านี้ ข้อผิดพลาดประเภทนี้เกิดขึ้นใน Windows ดังนั้น เมื่อคุณใช้คำสั่ง build ต้องมีตัวเลือกและพา ธ

มีข้อผิดพลาดประเภทนี้เนื่องจากคุณไม่ได้ระบุพา ธ ที่จะเทียบไฟล์ Dockerfile ของคุณ

ลองสิ่งนี้:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. friendlyhello เป็นชื่อที่คุณกำหนดให้กับ conteiner ของคุณ
  2. C: \ Users \ Daniele \ app \ เป็นเส้นทางที่เชื่อมต่อ Dockerfile ของคุณ

ถ้าคุณต้องการเพิ่มแท็ก

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

1

ในกรณีที่ทุกคนประสบปัญหานี้เมื่อพยายามติดแท็ก-tภาพและสร้างจากไฟล์ที่ไม่มีชื่อDockerfile(เช่นไม่ได้ใช้เพียงแค่.พา ธ ) คุณสามารถทำสิ่งนี้ได้:

docker build -t my_image -f my_dockerfile .

ขอให้สังเกตว่านักเทียบท่าคาดว่าไดเรกทอรีเป็นพารามิเตอร์และชื่อไฟล์เป็นตัวเลือก


0

ปัญหาของฉันคือ Dockerfile.txt จำเป็นต้องถูกแปลงเป็นไฟล์ปฏิบัติการ Unix เมื่อฉันทำผิดที่หายไป

คุณอาจต้องลบส่วน. txt ก่อนที่จะทำเช่นนี้ แต่ใน mac ไปที่ terminal และ cd ในไดเรกทอรีที่ Dockerfile ของคุณอยู่และประเภท

chmod +x "Dockerfile"

จากนั้นมันจะแปลงไฟล์ของคุณเป็นไฟล์ปฏิบัติการ Unix ซึ่งสามารถดำเนินการได้โดยคำสั่ง Docker build


0

คำสั่งต่อไปนี้ทำงานให้ฉัน ไฟล์นักเทียบท่าถูกวางไว้ในโฟลเดอร์ my-app-master

นักเทียบท่า build -f my-app-master / Dockerfile -t my-app-master


-4

รูปแบบคำสั่งนักสร้าง Build

ใน PowerShell ของคุณ: มีข้อผิดพลาดประเภทนี้เนื่องจากคุณไม่ได้ระบุพา ธ ที่ใช้ Dockerfile ของคุณ

ลองสิ่งนี้:

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

friendlyhello เป็นชื่อที่คุณกำหนดให้กับคอนเทนเนอร์ของคุณและเพิ่มเวอร์ชันเพียงใช้: ล่าสุด

-f C: \ TestDockerApp \ Dockerfile.txt - คุณต้องการเพิ่มแท็กเนื่องจากคำสั่ง build ต้องการพารามิเตอร์หรือแท็ก - DockerFile เป็นเอกสารข้อความเพื่อเพิ่มส่วนขยาย. txtอย่างชัดเจน

** ลองรูปแบบนี้:

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

1
คำสั่งที่คุณระบุควรล้มเหลวด้วยข้อผิดพลาดเดียวกัน คุณต้องรวมบริบทบิลด์เป็นอาร์กิวเมนต์บ่อยครั้งที่ a .เพื่อบ่งชี้ว่าไดเร็กทอรีปัจจุบันควรถูกส่งไปยังเอ็นจิ้นนักเทียบท่าเป็นบริบทบิลด์
BMitch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.