บทช่วยสอนนักเทียบท่าสำหรับผู้เริ่มต้น: พื้นฐาน, Archiเทคเจอร์, คอนเทนเนอร์
⚡ สรุปอย่างชาญฉลาด
Docker คือแพลตฟอร์มการสร้างคอนเทนเนอร์ที่บรรจุแอปพลิเคชันและส่วนประกอบที่จำเป็นลงในคอนเทนเนอร์ขนาดเล็ก พกพาสะดวก บทความนี้จะอธิบายสถาปัตยกรรมของ Docker และวิธีการติดตั้ง Ubuntuคำสั่งที่จำเป็น และความแตกต่างระหว่างคอนเทนเนอร์กับเครื่องเสมือนแบบดั้งเดิม เพื่อการส่งมอบซอฟต์แวร์ที่รวดเรวยิ่งขึ้น

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

ต่างจาก VM ที่สามารถสื่อสารโดยตรงกับฮาร์ดแวร์ของโฮสต์ได้ (เช่น อะแดปเตอร์อีเธอร์เน็ตที่สร้างอะแดปเตอร์เสมือนเพิ่มเติม) คอนเทนเนอร์ Docker ทำงานในสภาพแวดล้อมที่แยกต่างหากบนระบบปฏิบัติการของโฮสต์ แม้ว่าโฮสต์ของคุณจะทำงานอยู่ก็ตาม Windowsคุณสามารถเรียกใช้ ลินุกซ์ รูปภาพภายในคอนเทนเนอร์ด้วยความช่วยเหลือของ Hyper-Vซึ่งจะสร้าง VM ขนาดเล็กโดยอัตโนมัติเพื่อจำลองอิมเมจพื้นฐาน
เมื่อคุณรู้จัก Docker แล้ว เรามาดูกันว่าเหตุผลหลักที่ทีมต่างๆ เลือกใช้ Docker คืออะไร
ทำไมต้องใช้นักเทียบท่า?
นี่คือเหตุผลสำคัญที่ควรใช้ Docker:
- Docker คือซอฟต์แวร์ที่ใช้สำหรับการจำลองเสมือน ทำให้สามารถใช้งานหลายๆ ระบบพร้อมกันได้ ระบบปฏิบัติการ เพื่อใช้งานบนโฮสต์เดียวกัน
- Docker เป็นแอปพลิเคชันแบบไคลเอ็นต์-เซิร์ฟเวอร์ ซึ่งหมายความว่าไคลเอ็นต์จะสื่อสารกับเซิร์ฟเวอร์
- อิมเมจ Docker เปรียบเสมือน "ซอร์สโค้ด" สำหรับคอนเทนเนอร์ คุณใช้มันในการสร้างคอนเทนเนอร์
- Docker รองรับรีจิสทรีสองประเภท ได้แก่ รีจิสทรีสาธารณะและรีจิสทรีส่วนตัว
- คอนเทนเนอร์เป็นหน่วยการจัดการของ Docker กล่าวโดยง่ายคือ อิมเมจคือแม่แบบ และคอนเทนเนอร์คือสำเนาของแม่แบบนั้น ดังนั้นคุณจึงสามารถเรียกใช้คอนเทนเนอร์หลายตัวจากอิมเมจเดียวกันได้
ข้อดีเหล่านี้เกิดจากการออกแบบของ Docker ส่วนต่อไปนี้จะอธิบายสถาปัตยกรรมของ Docker และส่วนประกอบหลักๆ ของมัน
นักเทียบท่า Archiเทคเจอร์
ในบทเรียนเกี่ยวกับคอนเทนเนอร์ Docker นี้ เราจะมาดูส่วนประกอบหลัก ๆ ของสถาปัตยกรรม Docker กัน
Docker Engine
Docker เป็นแอปพลิเคชันแบบไคลเอ็นต์-เซิร์ฟเวอร์ ซึ่งหมายความว่าเรามีไคลเอ็นต์ที่ส่งต่อคำขอไปยังเซิร์ฟเวอร์ ส่วน Docker daemon ที่เรียกว่า dockerd นั้นเป็นเอนจินของ Docker ที่ทำหน้าที่เป็นเซิร์ฟเวอร์ ทั้ง daemon และไคลเอ็นต์สามารถทำงานบนโฮสต์เดียวกันหรือโฮสต์ระยะไกลก็ได้ และสื่อสารกันผ่านไบนารีไคลเอ็นต์แบบบรรทัดคำสั่งและไฟล์ .document.js ที่สมบูรณ์ RESTful API ที่ทำงานร่วมกับ dockerd
ภาพนักเทียบท่า
อิมเมจ Docker เปรียบเสมือน "ซอร์สโค้ด" สำหรับคอนเทนเนอร์ของเรา เราใช้มันในการสร้างคอนเทนเนอร์ อิมเมจสามารถติดตั้งซอฟต์แวร์ไว้ล่วงหน้าได้ ซึ่งช่วยให้การใช้งานรวดเร็วขึ้น นอกจากนี้ยังพกพาได้ และคุณสามารถใช้อิมเมจที่มีอยู่แล้วหรือสร้างอิมเมจของคุณเองก็ได้
ทะเบียนนักเทียบท่า
Docker จัดเก็บอิมเมจที่เราสร้างขึ้นไว้ในรีจิสทรี ซึ่งมีทั้งรีจิสทรีสาธารณะและรีจิสทรีส่วนตัว Docker มีรีจิสทรีสาธารณะที่เรียกว่า ศูนย์กลางนักเทียบท่าซึ่งคุณสามารถจัดเก็บรูปภาพแบบส่วนตัวได้ด้วย Docker Hub มีรูปภาพนับล้านภาพที่คุณสามารถเริ่มใช้งานได้ทันที
คอนเทนเนอร์นักเทียบท่า
คอนเทนเนอร์เป็นหน่วยการจัดการของ Docker และเป็นหนึ่งในแนวคิดพื้นฐาน เมื่อเราสร้างอิมเมจและเรียกใช้งาน เรากำลังเรียกใช้งานมันภายในคอนเทนเนอร์ การเปรียบเทียบกับคอนเทนเนอร์นั้นมาจากการที่ซอฟต์แวร์ที่ทำงานอยู่ภายในนั้นสามารถพกพาได้ คุณสามารถเคลื่อนย้าย "ขนส่ง" แก้ไข จัดการ สร้าง หรือทำลายมันได้ เช่นเดียวกับที่เรือบรรทุกสินค้าขนส่งตู้คอนเทนเนอร์จริงๆ
พูดง่ายๆ ก็คือ รูปภาพคือเทมเพลต และคอนเทนเนอร์คือสำเนาของเทมเพลตนั้น คุณสามารถมีหลายคอนเทนเนอร์ (สำเนา) ของรูปภาพเดียวกันได้
ปฏิสัมพันธ์ระหว่างส่วนประกอบต่างๆ เหล่านี้แสดงให้เห็นว่าเทคโนโลยีคอนเทนเนอร์ Docker ทำงานร่วมกันอย่างไร คำสั่งต่างๆ เช่น docker pull และ docker run ซึ่งเราจะกล่าวถึงในภายหลัง ช่วยให้คุณจัดการเวิร์กโฟลว์นี้ได้
เมื่อคำนึงถึงสถาปัตยกรรมแล้ว มาติดตั้ง Docker เพื่อให้คุณสามารถทดลองใช้ส่วนประกอบเหล่านี้ได้ด้วยตนเอง
วิธีการติดตั้ง Docker บน Linux/Ubuntu
ด้านล่างนี้คือขั้นตอนการติดตั้ง Docker บน Linux อย่างละเอียด/Ubuntu:
ขั้นตอน 1) ในการติดตั้ง Docker คุณต้องมีแพ็กเกจ DEB จากทีมพัฒนา Docker ก่อนอื่น เราต้องเตรียมสิ่งที่จำเป็นบางอย่างก่อน Ubuntu จำเป็นต้องติดตั้งแพ็กเกจต่างๆ ใช้คำสั่งด้านล่างเพื่อติดตั้งแพ็กเกจเหล่านั้น
$ sudo apt-get install \ apt-transport-https \ ca-certificates curl \ software-properties-common
*ไม่จำเป็นต้องใช้เครื่องหมาย “\” แต่ต้องขึ้นบรรทัดใหม่ หากต้องการให้เขียนคำสั่งโดยไม่ต้องใช้ “\” ในบรรทัดเดียวเท่านั้น
ขั้นตอน 2) เพิ่มคีย์ GPG อย่างเป็นทางการของ Docker พร้อมลายนิ้วมือ ใช้คำสั่ง Docker ด้านล่างเพื่อป้อนคีย์ GPG
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
ขั้นตอน 3) ขั้นตอนต่อไป ให้เพิ่มที่เก็บ Docker APT โดยใช้คำสั่งด้านล่าง
$ 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 สามารถใช้งานได้กับ Server 2016 RTM
วิธีใช้ Docker โดยใช้คำสั่ง Docker พื้นฐาน
นี่คือวิธีการใช้งาน Docker โดยใช้คำสั่ง Docker พื้นฐานไม่กี่คำสั่ง
คำสั่งพื้นฐานที่สุดที่คุณควรเรียกใช้หลังจากติดตั้ง Docker คือ docker info ดังที่ได้กล่าวไว้ก่อนหน้านี้
$ sudo docker info
คุณควรจะได้ผลลัพธ์ที่คล้ายกับตัวอย่างต่อไปนี้
ดังที่แสดงในตัวอย่าง Docker ด้านบน เราสามารถดูข้อมูลเกี่ยวกับคอนเทนเนอร์ Docker ได้ เช่น มีจำนวนที่กำลังทำงาน หยุดชั่วคราว หรือหยุดทำงาน และมีจำนวนอิมเมจที่ดาวน์โหลดไปแล้วกี่ภาพ ตอนนี้เรามาดาวน์โหลดอิมเมจแรกกันเลย
$ sudo docker pull alpine
คำสั่งนี้เป็นการบอกให้ Docker ดาวน์โหลดอิมเมจ alpine โดยดึงมาจากรีจิสทรีสาธารณะในเวอร์ชันล่าสุด ซึ่งเป็นค่าเริ่มต้นที่ตั้งไว้
*alpine เป็นอิมเมจ Docker ขั้นต่ำที่ใช้ Alpine Linux พร้อมดัชนีแพ็คเกจที่สมบูรณ์และมีขนาดเพียง 5 MB
หากเราต้องการรันอิมเมจในรูปแบบคอนเทนเนอร์ เราจะใช้คำสั่งต่อไปนี้
$ sudo docker run -i -t alpine /bin/bash
การรันคำสั่งนี้จะนำเราไปยังเทอร์มินัล Alpine โดยตรง แฟล็ก -i จะทำให้ STDIN เปิดอยู่ตลอดเวลาแม้ว่าคุณจะไม่ได้เชื่อมต่อกับคอนเทนเนอร์ก็ตาม อินพุตมาตรฐานแบบถาวรนี้เป็นครึ่งหนึ่งของสิ่งที่คุณต้องการสำหรับเชลล์แบบโต้ตอบ แฟล็ก -t เป็นอีกครึ่งหนึ่งและสั่งให้ Docker กำหนด pseudo-tty ให้กับคอนเทนเนอร์ เมื่อใช้ร่วมกันจะทำให้เรามีเชลล์แบบโต้ตอบในคอนเทนเนอร์ใหม่ เราสามารถออกจากคอนเทนเนอร์ได้ด้วยคำสั่ง exit ง่ายๆ
ในบทเรียนพื้นฐานเกี่ยวกับ Docker นี้ เราจะลองรันคำสั่งต่อไปนี้กัน Ubuntu ภาพ.
$ sudo docker run -it ubuntu /bin/bash
โปรดสังเกตว่า Docker จะตรวจสอบอิมเมจในเครื่อง และหากไม่มีอยู่ ระบบจะดึงอิมเมจจากคลังอิมเมจโดยอัตโนมัติ อีกครั้ง เราก็สามารถใช้งานเชลล์แบบโต้ตอบได้ และเรายังสามารถตั้งชื่อคอนเทนเนอร์ขณะเรียกใช้งานได้ด้วย
$ sudo docker run –-name our_container -it ubuntu /bin/bash
จากนั้นเราก็ออกจากโปรแกรมอีกครั้ง เรายังสามารถเรียกใช้คอนเทนเนอร์ที่เราสร้างไว้ก่อนหน้านี้ได้โดยไม่ต้องใช้เชลล์แบบโต้ตอบ
$ sudo docker start container_name
และเราหยุดคอนเทนเนอร์โดยการพิมพ์คำสั่ง `docker stop container_name`
$ sudo docker stop container_name
หากเราต้องการดูคอนเทนเนอร์ที่กำลังทำงานอยู่ทั้งหมด เราเพียงแค่รันคำสั่งต่อไปนี้
$ docker ps
สำหรับคอนเทนเนอร์ทั้งหมด เราจะเพิ่ม "-a" ต่อท้ายคำสั่งเดียวกัน เช่น docker ps -a คำสั่งนี้จะแสดง ID ของคอนเทนเนอร์ รูปภาพที่ใช้ วันที่สร้าง สถานะการทำงาน พอร์ตที่เปิดใช้งาน และชื่อที่สร้างขึ้นแบบสุ่มเพื่อให้จัดการได้ง่ายขึ้น
เมื่อเราใช้งานคอนเทนเนอร์ เรามักต้องการทราบว่าคอนเทนเนอร์เหล่านั้นใช้ทรัพยากรไปเท่าใด สำหรับจุดประสงค์นั้น เราสามารถใช้คำสั่งต่อไปนี้ได้
$ docker stats
นอกจากนี้ คุณยังสามารถดูได้ว่าคุณดาวน์โหลดรูปภาพใดบ้างลงในเครื่อง พร้อมทั้งข้อมูลเกี่ยวกับรูปภาพเหล่านั้นด้วย
$ sudo docker images
คำสั่งในตัวอย่าง Docker ด้านบนจะแสดงอิมเมจ Docker แต่ละรายการพร้อมแท็กที่แสดงเวอร์ชันของอิมเมจ รหัสประจำตัวของอิมเมจ วันที่สร้าง และขนาดของอิมเมจ
เพื่อให้เข้าใจว่าเหตุใดคอนเทนเนอร์จึงเป็นการพัฒนาที่ดีขึ้นมาก จำเป็นต้องพิจารณาถึงวิวัฒนาการของเวอร์ชวลไลเซชัน
การจำลองเสมือนคืออะไร?
ก่อนหน้านี้ การติดตั้งใช้งานบริการนั้นช้าและยุ่งยาก นักพัฒนาจะเขียนโค้ด จากนั้นทีมปฏิบัติการจะติดตั้งลงบนเครื่องเซิร์ฟเวอร์จริง ซึ่งพวกเขาต้องคอยตรวจสอบเวอร์ชันของไลบรารี แพตช์ และคอมไพเลอร์ของภาษาต่างๆ เพื่อให้โค้ดทำงานได้ หากมีบั๊กหรือข้อผิดพลาด กระบวนการก็จะเริ่มต้นใหม่ทั้งหมด นักพัฒนาจะแก้ไขปัญหา และทีมปฏิบัติการจะติดตั้งใช้งานใหม่อีกครั้ง
สถานการณ์ดีขึ้นหลังจากมีการสร้างไฮเปอร์ไวเซอร์ ไฮเปอร์ไวเซอร์สามารถรันโปรแกรมได้หลายตัวพร้อมกัน เครื่องเสมือนหรือเครื่องเสมือน (VMs) บนโฮสต์เดียวกัน ซึ่งอาจกำลังทำงานอยู่หรือปิดอยู่ก็ได้ เครื่องเสมือนช่วยลดเวลารอในการปรับใช้โค้ดและแก้ไขข้อผิดพลาดได้อย่างมาก แต่สิ่งที่เปลี่ยนแปลงทุกอย่างอย่างแท้จริงคือคอนเทนเนอร์ Docker
ความนิยมของ Docker ยังได้รับแรงหนุนจากเครื่องมือจัดการคอนเทนเนอร์ในระดับขนาดใหญ่ เช่น Kubernetesก่อนที่จะไปต่อ นี่คือข้อมูลอ้างอิงโดยย่อของคำสั่ง Docker ที่สำคัญที่สุด
คำสั่งนักเทียบท่าที่สำคัญ
ด้านล่างนี้เป็นคำสั่ง Docker ที่สำคัญ:
| คำสั่ง | Descriptไอออน |
|---|---|
| ข้อมูลนักเทียบท่า | คำสั่งข้อมูล |
| นักเทียบท่าดึง | ดาวน์โหลดรูปภาพ |
| นักเทียบท่า run -i -t image_name /bin/bash | เรียกใช้อิมเมจเป็นคอนเทนเนอร์ |
| นักเทียบท่าเริ่ม our_container | เริ่มคอนเทนเนอร์ |
| นักเทียบท่าหยุดคอนเทนเนอร์_ชื่อ | หยุดคอนเทนเนอร์ |
| นักเทียบท่า PS | รายชื่อคอนเทนเนอร์ที่กำลังทำงานทั้งหมด |
| สถิตินักเทียบท่า | ข้อมูลคอนเทนเนอร์ |
| ภาพนักเทียบท่า | รายการภาพที่ดาวน์โหลด |
| การล้างข้อมูลนักเทียบท่า | ฆ่าคอนเทนเนอร์ที่ทำงานอยู่ทั้งหมด |
นอกจากนี้ โปรดอ่านสิ่งเหล่านี้ด้วย คำถามและคำตอบในการสัมภาษณ์งาน Docker เหมาะสำหรับทั้งผู้ที่เพิ่งจบการศึกษาและผู้ที่มีประสบการณ์ทำงานมาแล้ว

