Podman (POD MANager) เป็นเครื่องมือสำหรับจัดการคอนเทนเนอร์และรูปภาพ วอลุ่มที่ติดตั้งในคอนเทนเนอร์เหล่านั้น และพ็อดที่สร้างจากกลุ่มคอนเทนเนอร์ Podman ใช้งานคอนเทนเนอร์บน Linux แต่ยังสามารถใช้ได้บนระบบ Mac และ Windows โดยใช้เครื่องเสมือนที่จัดการโดย Podman Podman ใช้ libpod ซึ่งเป็นไลบรารีสำหรับการจัดการวงจรการใช้งานคอนเทนเนอร์ที่มีอยู่ในพื้นที่เก็บข้อมูลนี้เช่นกัน ไลบรารี libpod มี API สำหรับจัดการคอนเทนเนอร์ พ็อด อิมเมจคอนเทนเนอร์ และวอลุ่ม
Podman เผยแพร่เวอร์ชันหลักหรือเวอร์ชันรองใหม่ 4 ครั้งต่อปีในช่วงสัปดาห์ที่สองของเดือนกุมภาพันธ์ พฤษภาคม สิงหาคม และพฤศจิกายน การออกแพทช์จะบ่อยกว่าและอาจเกิดขึ้นได้ตลอดเวลาเพื่อแก้ไขข้อบกพร่องให้กับผู้ใช้ การเผยแพร่ทั้งหมดได้รับการลงนามจาก PGP กุญแจสาธารณะของสมาชิกของทีมที่ได้รับอนุมัติให้เผยแพร่อยู่ที่นี่
บูรณาการอย่างต่อเนื่อง:
โกด็อก:
ดาวน์โหลด
ในระดับสูง ขอบเขตของ Podman และ libpod เป็นดังนี้:
รองรับรูปแบบคอนเทนเนอร์อิมเมจหลายรูปแบบ รวมถึงอิมเมจ OCI และ Docker
การจัดการอิมเมจเหล่านั้นโดยสมบูรณ์ รวมถึงการดึงจากแหล่งต่างๆ (รวมถึงความน่าเชื่อถือและการตรวจสอบ) การสร้าง (สร้างผ่าน Containerfile หรือ Dockerfile หรือคอมมิตจากคอนเทนเนอร์) และการพุชไปยังการลงทะเบียนและแบ็กเอนด์พื้นที่เก็บข้อมูลอื่นๆ
การจัดการวงจรชีวิตของคอนเทนเนอร์โดยสมบูรณ์ รวมถึงการสร้าง (ทั้งจากอิมเมจและจากระบบไฟล์รูทที่กระจาย) การรัน การตรวจสอบและการกู้คืน (ผ่าน CRIU) และการลบออก
การจัดการเครือข่ายคอนเทนเนอร์เต็มรูปแบบโดยใช้ Netavark
รองรับพ็อด กลุ่มคอนเทนเนอร์ที่ใช้ทรัพยากรร่วมกันและได้รับการจัดการร่วมกัน
รองรับการรันคอนเทนเนอร์และพ็อดโดยไม่ต้องรูทหรือสิทธิ์ระดับสูงอื่นๆ
การแยกทรัพยากรของคอนเทนเนอร์และพ็อด
รองรับอินเทอร์เฟซ CLI ที่เข้ากันได้กับ Docker ซึ่งสามารถเรียกใช้คอนเทนเนอร์ภายในเครื่องและบนระบบระยะไกลได้
ไม่มีผู้จัดการ daemon เพื่อความปลอดภัยที่ดีขึ้นและลดการใช้ทรัพยากรเมื่อไม่ได้ใช้งาน
รองรับ REST API ที่มีทั้งอินเทอร์เฟซที่เข้ากันได้กับ Docker และอินเทอร์เฟซที่ได้รับการปรับปรุงซึ่งเผยให้เห็นฟังก์ชันการทำงานของ Podman ขั้นสูง
รองรับการทำงานบน Windows และ Mac ผ่านเครื่องเสมือนที่ทำงานโดย podman machine
การปรับปรุงเพิ่มเติมใน podman machine
เพื่อรองรับ Podman Desktop และกรณีการใช้งานของนักพัฒนาอื่นๆ ได้ดียิ่งขึ้น
รองรับ conmon-rs ซึ่งจะปรับปรุงการบันทึกคอนเทนเนอร์
รองรับ BuildKit API
การปรับปรุงประสิทธิภาพและความเสถียร
การลดขนาดของไบนารี Podman
หากคุณคิดว่าคุณได้ระบุปัญหาด้านความปลอดภัยในโครงการแล้ว โปรด อย่า รายงานปัญหาต่อสาธารณะผ่านทางเครื่องมือติดตามปัญหา GitHub รายชื่ออีเมล หรือ IRC ให้ส่งอีเมลพร้อมรายละเอียดมากที่สุดเท่าที่เป็นไปได้ไปที่ [email protected]
นี่คือรายชื่ออีเมลส่วนตัวสำหรับผู้ดูแลหลัก
หากต้องการสอบถามและพูดคุยทั่วไปโปรดใช้ช่องทางของ Podman
สำหรับการหารือเกี่ยวกับปัญหา/ข้อบกพร่องและฟีเจอร์ คุณสามารถใช้ปัญหา GitHub และระบบติดตาม PRs
นอกจากนี้ยังมีรายชื่อผู้รับจดหมายที่ lists.podman.io
คุณสามารถสมัครสมาชิกได้โดยส่งข้อความไปที่ [email protected]
โดยมีหัวข้อว่า subscribe
Podman สามารถรันได้อย่างง่ายดายในฐานะผู้ใช้ทั่วไป โดยไม่ต้องใช้ setuid binary เมื่อรันโดยไม่ต้องรูท คอนเทนเนอร์ Podman จะใช้เนมสเปซของผู้ใช้เพื่อตั้งค่ารูทในคอนเทนเนอร์ให้กับผู้ใช้ที่กำลังรัน Podman Rootless Podman รันคอนเทนเนอร์ที่ถูกล็อคโดยไม่มีสิทธิ์ที่ผู้ใช้เรียกใช้คอนเทนเนอร์ไม่มี ข้อจำกัดบางประการเหล่านี้สามารถยกเลิกได้ (ผ่าน --privileged
เป็นต้น) แต่คอนเทนเนอร์ที่ไม่มีรูทจะไม่มีสิทธิ์มากกว่าผู้ใช้ที่เปิดใช้งาน หากคุณเรียกใช้ Podman ในฐานะผู้ใช้และต่อเชื่อมใน /etc/passwd
จากโฮสต์ คุณจะยังคงไม่สามารถเปลี่ยนแปลงได้ เนื่องจากผู้ใช้ของคุณไม่ได้รับอนุญาตให้ดำเนินการดังกล่าว
ฟังก์ชัน Podman ปกติเกือบทั้งหมดใช้งานได้ แม้ว่าจะมีข้อบกพร่องอยู่บ้างก็ตาม Podman รุ่นล่าสุดควรจะสามารถรันโดยไม่ต้องรูทโดยไม่ต้องมีการกำหนดค่าเพิ่มเติม แม้ว่าระบบปฏิบัติการของคุณอาจต้องการการกำหนดค่าเพิ่มเติมตามรายละเอียดในคู่มือการติดตั้งก็ตาม
ผู้ดูแลระบบจำเป็นต้องมีการกำหนดค่าเล็กน้อยก่อนจึงจะสามารถใช้ Podman แบบไม่รูทได้ การตั้งค่าที่จำเป็นได้รับการบันทึกไว้ที่นี่
Podman Desktop จัดเตรียมสภาพแวดล้อมการพัฒนาในเครื่องสำหรับ Podman และ Kubernetes บนเครื่อง Linux, Windows และ Mac เป็นส่วนหน้า UI เดสก์ท็อปที่มีคุณสมบัติครบถ้วนสำหรับ Podman ซึ่งใช้แบ็กเอนด์ของ podman machine
บนระบบปฏิบัติการที่ไม่ใช่ Linux เพื่อเรียกใช้คอนเทนเนอร์ รองรับการจัดการวงจรชีวิตของคอนเทนเนอร์เต็มรูปแบบ (การสร้าง การดึง และการพุชอิมเมจ การสร้างและการจัดการคอนเทนเนอร์ การสร้างและการจัดการพ็อด และการทำงานกับ Kubernetes YAML) โครงการพัฒนาบน GitHub และยินดีต้อนรับการมีส่วนร่วม
การลงนามแบบพิเศษและการพุชรูปภาพไปยังแบ็กเอนด์ที่จัดเก็บข้อมูลต่างๆ ดู Skopeo สำหรับงานเหล่านั้น
รองรับอินเทอร์เฟซ Kubernetes CRI สำหรับการจัดการคอนเทนเนอร์ ภูต CRI-O เชี่ยวชาญด้านนั้น
Podman ใช้โครงการ OCI และห้องสมุดสายพันธุ์ที่ดีที่สุดสำหรับด้านต่างๆ:
รันไทม์: เราใช้เครื่องมือรันไทม์ OCI เพื่อสร้างการกำหนดค่ารันไทม์ OCI ที่สามารถใช้กับรันไทม์ที่สอดคล้องกับ OCI เช่น crun และ runc
รูปภาพ: การจัดการรูปภาพใช้คอนเทนเนอร์/ไลบรารีรูปภาพ
พื้นที่จัดเก็บ: พื้นที่จัดเก็บคอนเทนเนอร์และรูปภาพได้รับการจัดการโดยคอนเทนเนอร์/พื้นที่จัดเก็บ
ระบบเครือข่าย: การสนับสนุนระบบเครือข่ายผ่านการใช้ Netavark และ Aardvark เครือข่ายแบบไม่มีรูทได้รับการจัดการผ่านพาสต้าหรือ slirp4netns
งานสร้าง: งานสร้างได้รับการสนับสนุนผ่าน Buildah
Conmon: Conmon เป็นเครื่องมือสำหรับตรวจสอบรันไทม์ OCI ซึ่งใช้โดยทั้ง Podman และ CRI-O
Seccomp: นโยบาย Seccomp แบบครบวงจรสำหรับ Podman, Buildah และ CRI-O
สำหรับบล็อก ประกาศเปิดตัว และอื่นๆ โปรดตรวจสอบที่เว็บไซต์ podman.io!
หมายเหตุการติดตั้ง ข้อมูลเกี่ยวกับวิธีการติดตั้ง Podman ในสภาพแวดล้อมของคุณ
ข้อมูล สนับสนุน OCI Hooks เกี่ยวกับวิธีที่ Podman กำหนดค่า OCI Hooks ให้ทำงานเมื่อเปิดใช้คอนเทนเนอร์
เอกสารประกอบ Podman API บน Podman REST API
คำสั่ง Podman รายการคำสั่ง Podman พร้อมลิงก์ไปยังหน้าคู่มือและในหลาย ๆ กรณีวิดีโอจะแสดงคำสั่งที่ใช้งานอยู่
ข้อมูล รูปภาพคอนเทนเนอร์ Podman บนรูปภาพคอนเทนเนอร์ Podman ที่พบใน quay.io
คู่มือการแก้ไขปัญหา Podman รายการปัญหาทั่วไปและแนวทางแก้ไขสำหรับ Podman
การถ่ายโอนการใช้งาน Podman ข้อมูลที่เป็นประโยชน์สำหรับการดำเนินการและการถ่ายโอน dev เนื่องจากเกี่ยวข้องกับโครงสร้างพื้นฐานที่ใช้ Podman หน้านี้ประกอบด้วยตารางที่แสดงคำสั่ง Docker และคำสั่งที่เทียบเท่ากับ Podman
บทช่วยสอน บท ช่วยสอนเกี่ยวกับการใช้ Podman
ไคลเอนต์ระยะไกล ข้อมูลสั้น ๆ เกี่ยวกับการใช้ไคลเอนต์ระยะไกล Podman
การตั้งค่าพื้นฐานและการใช้งาน Podman ในสภาพแวดล้อมแบบ Rootless บทช่วยสอนที่แสดงการตั้งค่าและการกำหนดค่าที่จำเป็นในการรัน Rootless Podman
บันทึกประจำรุ่น บันทึกประจำรุ่นสำหรับ Podman เวอร์ชันล่าสุด
ข้อมูลเกี่ยวกับการ มี ส่วนร่วมในโครงการนี้
Buildah และ Podman เป็นโปรเจ็กต์โอเพ่นซอร์สเสริมสองโปรเจ็กต์ที่มีอยู่ในแพลตฟอร์ม Linux ส่วนใหญ่ และทั้งสองโปรเจ็กต์อยู่ที่ GitHub.com โดยมี Buildah ที่นี่และ Podman ที่นี่ ทั้ง Buildah และ Podman เป็นเครื่องมือบรรทัดคำสั่งที่ทำงานบนอิมเมจและคอนเทนเนอร์ Open Container Initiative (OCI) ทั้งสองโครงการมีความแตกต่างในด้านความเชี่ยวชาญของตน
Buildah เชี่ยวชาญในการสร้างอิมเมจ OCI คำสั่งของ Buildah จะจำลองคำสั่งทั้งหมดที่พบใน Dockerfile ซึ่งช่วยให้สามารถสร้างอิมเมจที่มีและไม่มี Dockerfiles โดยที่ไม่ต้องการสิทธิ์รูทใดๆ เป้าหมายสูงสุดของ Buildah คือการจัดหาอินเทอร์เฟซ coreutils ระดับล่างเพื่อสร้างอิมเมจ ความยืดหยุ่นในการสร้างอิมเมจโดยไม่ต้องใช้ Dockerfiles ทำให้สามารถรวมภาษาสคริปต์อื่นๆ เข้ากับกระบวนการสร้างได้ Buildah ดำเนินตามโมเดล fork-exec ธรรมดา และไม่ได้ทำงานเป็น daemon แต่ใช้ API ที่ครอบคลุมใน golang ซึ่งสามารถขายให้กับเครื่องมืออื่นๆ ได้
Podman เชี่ยวชาญในคำสั่งและฟังก์ชันทั้งหมดที่ช่วยให้คุณรักษาและแก้ไขอิมเมจ OCI เช่น การดึงและการแท็ก นอกจากนี้ยังช่วยให้คุณสร้าง เรียกใช้ และบำรุงรักษาคอนเทนเนอร์ที่สร้างจากอิมเมจเหล่านั้นได้ สำหรับการสร้างอิมเมจคอนเทนเนอร์ผ่าน Dockerfiles นั้น Podman ใช้ golang API ของ Buildah และสามารถติดตั้งแยกจาก Buildah ได้
ความแตกต่างที่สำคัญระหว่าง Podman และ Buildah คือแนวคิดเกี่ยวกับคอนเทนเนอร์ Podman อนุญาตให้ผู้ใช้สร้าง "คอนเทนเนอร์แบบดั้งเดิม" โดยที่คอนเทนเนอร์เหล่านี้มีจุดประสงค์เพื่อให้มีอายุยืนยาว ในขณะที่คอนเทนเนอร์ Buildah ถูกสร้างขึ้นเพื่อให้สามารถเพิ่มเนื้อหากลับไปยังอิมเมจคอนเทนเนอร์ได้ วิธีง่ายๆ ในการคิดคือคำสั่ง buildah run
จะจำลองคำสั่ง RUN ใน Dockerfile ในขณะที่คำสั่ง podman run
จะจำลองคำสั่ง docker run
ในฟังก์ชันการทำงาน ด้วยเหตุนี้และความแตกต่างในการจัดเก็บข้อมูล คุณจึงไม่สามารถมองเห็นคอนเทนเนอร์ Podman จากภายใน Buildah หรือในทางกลับกันได้
กล่าวโดยย่อคือ Buildah เป็นวิธีที่มีประสิทธิภาพในการสร้างอิมเมจ OCI ในขณะที่ Podman ช่วยให้คุณจัดการและบำรุงรักษาอิมเมจและคอนเทนเนอร์เหล่านั้นในสภาพแวดล้อมการใช้งานจริงโดยใช้คำสั่ง cli คอนเทนเนอร์ที่คุ้นเคย สำหรับรายละเอียดเพิ่มเติม โปรดดูคู่มือเครื่องมือคอนเทนเนอร์
$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob a6b3126f3807 done Copying config 25c667d086 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - / (O) (O) ~~~| -=(,Y,)=- | .---. /` |~~ ~/ o o ~~~~.----. ~~ | =(X)= |~ / (O (O) ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io