บทช่วยสอนนักเทียบท่าสำหรับผู้เริ่มต้น: พื้นฐาน, Archiเทคเจอร์, คอนเทนเนอร์

Docker คืออะไร?

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

ดังที่คุณเห็นความแตกต่างในภาพด้านล่าง คอนเทนเนอร์ Docker ทำงานบนโฮสต์ Operaระบบการทำงาน สิ่งนี้ช่วยให้คุณปรับปรุงประสิทธิภาพและความปลอดภัย ยิ่งไปกว่านั้น เราสามารถรันคอนเทนเนอร์บนโครงสร้างพื้นฐานเดียวกันได้มากกว่าที่เราจะรันเครื่องเสมือนได้ เนื่องจากคอนเทนเนอร์ใช้ทรัพยากรน้อยกว่า

การจำลองเสมือนใน Docker กับ Hypervisor
การจำลองเสมือนใน Docker กับ Hypervisor

ต่างจาก VM ที่สามารถสื่อสารกับฮาร์ดแวร์ของโฮสต์ได้ (เช่น อะแดปเตอร์อีเทอร์เน็ตเพื่อสร้างอะแดปเตอร์เสมือนเพิ่มเติม) คอนเทนเนอร์นักเทียบท่าทำงานในสภาพแวดล้อมที่แยกส่วนที่ด้านบนของระบบปฏิบัติการของโฮสต์ แม้ว่าโฮสต์ของคุณจะทำงาน Windows OS คุณสามารถให้อิมเมจ Linux ทำงานในคอนเทนเนอร์ได้ด้วยความช่วยเหลือ Hyper-Vซึ่งจะสร้าง VM ขนาดเล็กโดยอัตโนมัติเพื่อจำลองอิมเมจพื้นฐานของระบบ ในกรณีนี้ ลินุกซ์.

ทำไมต้องใช้นักเทียบท่า?

  • Docker คือซอฟต์แวร์คอมพิวเตอร์ที่ใช้สำหรับ Virtualization เพื่อให้มีหลายตัว Operaระบบการแต่งแต้ม ทำงานบนโฮสต์เดียวกัน
  • Docker เป็นแอปพลิเคชันประเภทไคลเอนต์-เซิร์ฟเวอร์ ซึ่งหมายความว่าเรามีไคลเอนต์ที่ส่งต่อไปยังเซิร์ฟเวอร์
  • อิมเมจ Docker คือ “ซอร์สโค้ด” สำหรับคอนเทนเนอร์ของเรา เราใช้มันเพื่อสร้าง
  • Dockerfile มีการลงทะเบียนสองประเภท 1.) การลงทะเบียนสาธารณะและ 2) การลงทะเบียนส่วนตัว
  • คอนเทนเนอร์คือหน่วยองค์กรของวอลุ่ม Docker พูดง่ายๆ ก็คือ รูปภาพคือเทมเพลต และคอนเทนเนอร์คือสำเนาของเทมเพลตนั้น คุณสามารถมีหลายคอนเทนเนอร์ (สำเนา) ของรูปภาพเดียวกันได้

นักเทียบท่า Archiเทคเจอร์

ในบทช่วยสอนเกี่ยวกับคอนเทนเนอร์ Docker นี้ เราจะมาพูดถึงส่วนประกอบหลักของ Docker ใน Docker กัน Archiเทคเจอร์:

นักเทียบท่า Archiเทคเจอร์
นักเทียบท่า 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 ข้างต้น เรามีข้อมูลเกี่ยวกับคอนเทนเนอร์ 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 เมื่อเราสร้างอิมเมจและเริ่มรันมัน เรากำลังทำงานในคอนเทนเนอร์ การเปรียบเทียบคอนเทนเนอร์ถูกใช้เนื่องจากการพกพาของซอฟต์แวร์ที่เราใช้งานในคอนเทนเนอร์ของเรา