-
Bocker
- Bocker คือเวอร์ชันอย่างง่ายของ Docker ที่เขียนด้วย bash ราว 100 บรรทัด
-
Prerequisites
- แพ็กเกจที่จำเป็นสำหรับการรัน Bocker:
- btrfs-progs
- curl
- iproute2
- iptables
- libcgroup-tools
- util-linux >= 2.25.2
- coreutils >= 7.5
- ข้อกำหนดการตั้งค่าระบบ:
- เมานต์ระบบไฟล์ btrfs ที่
/var/bocker
- มี network bridge ชื่อ
bridge0 และ IP 10.0.0.1/24
- เปิดใช้งาน IP forwarding ที่
/proc/sys/net/ipv4/ip_forward
- ไฟร์วอลล์สำหรับ route ทราฟฟิกจาก
bridge0 ไปยัง physical interface
- สามารถใช้ Vagrantfile เพื่อสร้างสภาพแวดล้อมที่จำเป็นได้
- Bocker รันด้วยสิทธิ์ root และมีการเปลี่ยนแปลง network interface, routing table และกฎไฟร์วอลล์ จึงแนะนำให้รันบน virtual machine
-
Example Usage
- ตัวอย่างการใช้งาน Bocker:
- ใช้คำสั่ง
bocker pull centos 7 เพื่อดึงอิมเมจ CentOS 7
- ตรวจสอบรายการอิมเมจได้ด้วย
bocker images
- รันคำสั่งในคอนเทนเนอร์ได้ด้วย
bocker run img_42150 cat /etc/centos-release
- ตรวจสอบคอนเทนเนอร์ที่กำลังรันได้ด้วย
bocker ps
- ดูล็อกของคอนเทนเนอร์ได้ด้วย
bocker logs ps_42045
- ลบคอนเทนเนอร์ได้ด้วย
bocker rm ps_42045
- ติดตั้งแพ็กเกจได้ด้วย
bocker run img_42150 yum install -y wget
- คอมมิตการเปลี่ยนแปลงของคอนเทนเนอร์ได้ด้วย
bocker commit ps_42018 img_42150
- สามารถตั้งค่าจำกัด CPU และหน่วยความจำได้
-
Functionality: Currently Implemented
- ฟังก์ชันที่มีอยู่ในปัจจุบัน:
docker build แบบจำกัด
docker pull
docker images
docker ps
docker run
docker exec
docker logs
docker commit
docker rm / docker rmi
- ระบบเครือข่าย
- รองรับ quota / CGroups
-
Functionality: Not Yet Implemented
- ฟังก์ชันที่ยังไม่ถูกพัฒนา:
- data volume container
- data volume
- port forwarding
-
License
- โปรแกรมนี้เป็นซอฟต์แวร์เสรีที่เผยแพร่ภายใต้ GNU General Public License
- ไม่มีการรับประกันด้านความเป็นเชิงพาณิชย์หรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เคยสร้างโปรเจกต์ชื่อ Bag โดยใช้ proot ซึ่งไม่ใช่ทางเลือกแทน Docker และไม่เกี่ยวข้องกับ cgroups อีกทั้ง CLI ก็แตกต่างจาก Docker ด้วย พวกเขาพัฒนาโซลูชัน proxy chain เพื่อหลบเลี่ยงการเซ็นเซอร์อินเทอร์เน็ต และต้องการให้มันรันบน termux ตอนนั้น termux ยังไม่มี jdk/jre จึงสามารถใช้ jdk ได้โดยสร้างสภาพแวดล้อม archlinux ผ่าน proot สภาพแวดล้อมนี้เหมาะกับงานหลากหลาย และทำให้สามารถสร้างสภาพแวดล้อมและรันคำสั่งแบบอัตโนมัติได้ผ่านสคริปต์ชื่อ bag.sh โดยสคริปต์นี้มี roadmap ที่ไม่ได้อัปเดตมา 5 ปีแล้ว
ชอบ bash script แบบมินิมอล และเมื่อ 10 ปีก่อนในแฮกกาธอนเคยทำ intra-cluster load balancer ด้วย bash 40 บรรทัดเพื่อโปรโมต distributed infrastructure ที่ใช้ Docker, Mesos ฯลฯ นอกจากนี้ยังเคยพัฒนาเครื่องมือส่งย้ายจาก colo ไป cloud แต่ตอนนี้ทำหายไปแล้ว สามารถหาชุดสคริปต์ที่มีประโยชน์ได้จาก Shell Fu เป็นต้น
ชอบเวลาที่ใน repository มีข้อความอย่าง "ยังไม่ได้ทำ", "สิ่งที่ต้องทำ", "กำลังทำอยู่" และ commit ล่าสุดก็เป็นเมื่อหลายปีก่อน เพราะมันให้ความโล่งใจว่าเราไม่จำเป็นต้องย้อนกลับไปดูรายการสิ่งที่ต้องทำที่ตัวเองพลาดไว้ในโค้ดอีก
น่าแปลกที่ไม่ได้พูดถึง lazydocker ในฐานะทางเลือกที่ยอดเยี่ยมของ Docker Desktop มันเป็น terminal UI ที่ฟีเจอร์ค่อนข้างครบและรันผ่าน ssh ได้
BastilleBSD เป็นเครื่องมือสำหรับจัดการ jails บน BSD และใช้โครงสร้างหลายอย่างที่พบได้ใน Docker ผู้แสดงความเห็นชอบมันมากกว่าซอฟต์แวร์จัดการ jail ตัวอื่นบน BSD เพราะมี dependency น้อยกว่า
ไม่ว่าจะใช้งานได้จริงแค่ไหน แต่ในการนำไปใช้จริงมีเรื่องให้เรียนรู้มากมาย
ลิงก์หน้าแรกของ GitHub ใช้งานไม่ได้ ดังนั้นควรเอา "www." ออก
การที่สามารถ reimplement Docker แบบง่าย ๆ ได้ คือปัญหาใหญ่ที่สุดที่บริษัท Docker ต้องเผชิญ คุณค่าที่แท้จริงของ Docker ไม่ได้มีแค่ Docker Hub แต่รวมถึงประสบการณ์แบบบูรณาการที่ Docker บน Windows และ Mac มอบให้ด้วย ซึ่งมอบประสบการณ์ที่ดีกว่าการตั้งค่า VirtualBox และ Vagrant ด้วยตนเองมาก
สงสัยว่า Docker เริ่มต้นมาได้อย่างไร
สงสัยว่าทำไม Docker ยังไม่ถูกรวมอยู่ใน repository ของ ubuntu/debian ทั้งที่มันน่าจะเป็นกำไรสุทธิที่ทำได้ง่ายมาก