นี่คือคำสั่งสร้างนักเทียบท่าที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
docker-build - สร้างอิมเมจใหม่จากซอร์สโค้ดที่ PATH
เรื่องย่อ
นักเทียบท่า สร้าง [--build-หาเรื่อง[=[]---cpu-หุ้น[=0---cgroup-ผู้ปกครอง[=CGROUP-ผู้ปกครอง]]
[--ช่วยด้วย] [-f|--ไฟล์[=PATH/ไฟล์นักเทียบท่า---บังคับ-rm] [--การแยกตัว[=ผิดนัด---ไม่มีแคช]
[--ดึง] [-q|--เงียบ] [--rm[=จริง--t|--แท็ก[=[]--m|--หน่วยความจำ[=หน่วยความจำ]]
[--หน่วยความจำ-swap[=LIMIT---shm-ขนาด[=SHM-ขนาด---cpu-ระยะเวลา[=0---cpu-โควต้า[=0]]
[--cpuset-ซีพียู[=CPUSET-CPU---cpuset-เมมส์[=CPUSET-MEMS---ulimit[=[]]] เส้นทาง | URL | -
DESCRIPTION
สิ่งนี้จะอ่าน Dockerfile จากไดเร็กทอรีที่ระบุใน เส้นทาง. นอกจากนี้ยังส่งใด ๆ
ไฟล์และไดเร็กทอรีอื่นๆ ที่พบในไดเร็กทอรีปัจจุบันไปยัง Docker daemon NS
เนื้อหาของไดเรกทอรีนี้จะถูกใช้โดย เพิ่ม คำสั่งที่พบใน Dockerfile
คำเตือน นี่จะส่งข้อมูลจำนวนมากไปยัง Docker daemon ขึ้นอยู่กับเนื้อหาของ
ไดเร็กทอรีปัจจุบัน บิลด์ถูกเรียกใช้โดย Docker daemon ไม่ใช่โดย CLI ดังนั้นทั้งหมด
บริบทต้องถูกถ่ายโอนไปยัง daemon Docker CLI รายงาน "กำลังส่งบริบทของบิวด์
ไปยัง Docker daemon" เมื่อบริบทถูกส่งไปยัง daemon
เมื่อให้ URL ไปยังไฟล์เก็บถาวร tarball หรือไปยัง Dockerfile ไฟล์เดียว บริบทจะไม่ถูกส่ง
จากไคลเอนต์ไปยัง Docker daemon ในกรณีนี้ Dockerfile ที่รูทของ
archive และส่วนที่เหลือของไฟล์เก็บถาวรจะถูกใช้เป็นบริบทของบิลด์ เมื่อ Git
ที่เก็บข้อมูลถูกตั้งค่าเป็น URL, พื้นที่เก็บข้อมูลถูกโคลนในเครื่องแล้วส่งเป็น
บริบท.
OPTIONS
-f, --ไฟล์=PATH/ไฟล์นักเทียบท่า
พาธไปยัง Dockerfile ที่จะใช้ หากเส้นทางเป็นเส้นทางสัมพัทธ์และคุณคือ
สร้างจากไดเร็กทอรีในเครื่อง ดังนั้นพาธจะต้องสัมพันธ์กับนั้น
ไดเร็กทอรี หากคุณกำลังสร้างจาก URL ระยะไกลที่ชี้ไปที่a
tarball หรือที่เก็บ Git ดังนั้นเส้นทางจะต้องสัมพันธ์กับรูทของ
บริบทระยะไกล ในทุกกรณี ไฟล์ต้องอยู่ภายในบริบทของบิลด์
ค่าเริ่มต้นคือ ไฟล์นักเทียบท่า.
--build-หาเรื่อง=ตัวแปร
ชื่อและค่าของ a สร้าง.
ตัวอย่างเช่น หากคุณต้องการส่งค่าสำหรับ http_proxy, ใช้
--build-arg=http_proxy="http://some.proxy.url"
ผู้ใช้ส่งผ่านค่าเหล่านี้ในเวลาบิลด์ นักเทียบท่าใช้ สร้าง เป็น
บริบทสภาพแวดล้อมสำหรับคำสั่งที่ทำงานผ่าน Dockerfile's วิ่ง การแนะนำ
หรือสำหรับการขยายตัวแปรในคำสั่งอื่นๆ ของ Dockerfile ไม่ได้หมายความอย่างนั้น
เพื่อส่งต่อค่าลับ ⟨/reference/builder/#arg⟩
--บังคับ-rm=จริง|เท็จ
นำคอนเทนเนอร์ระดับกลางออกเสมอ แม้หลังจากสร้างไม่สำเร็จ ค่าเริ่มต้นคือ
เท็จ.
--การแยกตัว="ผิดนัด"
การแยกสารจะระบุประเภทของเทคโนโลยีการแยกสารที่ใช้โดยคอนเทนเนอร์
--ไม่มีแคช=จริง|เท็จ
อย่าใช้แคชเมื่อสร้างภาพ ค่าเริ่มต้นคือ เท็จ.
--ช่วยด้วย
พิมพ์คำสั่งการใช้งาน
--ดึง=จริง|เท็จ
พยายามดึงรูปภาพเวอร์ชันใหม่กว่าเสมอ ค่าเริ่มต้นคือ เท็จ.
-q, --เงียบ=จริง|เท็จ
ระงับเอาต์พุตของบิลด์และพิมพ์ ID รูปภาพเมื่อสำเร็จ ค่าเริ่มต้นคือ เท็จ.
--rm=จริง|เท็จ
นำคอนเทนเนอร์ระดับกลางออกหลังจากสร้างสำเร็จ ค่าเริ่มต้นคือ จริง.
-t, --แท็ก= ""
ชื่อพื้นที่เก็บข้อมูล (และอาจมีแท็กด้วย) ที่จะใช้กับรูปภาพที่เป็นผลลัพธ์ใน
กรณีของความสำเร็จ
-m, --หน่วยความจำ=หน่วยความจำ
ขีด จำกัด หน่วยความจำ
--หน่วยความจำ-swap=LIMIT
ค่าจำกัดเท่ากับหน่วยความจำบวกสลับ ต้องใช้กับ -m (--หน่วยความจำ) ธง. NS
แลกเปลี่ยน LIMIT ควรใหญ่กว่า .เสมอ -m (--หน่วยความจำ) ค่า.
รูปแบบของ LIMIT is [ ]. หน่วยสามารถ b (ไบต์) k (กิโลไบต์) m
(เมกะไบต์) หรือ g (กิกะไบต์). หากคุณไม่ระบุหน่วย b ถูกนำมาใช้. ตั้ง LIMIT เป็น -1 ไปยัง
เปิดใช้งานการแลกเปลี่ยนไม่ จำกัด
--shm-ขนาด=SHM-ขนาด
ขนาดของ /dev/shm. รูปแบบคือ . จำนวน ต้องมากกว่า 0.
หน่วยเป็นตัวเลือกและสามารถ b (ไบต์) k (กิโลไบต์) m (เมกะไบต์) หรือ g (กิกะไบต์).
หากคุณละเว้นหน่วย ระบบจะใช้ไบต์
หากคุณละเว้นขนาดทั้งหมด ระบบจะใช้ 64m.
--cpu-หุ้น=0
ส่วนแบ่ง CPU (น้ำหนักสัมพัทธ์)
ตามค่าเริ่มต้น คอนเทนเนอร์ทั้งหมดจะได้รับสัดส่วนของรอบ CPU เท่ากัน
การแชร์ CPU เป็น 'น้ำหนักสัมพัทธ์' สัมพันธ์กับการตั้งค่าเริ่มต้นที่ 1024
ค่าเริ่มต้นนี้ถูกกำหนดไว้ที่นี่:
แมว /sys/fs/cgroup/cpu/cpu.shares
1024
คุณสามารถเปลี่ยนสัดส่วนนี้ได้โดยการปรับส่วนแบ่ง CPU ของคอนเทนเนอร์
การถ่วงน้ำหนักที่สัมพันธ์กับการถ่วงน้ำหนักของคอนเทนเนอร์ที่ทำงานอยู่อื่นๆ ทั้งหมด
หากต้องการแก้ไขสัดส่วนจากค่าเริ่มต้น 1024 ให้ใช้ปุ่ม --cpu-หุ้น
ธงเพื่อกำหนดน้ำหนักเป็น 2 หรือสูงกว่า
ธงแชร์ CPU คอนเทนเนอร์
{C0} 60% ของ CPU --cpu-shares=614 (614 คือ 60% ของ 1024)
{C1} 40% ของ CPU --cpu-shares=410 (410 คือ 40% ของ 1024)
สัดส่วนจะใช้เฉพาะเมื่อกระบวนการที่ใช้ CPU มากกำลังทำงานอยู่
เมื่องานในคอนเทนเนอร์หนึ่งว่าง คอนเทนเนอร์อื่นสามารถใช้
เวลา CPU ที่เหลือ ระยะเวลา CPU จริงที่ใช้แตกต่างกันไปขึ้นอยู่กับ
จำนวนคอนเทนเนอร์ที่ทำงานบนระบบ
ตัวอย่างเช่น พิจารณาสามตู้คอนเทนเนอร์ โดยที่หนึ่งมี --cpu-shares=1024 และ
อีกสองคนมี --cpu-shares=512. เมื่อดำเนินการครบทั้งสามอย่างแล้ว
คอนเทนเนอร์พยายามใช้ CPU 100% คอนเทนเนอร์แรกจะได้รับ
50% ของเวลา CPU ทั้งหมด หากคุณเพิ่มคอนเทนเนอร์ที่สี่ด้วย --cpu-shares=1024,
คอนเทนเนอร์แรกรับเพียง 33% ของ CPU ภาชนะที่เหลือ
รับ 16.5%, 16.5% และ 33% ของซีพียู
คอนเทนเนอร์ CPU แชร์ ตั้งค่าสถานะเวลา CPU
{C0} 100% --cpu-shares=1024 33%
{C1} 50% --cpu-shares=512 16.5%
{C2} 50% --cpu-shares=512 16.5%
{C4} 100% --cpu-shares=1024 33%
บนระบบมัลติคอร์ การแบ่งเวลาของ CPU จะถูกกระจายไปทั่ว CPU
แกน แม้ว่าคอนเทนเนอร์จะจำกัดเวลา CPU ให้น้อยกว่า 100% แต่ก็สามารถ
ใช้ 100% ของคอร์ CPU แต่ละตัว
ตัวอย่างเช่น พิจารณาระบบที่มีแกนมากกว่าสามคอร์ ถ้าคุณเริ่มอย่างใดอย่างหนึ่ง
ภาชนะ {C0} กับ --cpu-shares=512 เรียกใช้กระบวนการหนึ่งและคอนเทนเนอร์อื่น
{C1} กับ --cpu-shares=1024 ทำงานสองกระบวนการ ซึ่งอาจส่งผลให้
การแบ่งส่วนแบ่ง CPU:
PID คอนเทนเนอร์ CPU CPU แชร์
100 {C0} 0 100% ของ CPU0
101 {C1} 1 100% ของ CPU1
102 {C1} 2 100% ของ CPU2
--cpu-ระยะเวลา=0
จำกัดระยะเวลา CPU CFS (ตัวกำหนดเวลาที่ยุติธรรมอย่างสมบูรณ์)
จำกัดการใช้งาน CPU ของคอนเทนเนอร์ แฟล็กนี้ทำให้เคอร์เนลจำกัดการ
การใช้งาน CPU ของคอนเทนเนอร์จนถึงระยะเวลาที่คุณระบุ
--cpu-โควต้า=0
จำกัดโควต้า CPU CFS (ตัวกำหนดเวลาที่ยุติธรรมอย่างสมบูรณ์)
โดยค่าเริ่มต้น คอนเทนเนอร์จะทำงานด้วยทรัพยากร CPU ทั้งหมด แฟล็กนี้ทำให้เคอร์เนลเป็น
จำกัดการใช้ CPU ของคอนเทนเนอร์ตามโควต้าที่คุณระบุ
--cpuset-ซีพียู=CPUSET-CPU
CPU ที่อนุญาตให้ดำเนินการ (0-3, 0,1)
--cpuset-เมมส์=CPUSET-MEMS
โหนดหน่วยความจำ (MEM) ซึ่งอนุญาตให้ดำเนินการได้ (0-3, 0,1) มีผลเฉพาะกับ
ระบบ NUMA
ตัวอย่างเช่น หากคุณมีสี่โหนดหน่วยความจำในระบบของคุณ (0-3) ให้ใช้ --cpuset-mems=0,1 ไปยัง
ตรวจสอบให้แน่ใจว่ากระบวนการในคอนเทนเนอร์ Docker ของคุณใช้หน่วยความจำจากสองหน่วยความจำแรกเท่านั้น
โหนด
--cgroup-ผู้ปกครอง=CGROUP-ผู้ปกครอง
เส้นทางสู่ กลุ่ม cgroups ภายใต้ที่ภาชนะของ กลุ่ม ถูกสร้างขึ้น
ถ้าเส้นทางไม่สัมบูรณ์ ถือว่าเส้นทางสัมพันธ์กับ กลุ่ม cgroups เส้นทางของ
กระบวนการเริ่มต้น Cgroups จะถูกสร้างขึ้นหากไม่มีอยู่แล้ว
--ulimit-
Ulimit ตัวเลือก
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ulimit เห็น
⟨https://docs.docker.com/reference/commandline/run/#setting-ulimits-in-a-container⟩
ตัวอย่าง
การก่อสร้าง an ภาพ การใช้ a ไฟล์นักเทียบท่า ที่ตั้งอยู่ ภายใน ปัจจุบัน ไดเรกทอรี
อิมเมจ Docker สามารถสร้างได้โดยใช้คำสั่ง build และ Dockerfile:
นักเทียบท่าสร้าง
ระหว่างกระบวนการสร้าง Docker จะสร้างอิมเมจระดับกลาง เพื่อที่จะรักษาไว้ คุณ
ต้องกำหนดไว้อย่างชัดเจน --rm=เท็จ.
นักเทียบท่า build --rm=false
แนวปฏิบัติที่ดีคือการสร้างไดเร็กทอรีย่อยด้วยชื่อที่เกี่ยวข้องและสร้าง Dockerfile
ในไดเร็กทอรีนั้น ตัวอย่างเช่น ไดเร็กทอรีชื่อ mongo อาจมี Dockerfile to
สร้างอิมเมจ Docker MongoDB ในทำนองเดียวกัน อาจใช้ไดเร็กทอรีอื่นที่เรียกว่า httpd เพื่อ
เก็บ Dockerfiles สำหรับอิมเมจเว็บเซิร์ฟเวอร์ Apache
แนวทางปฏิบัติที่ดีในการเพิ่มไฟล์ที่จำเป็นสำหรับรูปภาพไปยังไดเรกทอรีย่อย
ไฟล์เหล่านี้จะถูกระบุด้วยเครื่องหมาย คัดลอก or เพิ่ม คำแนะนำใน ไฟล์นักเทียบท่า.
หมายเหตุ: หากคุณรวมไฟล์ tar (แนวปฏิบัติที่ดี) แล้ว Docker จะแตกไฟล์โดยอัตโนมัติ
เนื้อหาของไฟล์ tar ที่ระบุภายในไฟล์ เพิ่ม คำสั่งตามที่ระบุ
เป้า
การก่อสร้าง an ภาพ และ การตั้งชื่อ ที่ ภาพ
แนวปฏิบัติที่ดีคือการตั้งชื่อให้กับภาพที่คุณกำลังสร้าง โปรดทราบว่ามีเพียง a-z0-9-_
ควรใช้เพื่อความสม่ำเสมอ ไม่มีกฎเกณฑ์ตายตัว แต่ควรให้
การพิจารณาชื่อ
พื้นที่ -t/--แท็ก แฟล็กใช้เพื่อเปลี่ยนชื่อรูปภาพ นี่คือตัวอย่างบางส่วน:
แม้ว่าจะไม่ใช่แนวทางปฏิบัติที่ดี แต่ชื่อรูปภาพอาจใช้โดยอำเภอใจได้:
นักเทียบท่า build -t myimage
แนวทางที่ดีกว่าคือการจัดเตรียมที่เก็บ ชื่อ และแท็กที่มีคุณสมบัติครบถ้วนและมีความหมาย
(โดยที่แท็กในบริบทนี้หมายถึงตัวระบุหลังจาก ":") ในตัวอย่างนี้เรา
สร้างอิมเมจ JBoss สำหรับที่เก็บ Fedora และให้เป็นเวอร์ชัน 1.0:
นักเทียบท่า build -t fedora/jboss:1.0
ตัวอย่างต่อไปคือสำหรับที่เก็บผู้ใช้ "whyry" และใช้ Fedora และ JBoss และให้
เป็นเวอร์ชัน 2.1 :
นักเทียบท่า build -t whenry/fedora-jboss:v2.1
หากคุณไม่ได้ระบุแท็กเวอร์ชัน Docker จะกำหนด ล่าสุด:
นักเทียบท่า build -t whenry/fedora-jboss
เมื่อคุณลงรายการรูปภาพ รูปภาพด้านบนจะมีแท็ก ล่าสุด.
คุณสามารถใช้หลายแท็กกับรูปภาพได้ ตัวอย่างเช่น คุณสามารถใช้ ล่าสุด แท็กไปที่
ภาพที่สร้างขึ้นใหม่และเพิ่มแท็กอื่นที่อ้างอิงถึงเวอร์ชันเฉพาะ ตัวอย่างเช่น ถึง
แท็กรูปภาพทั้งเป็น whenry/fedora-jboss:ล่าสุด และ เมื่อ/fedora-jboss:v2.1, ใช้
ต่อไปนี้:
นักเทียบท่า build -t whenry/fedora-jboss:latest -t whenry/fedora-jboss:v2.1
ดังนั้นการเปลี่ยนชื่อภาพจึงเป็นสิ่งที่ไม่พึงปรารถนา แต่ควรพิจารณาอนุสัญญาที่เป็นประโยชน์ด้วย
ที่เหมาะสมกับผู้บริโภคและควรคำนึงถึง Docker community ด้วย
อนุสัญญา.
การก่อสร้าง an ภาพ การใช้ a URL
การดำเนินการนี้จะโคลนที่เก็บ GitHub ที่ระบุจาก URL และใช้เป็นบริบท NS
Dockerfile ที่รูทของที่เก็บใช้เป็น Dockerfile ใช้งานได้ก็ต่อเมื่อ
ที่เก็บ GitHub เป็นที่เก็บเฉพาะ
นักเทียบท่าสร้าง github.com/scollier/purpletest
หมายเหตุ: คุณสามารถตั้งค่าที่เก็บ Git โดยพลการผ่านทาง git: // สคีมา
การก่อสร้าง an ภาพ การใช้ a URL ไปยัง a tarball'ed สิ่งแวดล้อม
การดำเนินการนี้จะส่ง URL เองไปยัง Docker daemon ภูตจะดึง tarball
เก็บถาวร คลายการบีบอัด และใช้เนื้อหาเป็นบริบทของบิลด์ Dockerfile ที่
รากของไฟล์เก็บถาวรและส่วนที่เหลือของไฟล์เก็บถาวรจะถูกใช้เป็นบริบทของบิลด์
หากคุณผ่าน -f PATH/ไฟล์นักเทียบท่า ตัวเลือกเช่นกัน ระบบจะค้นหาไฟล์นั้น
ภายในเนื้อหาของ tarball
นักเทียบท่า build -f dev/Dockerfile https://10.10.10.1/docker/context.tar.gz
หมายเหตุ: รูปแบบการบีบอัดที่รองรับคือ 'xz', 'bzip2', 'gzip' และ 'identity' (ไม่มี
การบีบอัด)
ระบุ ความเหงา เทคโนโลยี for ภาชนะ (--การแยกตัว)
ตัวเลือกนี้มีประโยชน์ในสถานการณ์ที่คุณใช้งานคอนเทนเนอร์ Docker บน Windows
พื้นที่ --ไอโซเลชั่น= ตัวเลือกกำหนดเทคโนโลยีการแยกของคอนเทนเนอร์ บน Linux เท่านั้น
รองรับคือ ผิดนัด ตัวเลือกที่ใช้เนมสเปซ Linux บน Microsoft Windows คุณสามารถ
ระบุค่าเหล่านี้:
· ผิดนัด: ใช้ค่าที่ระบุโดย Docker daemon's --exec-เลือก . หาก ภูต ทำ
ไม่ได้ระบุเทคโนโลยีการแยก Microsoft Windows ใช้ กระบวนการ เป็นค่าเริ่มต้น
มูลค่า
· กระบวนการ: การแยกเนมสเปซเท่านั้น
· ไฮเปอร์โว: การแยกตามพาร์ติชั่นไฮเปอร์ไวเซอร์ Hyper-V
การระบุ --การแยกตัว แฟล็กที่ไม่มีค่าก็เหมือนกับการตั้งค่า
--การแยก = "ค่าเริ่มต้น".
ประวัติ
มีนาคม 2014 เรียบเรียงโดย William Henry (whyry at redhat dot com) ตาม
docker.com แหล่งข้อมูลและงานภายใน มิถุนายน 2014 ปรับปรุงโดย Sven Dowideit
⟨[ป้องกันอีเมล]⟩ มิถุนายน 2015 ปรับปรุงโดย Sally O'Malley ⟨[ป้องกันอีเมล]⟩
ใช้ docker-build ออนไลน์โดยใช้บริการ onworks.net