ไทย

เครื่องมือสำหรับนักพัฒนา · Docker เรียกใช้ตัวแปลงการเขียน Docker

วิธีที่นักเทียบท่าเรียกใช้แฟล็กแมปไปยังคีย์การเขียน: -p, -v, -e, --name และอื่น ๆ

· มันทำงานอย่างไร

docker เขียน นักพัฒนาเวิร์กโฟลว์

ตัวเลือกคำสั่งเรียกใช้ Docker แมปกับพอร์ต วอลุ่ม และคีย์สภาพแวดล้อมใน Compose
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

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

การเรียกใช้นักเทียบท่าที่ล้อมสามบรรทัดใน README — ใช้งานได้ ไม่มีใครสามารถตรวจสอบได้ และทีมต้องการ compose.yaml

การเรียกใช้นักเทียบท่าแบบหลายบรรทัดสามารถเริ่มบริการได้ตั้งแต่วันนี้โดยซ่อนสัญญาการปฏิบัติงานไว้ในเชลล์นามแฝงหรือ README ไฟล์เขียนจะย้ายตัวเลือกเดียวกันไปยังคำจำกัดความของบริการที่ตรวจสอบได้ แต่การแปลงจะต้องคำนึงถึงทุกแฟล็ก แทนที่จะทิ้งการตั้งค่าความปลอดภัยโดยไม่ตั้งใจ ToolAcre แยกวิเคราะห์คำสั่งเป็นข้อความ โดยจะไม่รันอิมเมจ เปิดซ็อกเก็ต Docker หรือปรับใช้คอนเทนเนอร์ ถือว่าเอาต์พุตเป็นการกำหนดค่าแบบร่างที่ยังคงต้องมีผู้ปฏิบัติงานตรวจสอบเส้นทางโฮสต์ ข้อมูลประจำตัว และสมมติฐานของเครือข่าย

รูปร่างของบริการ — รูปภาพ จากนั้นเป็นชุดของคีย์ที่สะท้อนธง ภายใต้บริการ: และชื่อบริการ

เขียน YAML เริ่มต้นภายใต้ services: ตามด้วยชื่อบริการและรูปภาพ: ต่างจากบรรทัดคำสั่งตรงที่คีย์จะจัดกลุ่มค่าที่ซ้ำกัน เช่น พอร์ตและรายการสภาพแวดล้อมเป็นลำดับ ToolAcre ได้รับชื่อบริการจาก --name หรืออิมเมจและสร้างโมเดลก่อนที่จะทำให้เป็นอนุกรม YAML ไฟล์เขียนปัจจุบันไม่จำเป็นต้องมีเวอร์ชันระดับบนสุด: key; เพิ่มหนึ่งรายการเนื่องจากโพสต์ในบล็อกเก่าแสดงให้เห็นว่าจะสร้างคำเตือนที่ล้าสมัยแทนที่จะปรับปรุงความเข้ากันได้

ธงทั่วไป — -p ไปยังพอร์ต, -v ไปยังโวลุ่ม, -e ไปยังสภาพแวดล้อม, --name ไปยังชื่อคอนเทนเนอร์, --restart เพื่อรีสตาร์ท, --network ไปยังเครือข่าย

การแมปทั่วไปทำให้สามารถจดจำไฟล์ได้: -p 8080:80 กลายเป็นพอร์ต: ด้วยการแมปที่ยกมา -v host:container กลายเป็นรายการวอลุ่ม -e KEY=value เข้าสู่สภาพแวดล้อม --name กลายเป็นรายการคอนเทนเนอร์ --restart รีสตาร์ทและ --network ต้องการบริบทเครือข่าย การอ้างถึงการแมปพอร์ตมีความสำคัญเนื่องจาก YAML ควรถือเป็นสตริง ไม่ใช่ตีความเครื่องหมายวรรคตอนเป็นประเภทอื่น วอลลุมที่มีชื่ออาจต้องมีการประกาศวอลลุมระดับบนสุดของตัวเอง ควรตรวจสอบการเมานต์การผูกโฮสต์กับเครื่องที่ Compose จะทำงาน

ธงที่พบไม่บ่อย — --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label, --add-host และคีย์ของพวกเขา

แฟล็กเช่น --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label และ --add-host มีแนวคิดการบริการที่สอดคล้องกัน แต่ความหมายอาจขึ้นอยู่กับรันไทม์และโฮสต์ --security-opt ที่ไม่ได้รับการสนับสนุนจะต้องไม่ถูกประดิษฐ์ขึ้นเป็นคีย์ที่ดูน่าเชื่อถือหรือละทิ้งโดยมองไม่เห็น ToolAcre แสดงรายการคำเตือนการตั้งชื่อตัวเลือกที่ไม่รองรับ เพื่อให้ผู้ตรวจสอบสามารถทำแผนที่ให้เสร็จด้วยตนเอง หรือตัดสินใจว่า Compose ไม่ใช่สิ่งทดแทนที่ถูกต้อง การมีอยู่ของคีย์ YAML ไม่ได้พิสูจน์ว่าบริการเริ่มต้นด้วยสิทธิพิเศษเดียวกัน

