Docker ได้ก่อให้เกิดการปฏิวัติในอุตสาหกรรมวิศวกรรมซอฟต์แวร์ ไม่ได้เปลี่ยนแปลงแค่วิธีที่เราส่งมอบและปรับใช้ซอฟต์แวร์เท่านั้น แต่ยังเปลี่ยนวิธีที่วิศวกรตั้งค่าสภาพแวดล้อมการพัฒนาซอฟต์แวร์บนคอมพิวเตอร์ของตนเองอีกด้วย
ข้อดีของ Docker
Docker เป็นแพลตฟอร์มโอเพนซอร์สที่ช่วยให้คุณทำให้การปรับใช้แอปพลิเคชันเป็นแพ็กเกจอิสระที่เรียกว่า "คอนเทนเนอร์" (containers) ได้แบบอัตโนมัติ Docker ใช้เทคโนโลยีการจำลองระบบปฏิบัติการ แต่แตกต่างจากเครื่องเสมือน (virtual machines) โดยที่ Docker ใช้ทรัพยากรระบบน้อยกว่ามาก
ข้อดีหลักของ Docker ได้แก่:
- ใช้งานและเรียนรู้ได้ง่ายค่อนข้าง
- ให้วิธีการปรับใช้ซอฟต์แวร์ที่สม่ำเสมอและง่ายดาย
- เข้ากันได้กับสถาปัตยกรรมไมโครเซอร์วิส (microservice architecture)
- เบา מאוד על שימוש במשאבים
การตั้งค่าที่เก็บซอฟต์แวร์ Docker
มีหลายวิธีในการติดตั้ง Docker บทความนี้จะแสดงวิธีติดตั้ง Docker จากที่เก็บของ Docker โดยใช้คำสั่ง apt การติดตั้งแบบนี้ช่วยให้คุณอัปเกรดแพ็กเกจ Docker ได้ง่ายในอนาคต และเป็นวิธีที่ทีม Docker แนะนำ
ขั้นตอนแรกคือการเพิ่มที่เก็บซอฟต์แวร์ Docker เข้าไปในรายการแหล่งซอฟต์แวร์ของคุณ คุณจะใช้ที่เก็บ Docker ผ่าน HTTPS จากนั้นติดตั้งซอฟต์แวร์ที่จำเป็นด้วยคำสั่งด้านล่าง
ตามหลักปฏิบัติที่ดี ควรอัปเดตรายการแพ็กเกจซอฟต์แวร์ที่มีอยู่ก่อน:
sudo apt update
จากนั้น ดาวน์โหลดทุก dependency ที่จำเป็นสำหรับการติดตั้งโดยใช้ apt install:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
ซอฟต์แวร์ Docker ใช้ GnuPG (GPG) ในการรักษาความปลอดภัยการสื่อสารเมื่อดาวน์โหลดแพ็กเกจซอฟต์แวร์จากที่เก็บของมัน GPG เป็นการนำมาตรฐาน PGP (Pretty Good Privacy) มาใช้งาน เพื่อเข้ารหัสข้อความหรือข้อมูล
เพื่อเพิ่ม GPG key อย่างเป็นทางการของ Docker เข้าไปใน keyrongs ท้องถิ่นของคุณ ให้ใช้คำสั่งต่อไปนี้:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Docker มี 3 รุ่นการปล่อยซอฟต์แวร์หลักในที่เก็บของพวกเขา: รุ่นเสถียร (stable), รุ่นทดสอบ (test), และรุ่น nightly บทความนี้จะพูดถึงรุ่นเสถียรของ Docker
รันคำสั่งต่อไปนี้เพื่อใช้ที่เก็บรุ่นเสถียรของ Docker:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
หมายเหตุ: คำสั่งข้างต้นสมมติว่าคุณใช้สถาปัตยกรรม AMD หากคุณใช้สถาปัตยกรรม ARM คุณสามารถแทนคำว่า arch=amd64 ในคำสั่งข้างต้นด้วย arch=arm64 หรือ arch=armhf หากคุณใช้ arm hard float
การติดตั้ง Docker Engine
ตอนนี้คุณได้ตั้งค่าที่เก็บซอฟต์แวร์ Docker แล้ว คุณสามารถดำเนินการติดตั้ง Docker Engine ซึ่งเป็นส่วนแกนกลางของการจัดการและรันคอนเทนเนอร์ Docker ได้แล้ว คอมโพเนนต์สำคัญอื่นๆ ที่ประกอบเป็น Docker Engine ได้แก่ Docker Client, containerd, runc และ Docker daemon
อย่าลืมอัปเดตแหล่งแพ็กเกจของคุณด้วยคำสั่งด้านล่าง เนื่องจากคุณเพิ่งเพิ่มที่เก็บ Docker เข้าไปในรายการแหล่งซอฟต์แวร์:
sudo apt update
เพื่อติดตั้ง Docker Engine ให้รันคำสั่งต่อไปนี้ คำสั่งนี้จะติดตั้งรุ่นเสถียรล่าสุดของ Docker Engine โดยค่าเริ่มต้น:
sudo apt-get install docker-ce docker-ce-cli containerd.io
หากคุณต้องการติดตั้งรุ่นเฉพาะของ Docker คุณสามารถตรวจสอบรายการรุ่นที่มีอยู่ด้วยคำสั่งด้านล่าง:
apt-cache madison docker-ce
จากนั้นคุณสามารถติดตั้งรุ่นเฉพาะของ Docker ได้ด้วยคำสั่งต่อไปนี้ ตัวอย่างเช่น เพื่อติดตั้ง 5:20.10.6~3-0~ubuntu-focal:
sudo apt-get install docker-ce=5:20.10.6~3-0~ubuntu-focal docker-ce-cli=5:20.10.6~3-0~ubuntu-focal containerd.io
การยืนยันการติดตั้ง
เพื่อตรวจสอบว่า Docker ติดตั้งสำเร็จหรือไม่ คุณสามารถรันคำสั่งต่อไปนี้ และมันจะแสดงหมายเลขรุ่นของ Docker Engine ที่ติดตั้งไว้:
docker -v
ใน Ubuntu Linux และดิสโทรที่อิงจาก Debian ส่วนใหญ่ บริการ Docker จะเริ่มทำงานอัตโนมัติเมื่อระบบบูท
คุณสามารถลองรัน Docker image hello-world เพื่อทดสอบการติดตั้ง เนื่องจาก image ไม่อยู่ในเครื่องของคุณ ระบบจะดาวน์โหลดมันจาก Docker Hub ซึ่งเป็นไลบรารีของ container images ครั้งต่อไปที่คุณรัน image นี้ จะใช้เวอร์ชันท้องถิ่นที่อยู่บน PC ของคุณแทน
sudo docker run hello-world
การรัน Docker ในฐานะ Non-Root User
ขณะนี้คุณสามารถรันคอนเทนเนอร์ Docker ได้แค่ในฐานะ superuser เท่านั้น นั่นคือเหตุผลที่ต้องใช้ sudo ในคำสั่งข้างต้น Docker daemon ผูกกับ Unix socket ซึ่งโดยค่าเริ่มต้นเป็นของ root user และ non-root users สามารถเข้าถึงได้เฉพาะผ่าน sudo เท่านั้น
เพื่อให้สามารถรันคอนเทนเนอร์ Docker และคำสั่งสำคัญอื่นๆ ได้โดยไม่ต้องเป็น superuser คุณต้องสร้างกลุ่มผู้ใช้ชื่อ docker ก่อน แล้วจึงเพิ่มผู้ใช้ของคุณเข้าไปในกลุ่ม docker บนเครื่องของคุณ คำสั่ง groupadd ใช้สำหรับจัดการกลุ่มผู้ใช้ใน Linux
sudo groupadd docker
sudo usermod -aG docker $USER
ใช้คำสั่งด้านล่างเพื่อเปิดใช้งานการเปลี่ยนแปลงกลุ่ม:
newgrp docker
หมายเหตุ: จำได้ว่าให้ออกจากระบบและเข้าสู่ระบบใหม่อีกครั้ง เพื่อให้ระบบจดจำการเป็นสมาชิกกลุ่มที่เพิ่งสร้างขึ้น คุณสามารถใช้คำสั่งต่อไปนี้เพื่อออกจากระบบ:
gnome-session-quit
ในบางกรณี อาจจำเป็นต้องรีสตาร์ทเครื่อง หากคุณยังคงไม่สามารถรันคำสั่ง Docker ในฐานะ non-root user ได้
การถอนการติดตั้ง Docker
เพื่อลบหรือถอนการติดตั้ง Docker Engine จาก Ubuntu Linux ให้รันคำสั่งต่อไปนี้:
sudo apt remove docker docker-engine docker.io containerd runc
แม้ Docker Engine จะถูกลบแล้ว แต่ไฟล์อื่นๆ ที่เกี่ยวข้องกับ Docker เช่น images, containers, volumes หรือไฟล์การตั้งค่าที่ปรับแต่งเอง จะไม่ถูกลบโดยอัตโนมัติ คุณสามารถลบไฟล์เหล่านี้ได้โดยใช้คำสั่ง rm:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Docker ในทางปฏิบัติ
บทความนี้แสดงวิธีติดตั้งและกำหนดค่า Docker บน Ubuntu Linux นอกจากนี้ยังแสดงวิธีรัน Docker image 簡單 ที่ดึงมาจาก Docker Hub
Docker เป็นเครื่องมือที่หลากหลายและมีกรณีการใช้งานมากมายในวิศวกรรมซอฟต์แวร์ หากคุณเป็นวิศวกรซอฟต์แวร์หรือทำงานใน DevOps Docker จะทำให้วิธีที่คุณปรับใช้ซอฟต์แวร์ในสภาพแวดล้อมต่างๆ ง่ายขึ้น และมีประโยชน์สำหรับการทดสอบและสร้างต้นแบบซอฟต์แวร์