คุณสามารถตั้งชื่อภาพเมื่อสร้างภาพที่กำหนดเองเช่นนี้:
docker build -t dude/man:v2 . # Will be named dude/man:v2
มีวิธีการกำหนดชื่อของภาพใน Dockerfile ดังนั้นฉันไม่ต้องพูดถึงมันในdocker build
คำสั่งหรือไม่?
คุณสามารถตั้งชื่อภาพเมื่อสร้างภาพที่กำหนดเองเช่นนี้:
docker build -t dude/man:v2 . # Will be named dude/man:v2
มีวิธีการกำหนดชื่อของภาพใน Dockerfile ดังนั้นฉันไม่ต้องพูดถึงมันในdocker build
คำสั่งหรือไม่?
คำตอบ:
ไม่สนับสนุนการแท็กของภาพภายใน Dockerfile สิ่งนี้จะต้องทำในคำสั่งการสร้างของคุณ เป็นวิธีแก้ปัญหาที่คุณสามารถทำสร้างกับนักเทียบท่า-compose.yml docker-compose build
ที่ระบุชื่อภาพเป้าหมายและเรียกใช้ ตัวอย่างนักเทียบท่า-compose.yml จะดูเหมือน
version: '2'
services:
man:
build: .
image: dude/man:v2
ที่กล่าวว่ามีการผลักดันกับการสร้างด้วยการเขียนเพราะไม่ได้ทำงานกับโหมด swarm ปรับใช้ ดังนั้นคุณจะกลับไปใช้คำสั่งตามที่คุณให้ไว้ในคำถามของคุณ:
docker build -t dude/man:v2 .
โดยส่วนตัวฉันมักจะสร้างด้วยสคริปต์เชลล์ขนาดเล็กในโฟลเดอร์ของฉัน (build.sh) ที่ผ่าน args ใด ๆ และรวมถึงชื่อของภาพที่มีการบันทึกการพิมพ์ และสำหรับการผลิตบิลด์จะถูกจัดการโดยเซิร์ฟเวอร์ ci / cd ที่มีชื่ออิมเมจภายในสคริปต์ไพพ์ไลน์
วิธีสร้างรูปภาพด้วยชื่อที่กำหนดเองโดยไม่ใช้ไฟล์ yml:
docker build -t image_name .
วิธีเรียกใช้คอนเทนเนอร์ด้วยชื่อที่กำหนดเอง:
docker run -d --name container_name image_name
Dockerfile
ในไดเรกทอรีที่มีชื่อเดียวกับที่คุณต้องการสำหรับภาพของคุณคุณสามารถใช้docker build -t $(basename $PWD) .
เป็นคำสั่งสร้างของคุณ จากนั้นคุณสามารถใช้การค้นหา CTRL-R จาก "build" เพื่อค้นหาและใช้คำสั่งซ้ำและไม่ต้องแก้ไข คุณสามารถทำให้เป็นนามแฝงได้หากต้องการ
นี่คือรุ่นอื่นหากคุณต้องอ้างอิงไฟล์นักเทียบท่าเฉพาะ:
version: "3"
services:
nginx:
container_name: nginx
build:
context: ../..
dockerfile: ./docker/nginx/Dockerfile
image: my_nginx:latest
จากนั้นคุณก็วิ่ง
docker-compose build
คุณสามารถทำได้โดยใช้ 'เป็น' จาก Ubuntu: 16.04 เป็น FooImage
AS
ไวยากรณ์ระบุชื่อเป้าหมายที่ใช้ในหลายขั้นตอนการสร้างและชื่อนี้ยังสามารถใช้ในสถานที่ของภาพสำหรับCOPY --from
ไวยากรณ์ภายในแบบหลายขั้นตอนการสร้าง อย่างไรก็ตามไม่ได้ระบุชื่อ / แท็กผลลัพธ์สำหรับบิลด์เอง