อาร์กิวเมนต์ตำแหน่ง — รูปภาพกลายเป็น image: และอะไรก็ตามหลังจากนั้นกลายเป็นคำสั่ง:

ชื่อรูปภาพเป็นอาร์กิวเมนต์ตำแหน่งหลังจากการรันและตัวเลือกต่างๆ อาร์กิวเมนต์หลังจากอิมเมจกลายเป็นคำสั่งบริการ ไม่ใช่แฟล็กเรียกใช้ Docker อีกต่อไป การย้ายโทเค็นข้ามขอบเขตนั้นจะเปลี่ยนสิ่งที่โปรแกรมได้รับ เครื่องหมายคำพูดและแบ็กสแลชของเชลล์ยังมีความสำคัญเมื่อแยกตัวอย่าง README หนึ่งตัวอย่างออกเป็นโทเค็น parser ของ ToolAcre ไม่ใช่ตัวแปลเชลล์ ดังนั้นตัวแปร เช่น $HOME ควรได้รับการตรวจสอบในบริบท แทนที่จะสมมติว่าตัวแปรนั้นขยายออกไปเหมือนในเชลล์เชิงโต้ตอบดั้งเดิม

ตัวอย่างการทำงาน: การแปลงการเรียกใช้ Docker ของ Postgres — คำสั่งแบบเต็ม คำจำกัดความของบริการที่เป็นผลลัพธ์ และการเปรียบเทียบทีละบรรทัด

พิจารณาตัวอย่างคำสั่ง docker run -d --name demo-db -p 5432:5432 -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=demo-only --restart เว้นแต่จะหยุด postgres:16 ToolAcre ปล่อย services.demo-db ด้วยรูปภาพ postgres:16, container_name demo-db, 5432:5432 ที่ยกมา, วอลุ่ม pgdata, รายการสภาพแวดล้อม, รีสตาร์ท: ยกเว้นว่าหยุด และการประกาศโวลุ่ม pgdata ระดับบนสุด เตือนว่า -d เป็นตัวเลือกบรรทัดคำสั่ง นักเทียบท่าเขียน -d จัดการมัน “สาธิตเท่านั้น” เป็นตัวยึดตำแหน่งการสอนที่ไม่ปลอดภัยโดยจงใจ อย่าส่งรหัสผ่านฐานข้อมูลจริงลงใน YAML ที่สร้างขึ้นนี้

สิ่งนี้ไม่ครอบคลุม — แฟล็กที่ไม่มีบริการเทียบเท่า (-d, --rm) และสิ่งต่าง ๆ ที่ไม่อยู่ในคำสั่งเลย เช่น บริบทการสร้าง

ไม่ใช่ทุกรันแฟล็กจะมีคุณสมบัติการบริการที่คงทน -d ได้รับการจัดการโดยคำสั่งเขียนที่คุณเรียกใช้ --rm เป็นของการดำเนินการเขียนครั้งเดียวแทนที่จะเป็นบริการระยะยาว บริบทการสร้าง การจัดเก็บความลับ กลยุทธ์ด้านสุขภาพ หรือการพึ่งพาหลายบริการที่ขาดไปจากคำสั่งดั้งเดิมไม่สามารถอนุมานได้ เครื่องมือรายงานแฟล็กที่ไม่สนับสนุนแทนที่จะแสร้งทำเป็นว่าเอาท์พุตเป็นแผนการปรับใช้ที่สมบูรณ์ อ่านข้อมูลอ้างอิงบริการ Docker Compose ก่อนที่จะปรับใช้คอนเทนเนอร์ที่ได้รับสิทธิพิเศษหรือมีความละเอียดอ่อนต่อเครือข่าย

ประเด็นสำคัญ: Compose มีการกำหนดค่าเดียวกันและมีโครงสร้าง และตัวแปลงจะสร้างคำจำกัดความของบริการจากคำสั่งที่คุณวาง

การเขียนเป็นการกำหนดค่าเดียวกัน มีโครงสร้างสำหรับการตรวจทานและความสามารถในการทำซ้ำ Docker run to Docker compose converter ให้คำจำกัดความบริการผู้สมัครในเบราว์เซอร์ของคุณ และเก็บคำสั่งที่วางไว้ในเครื่อง มันไม่ได้รัน Docker เปรียบเทียบการตั้งค่าสถานะแหล่งที่มาทั้งหมดกับคีย์ YAML ระบุคำเตือนและลบความลับออกจากบล็อกสภาพแวดล้อมธรรมดาก่อนที่จะนำผลลัพธ์ไปใช้กับโฮสต์จริง