บทช่วยสอนนักเทียบท่าสำหรับผู้เริ่มต้น: พื้นฐาน, Archiเทคเจอร์, คอนเทนเนอร์
Docker คืออะไร?
นักเทียบท่า เป็นแพลตฟอร์มการพัฒนาซอฟต์แวร์สำหรับการจำลองเสมือนที่มีหลายรายการ Operaระบบ Ting ทำงานบนโฮสต์เดียวกัน ช่วยแยกโครงสร้างพื้นฐานและแอปพลิเคชันเพื่อส่งมอบซอฟต์แวร์ได้อย่างรวดเร็ว ต่างจาก Hypervisors ซึ่งใช้สำหรับสร้าง VM (เครื่องเสมือน) การจำลองเสมือนใน Docker จะดำเนินการในระดับระบบหรือที่เรียกว่าคอนเทนเนอร์ Docker
ดังที่คุณเห็นความแตกต่างในภาพด้านล่าง คอนเทนเนอร์ Docker ทำงานบนโฮสต์ Operaระบบการทำงาน สิ่งนี้ช่วยให้คุณปรับปรุงประสิทธิภาพและความปลอดภัย ยิ่งไปกว่านั้น เราสามารถรันคอนเทนเนอร์บนโครงสร้างพื้นฐานเดียวกันได้มากกว่าที่เราจะรันเครื่องเสมือนได้ เนื่องจากคอนเทนเนอร์ใช้ทรัพยากรน้อยกว่า

ต่างจาก VM ที่สามารถสื่อสารกับฮาร์ดแวร์ของโฮสต์ได้ (เช่น อะแดปเตอร์อีเทอร์เน็ตเพื่อสร้างอะแดปเตอร์เสมือนเพิ่มเติม) คอนเทนเนอร์นักเทียบท่าทำงานในสภาพแวดล้อมที่แยกส่วนที่ด้านบนของระบบปฏิบัติการของโฮสต์ แม้ว่าโฮสต์ของคุณจะทำงาน Windows OS คุณสามารถให้อิมเมจ Linux ทำงานในคอนเทนเนอร์ได้ด้วยความช่วยเหลือ Hyper-Vซึ่งจะสร้าง VM ขนาดเล็กโดยอัตโนมัติเพื่อจำลองอิมเมจพื้นฐานของระบบ ในกรณีนี้ ลินุกซ์.
ทำไมต้องใช้นักเทียบท่า?
- Docker คือซอฟต์แวร์คอมพิวเตอร์ที่ใช้สำหรับ Virtualization เพื่อให้มีหลายตัว Operaระบบการแต่งแต้ม ทำงานบนโฮสต์เดียวกัน
- Docker เป็นแอปพลิเคชันประเภทไคลเอนต์-เซิร์ฟเวอร์ ซึ่งหมายความว่าเรามีไคลเอนต์ที่ส่งต่อไปยังเซิร์ฟเวอร์
- อิมเมจ Docker คือ “ซอร์สโค้ด” สำหรับคอนเทนเนอร์ของเรา เราใช้มันเพื่อสร้าง
- Dockerfile มีการลงทะเบียนสองประเภท 1.) การลงทะเบียนสาธารณะและ 2) การลงทะเบียนส่วนตัว
- คอนเทนเนอร์คือหน่วยองค์กรของวอลุ่ม Docker พูดง่ายๆ ก็คือ รูปภาพคือเทมเพลต และคอนเทนเนอร์คือสำเนาของเทมเพลตนั้น คุณสามารถมีหลายคอนเทนเนอร์ (สำเนา) ของรูปภาพเดียวกันได้
นักเทียบท่า Archiเทคเจอร์
ในบทช่วยสอนเกี่ยวกับคอนเทนเนอร์ Docker นี้ เราจะมาพูดถึงส่วนประกอบหลักของ Docker ใน Docker กัน Archiเทคเจอร์:
Docker Engine
Docker เป็นแอปพลิเคชันประเภทไคลเอนต์-เซิร์ฟเวอร์ ซึ่งหมายความว่าเรามีไคลเอนต์ที่ส่งต่อไปยังเซิร์ฟเวอร์ ดังนั้น Docker daemon จึงเรียกว่า: dockerd คือเอ็นจิ้น Docker ซึ่งแสดงถึงเซิร์ฟเวอร์ Docker daemon และไคลเอนต์สามารถทำงานบนโฮสต์เดียวกันหรือโฮสต์ระยะไกลได้ และพวกมันสื่อสารผ่านไบนารีของไคลเอนต์บรรทัดคำสั่งตลอดจนแบบเต็ม RESTful API เพื่อโต้ตอบกับภูต: dockerd
ภาพนักเทียบท่า
อิมเมจ Docker คือ “ซอร์สโค้ด” สำหรับคอนเทนเนอร์ของเรา เราใช้มันเพื่อสร้างตู้คอนเทนเนอร์ สามารถติดตั้งซอฟต์แวร์ไว้ล่วงหน้าได้ซึ่งจะช่วยเพิ่มความเร็วในการปรับใช้ สิ่งเหล่านี้สามารถพกพาได้ และเราสามารถใช้รูปภาพที่มีอยู่หรือสร้างขึ้นเองได้
ทะเบียนนักเทียบท่า
Docker เก็บอิมเมจที่เราสร้างไว้ในรีจิสตรี มีทะเบียนภาครัฐและเอกชน บริษัท Docker มีการลงทะเบียนสาธารณะที่เรียกว่า ฮับนักเทียบท่าซึ่งคุณสามารถจัดเก็บภาพแบบส่วนตัวได้ Docker hub มีรูปภาพนับล้านภาพ ซึ่งคุณสามารถเริ่มใช้งานได้ทันที
คอนเทนเนอร์นักเทียบท่า
คอนเทนเนอร์คือหน่วยองค์กรและเป็นหนึ่งในแนวคิดพื้นฐานของ Docker เมื่อเราสร้างอิมเมจและเริ่มรันมัน เรากำลังทำงานในคอนเทนเนอร์ การเปรียบเทียบคอนเทนเนอร์ถูกใช้เนื่องจากการพกพาของซอฟต์แวร์ที่เราใช้งานในคอนเทนเนอร์ของเรา เราสามารถเคลื่อนย้ายมัน หรืออีกนัยหนึ่งคือ “จัดส่ง” ซอฟต์แวร์ ปรับเปลี่ยน จัดการ สร้าง หรือกำจัดมัน ทำลายมัน เช่นเดียวกับที่เรือบรรทุกสินค้าสามารถทำได้ด้วยตู้คอนเทนเนอร์จริง
พูดง่ายๆ ก็คือ รูปภาพคือเทมเพลต และคอนเทนเนอร์คือสำเนาของเทมเพลตนั้น คุณสามารถมีหลายคอนเทนเนอร์ (สำเนา) ของรูปภาพเดียวกันได้
ด้านล่างนี้เรามีภาพที่แสดงถึงปฏิสัมพันธ์ระหว่างส่วนประกอบต่างๆ และวิธีการทำงานของเทคโนโลยีคอนเทนเนอร์ Docker ได้อย่างสมบูรณ์แบบ
เรามีคำสั่ง Docker หลายคำสั่ง เช่น Docker pull, Docker run.. เราจะมาพูดเพิ่มเติมเกี่ยวกับคำสั่งนั้นในภายหลัง
วิธีการติดตั้ง Docker บน Linux/Ubuntu
ด้านล่างนี้เป็นกระบวนการติดตั้ง Docker ทีละขั้นตอนบน Linux/Ubuntu:
ขั้นตอนที่ 1) ในการติดตั้ง Docker เราจำเป็นต้องใช้แพ็คเกจ DEB ของทีม Docker
เพื่อสิ่งนั้น จำเป็นต้องมีข้อกำหนดเบื้องต้นบางประการ Ubuntu จำเป็นต้องมีแพ็คเกจ
ใช้คำสั่งด้านล่างเพื่อติดตั้ง Ubuntu แพคเกจ
$ sudo apt-get install \ apt-transport-https \ ca-certificates curl \ software-properties-common
*ไม่จำเป็นต้องใช้เครื่องหมาย “\” แต่ต้องขึ้นบรรทัดใหม่ หากต้องการให้เขียนคำสั่งโดยไม่ต้องใช้ “\” ในบรรทัดเดียวเท่านั้น
ขั้นตอน 2) เพิ่มคีย์ Docker GPG อย่างเป็นทางการด้วยลายนิ้วมือ
ใช้คำสั่ง Docker ด้านล่างเพื่อป้อนคีย์ GPG
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
ขั้นตอน 3) จากนั้นเพิ่มที่เก็บ Docker APT
ใช้คำสั่ง Docker ด้านล่างเพื่อเพิ่มพื้นที่เก็บข้อมูล
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
คุณอาจได้รับแจ้งให้ยืนยันว่าคุณต้องการเพิ่มพื้นที่เก็บข้อมูลและเพิ่มคีย์ GPG ไปยังโฮสต์ของคุณโดยอัตโนมัติ
คำสั่ง lsb_release ควรเติมข้อมูล Ubuntu เวอร์ชันการเผยแพร่ของโฮสต์ของคุณ
ขั้นตอน 4) หลังจากเพิ่มคีย์ GPG แล้ว
อัปเดตแหล่งที่มาของ APT โดยใช้คำสั่ง Docker ด้านล่าง
$ sudo apt-get update
ตอนนี้เราสามารถติดตั้งแพ็คเกจ Docker ได้แล้ว
ขั้นตอน 5) เมื่อแหล่งที่มาของ APT ได้รับการอัปเดตแล้ว
เริ่มการติดตั้งแพ็คเกจ Docker บน Ubuntu โดยใช้คำสั่ง Docker ด้านล่าง
$ sudo apt-get install docker-ce
คำสั่งข้างต้นจะติดตั้ง Docker และแพ็คเกจที่จำเป็นเพิ่มเติมอื่น ๆ ก่อน Docker 1.8.0 ชื่อแพ็คเกจคือ lxc-docker และระหว่าง Docker 1.8 และ 1.13 ชื่อแพ็คเกจคือ docker-engine
หมายเหตุ: นักเทียบท่าสำหรับ Windows ต้อง Windows 10 Pro หรือ Enterprise เวอร์ชัน 14393 หรือ Windows เซิร์ฟเวอร์ 2016 RTM ที่จะทำงาน
วิธีใช้ Docker โดยใช้คำสั่ง Docker พื้นฐาน
ต่อไปนี้คือวิธีใช้ Docker โดยใช้คำสั่ง Docker พื้นฐาน:
คำสั่งพื้นฐานที่สุดที่เราต้องใช้หลังจากติดตั้ง Docker คือ $ docker info ตามที่เรากล่าวไว้ก่อนหน้านี้
$ sudo docker info
คุณควรได้รับผลลัพธ์ที่คล้ายกันหรือต่อไปนี้
ดังที่เราเห็นในตัวอย่าง Docker ข้างต้น เรามีข้อมูลเกี่ยวกับคอนเทนเนอร์ docker ว่ามีจำนวนเท่าใดที่ทำงาน หยุดชั่วคราว หรือหยุด และจำนวนรูปภาพที่เราดาวน์โหลด เรามาดูภาพแรกของเราในบทช่วยสอนคำสั่ง Docker นี้กัน
$ sudo docker pull alpine
ด้วยคำสั่งนี้ เราจะบอกให้นักเทียบท่าดาวน์โหลดอิมเมจอัลไพน์ เพื่อดึงมันออกจากรีจิสตรีสาธารณะ ซึ่งเป็นเวอร์ชันล่าสุดซึ่งตั้งค่าไว้เป็นค่าเริ่มต้น
*alpine เป็นอิมเมจ Docker ขั้นต่ำที่ใช้ Alpine Linux พร้อมดัชนีแพ็คเกจที่สมบูรณ์และมีขนาดเพียง 5 MB
หากเราต้องการรันอิมเมจเป็นคอนเทนเนอร์ เราจะใช้คำสั่งต่อไปนี้ในคู่มือบทช่วยสอน Docker นี้
$ sudo docker run -i -t alpine /bin/bash
ถ้าเรารันคำสั่ง เราจะถูกส่งตรงไปยังเทอร์มินัลของอัลไพน์ แฟล็ก -i ช่วยให้ STDIN เปิดจากคอนเทนเนอร์ แม้ว่าคุณจะไม่ได้เชื่อมต่อก็ตาม อินพุตมาตรฐานแบบถาวรนี้คือครึ่งหนึ่งของสิ่งที่คุณต้องการสำหรับเชลล์แบบโต้ตอบ แฟล็ก -t คืออีกครึ่งหนึ่งและสั่งให้ Docker กำหนด pseudo-tty ให้กับคอนเทนเนอร์ สิ่งนี้ทำให้เรามีเชลล์แบบโต้ตอบในคอนเทนเนอร์ใหม่ เราออกจากคอนเทนเนอร์ด้วยคำสั่ง exit ง่ายๆ
ในบทช่วยสอนพื้นฐาน Docker นี้ เราสามารถลองใช้ไฟล์ Ubuntu ภาพ.
$ sudo docker run -it ubuntu /bin/bash
คุณสามารถสังเกตเห็นว่านักเทียบท่าตรวจสอบรูปภาพในเครื่อง และหากไม่มี รูปภาพนั้นจะถูกดึงออกจากไลบรารีรูปภาพโดยอัตโนมัติ และอีกครั้งที่เรามีเชลล์แบบโต้ตอบที่ทำงานอยู่ นอกจากนี้เรายังสามารถตั้งชื่อคอนเทนเนอร์ในขณะที่เราเรียกใช้งานได้อีกด้วย
$ sudo docker run –-name our_container -it ubuntu /bin/bash
และเราก็ออกอีกครั้ง
เรายังเรียกใช้คอนเทนเนอร์ที่เราสร้างไว้ก่อนหน้านี้ได้ โดยไม่ต้องใช้เชลล์แบบโต้ตอบ
$ sudo docker start container_name
และหยุดการเขียนคอนเทนเนอร์นักเทียบท่าหยุดคอนเทนเนอร์_ชื่อ
$ sudo docker stop container_name
หากเราต้องการเห็นคอนเทนเนอร์ที่ทำงานอยู่ทั้งหมด เราก็เพียงเรียกใช้
$ docker ps
และสำหรับคอนเทนเนอร์ทั้งหมด เราจะเพิ่ม "- a" ที่ส่วนท้ายของคำสั่งเดียวกันนี้ เช่น docker ps -a
คำสั่งนี้แสดง ID ของคอนเทนเนอร์ซึ่งอิมเมจที่ใช้เมื่อถูกสร้างขึ้น สถานะการทำงาน พอร์ตที่เปิดเผย และชื่อที่สร้างแบบสุ่มสำหรับคอนเทนเนอร์เพื่อการจัดการที่ง่ายขึ้น
เมื่อเรารันคอนเทนเนอร์ เราต้องการทราบว่าคอนเทนเนอร์ใช้ทรัพยากรไปเท่าใด เพื่อจุดประสงค์นั้นเราสามารถใช้คำสั่งได้
$ docker stats
คุณยังสามารถดูว่ารูปภาพใดบ้างที่เราดาวน์โหลดในเครื่องและข้อมูลเกี่ยวกับรูปภาพเหล่านั้น
$ sudo docker images
คำสั่งในตัวอย่าง Docker ข้างต้นจะแสดงรูปภาพนักเทียบท่าพร้อมแท็กซึ่งแสดงเวอร์ชันรูปภาพของเรา รหัสรูปภาพเฉพาะ เวลาที่ถูกสร้างขึ้น และขนาดรูปภาพ
การจำลองเสมือนคืออะไร?
ก่อนหน้านี้ กระบวนการในการปรับใช้บริการนั้นช้าและยุ่งยาก ขั้นแรก นักพัฒนาจะต้องเขียนโค้ด จากนั้นทีมปฏิบัติการจะปรับใช้โค้ดบนเครื่องเปล่า ซึ่งพวกเขาจะต้องค้นหาเวอร์ชันไลบรารี แพตช์ และคอมไพเลอร์ภาษาเพื่อให้โค้ดทำงานได้ หากมีจุดบกพร่องหรือข้อผิดพลาด กระบวนการจะเริ่มต้นใหม่ทั้งหมด นักพัฒนาจะแก้ไข จากนั้นทีมปฏิบัติการจะเข้ามาปรับใช้อีกครั้ง
มีการปรับปรุงด้วยการสร้างไฮเปอร์ไวเซอร์ ไฮเปอร์ไวเซอร์มีหลายรายการ เครื่องเสมือน หรือ VM บนโฮสต์เดียวกันซึ่งอาจทำงานหรือปิดอยู่ VM ลดเวลารอคอยในการปรับใช้โค้ดและการแก้ไขข้อบกพร่องอย่างมาก แต่ตัวเปลี่ยนเกมที่แท้จริงคือคอนเทนเนอร์ Docker
คำสั่งนักเทียบท่าที่สำคัญ
ด้านล่างนี้เป็นคำสั่ง Docker ที่สำคัญ:
คำสั่ง | Descriptไอออน |
---|---|
ข้อมูลนักเทียบท่า | คำสั่งข้อมูล |
นักเทียบท่าดึง | ดาวน์โหลดรูปภาพ |
นักเทียบท่า run -i -t image_name /bin/bash | เรียกใช้อิมเมจเป็นคอนเทนเนอร์ |
นักเทียบท่าเริ่ม our_container | เริ่มคอนเทนเนอร์ |
นักเทียบท่าหยุดคอนเทนเนอร์_ชื่อ | หยุดคอนเทนเนอร์ |
นักเทียบท่า PS | รายชื่อคอนเทนเนอร์ที่กำลังทำงานอยู่ |
สถิตินักเทียบท่า | ข้อมูลคอนเทนเนอร์ |
ภาพนักเทียบท่า | รายการภาพที่ดาวน์โหลด |
การล้างข้อมูลนักเทียบท่า | ฆ่าคอนเทนเนอร์ที่ทำงานอยู่ทั้งหมด |
นอกจากนี้อ่าน คำถามและคำตอบในการสัมภาษณ์งาน Docker สำหรับมืออาชีพที่สดใหม่และมีประสบการณ์
สรุป
- Docker เป็นแพลตฟอร์มการพัฒนาซอฟต์แวร์สำหรับการจำลองเสมือนที่มีหลายรายการ Operaระบบ Ting ทำงานบนโฮสต์เดียวกัน ช่วยแยกโครงสร้างพื้นฐานและแอปพลิเคชันเพื่อส่งมอบซอฟต์แวร์ได้อย่างรวดเร็ว
- นักเทียบท่า Archiเทคเจอร์: Docker Engine, Docker Images, รีจิสทรี Docker, Docker Containers
- นักเทียบท่าเครื่องยนต์: Docker เป็นแอปพลิเคชันประเภทไคลเอนต์-เซิร์ฟเวอร์ ซึ่งหมายความว่าเรามีไคลเอนต์ที่ส่งต่อไปยังเซิร์ฟเวอร์ ดังนั้น Docker daemon จึงเรียกว่า: dockerd คือเอ็นจิ้น Docker ซึ่งแสดงถึงเซิร์ฟเวอร์
- รูปภาพนักเทียบท่า: อิมเมจ Docker คือ “ซอร์สโค้ด” สำหรับคอนเทนเนอร์ของเรา เราใช้มันเพื่อสร้างตู้คอนเทนเนอร์ สามารถติดตั้งซอฟต์แวร์ไว้ล่วงหน้าได้ซึ่งจะช่วยเพิ่มความเร็วในการปรับใช้ สิ่งเหล่านี้สามารถพกพาได้ และเราสามารถใช้รูปภาพที่มีอยู่หรือสร้างขึ้นเองได้
- การลงทะเบียนนักเทียบท่า: Docker เก็บอิมเมจที่เราสร้างไว้ในรีจิสตรี มีทะเบียนภาครัฐและเอกชน บริษัท Docker มีการลงทะเบียนสาธารณะที่เรียกว่า Docker hub ซึ่งคุณสามารถจัดเก็บรูปภาพแบบส่วนตัวได้ Docker hub มีรูปภาพนับล้านภาพ ซึ่งคุณสามารถเริ่มใช้งานได้ทันที
- คอนเทนเนอร์นักเทียบท่า: คอนเทนเนอร์คือหน่วยองค์กรและเป็นหนึ่งในแนวคิดพื้นฐานของ Docker เมื่อเราสร้างอิมเมจและเริ่มรันมัน เรากำลังทำงานในคอนเทนเนอร์ การเปรียบเทียบคอนเทนเนอร์ถูกใช้เนื่องจากการพกพาของซอฟต์แวร์ที่เราใช้งานในคอนเทนเนอร์ของเรา