ค้นหาเว็บไซต์

ติดตั้ง Docker และเรียนรู้การจัดการคอนเทนเนอร์ขั้นพื้นฐานใน CentOS และ RHEL 8/7 - ส่วนที่ 1


ในบทความ 4 บทความนี้ เราจะพูดถึง Docker ซึ่งเป็นเครื่องมือการจำลองเสมือนแบบโอเพ่นซอร์สน้ำหนักเบาที่ทำงานที่ระดับบนสุดของระบบปฏิบัติการ ช่วยให้ผู้ใช้สามารถสร้าง เรียกใช้ และปรับใช้แอปพลิเคชันต่างๆ โดยสรุปเป็นขนาดเล็ก ตู้คอนเทนเนอร์

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

บทช่วยสอนนี้ให้จุดเริ่มต้นในการติดตั้ง Docker สร้างและเรียกใช้คอนเทนเนอร์ Docker บน CentOS/RHEL 8/7 แต่แทบไม่ทำให้พื้นผิวของ Docker เป็นรอยเลย

ขั้นตอนที่ 1: ติดตั้งและกำหนดค่า Docker

1. Docker เวอร์ชันก่อนหน้าเรียกว่า docker หรือ docker-engine หากคุณได้ติดตั้งสิ่งเหล่านี้ไว้ คุณจะต้อง ถอนการติดตั้งก่อนที่จะติดตั้งเวอร์ชัน docker-ce ที่ใหม่กว่า

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. หากต้องการติดตั้ง Docker Engine เวอร์ชันล่าสุด คุณต้องตั้งค่าพื้นที่เก็บข้อมูล Docker และติดตั้งแพ็คเกจ yum-utils เพื่อเปิดใช้งาน Docker พื้นที่เก็บข้อมูลที่มั่นคงบนระบบ

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3. ตอนนี้ให้ติดตั้ง docker-ce เวอร์ชันใหม่กว่าจากที่เก็บ Docker และ containerd ด้วยตนเอง เนื่องจากปัญหาบางประการ Red Hat จึงบล็อกการติดตั้ง ของ containerd.io > 1.2.0-3.el7 ซึ่งขึ้นอยู่กับ docker-ce

yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install docker-ce docker-ce-cli

4. หลังจากติดตั้งแพ็คเกจ Docker แล้ว ให้เริ่ม daemon ตรวจสอบสถานะและเปิดใช้งานทั่วทั้งระบบโดยใช้คำสั่งด้านล่าง:

systemctl start docker 
systemctl status docker
systemctl enable docker

5. สุดท้าย เรียกใช้อิมเมจทดสอบคอนเทนเนอร์เพื่อตรวจสอบว่า Docker ทำงานอย่างถูกต้องหรือไม่ โดยออกคำสั่งต่อไปนี้:

docker run hello-world

หากคุณเห็นข้อความด้านล่าง แสดงว่าทุกอย่างลงตัวแล้ว

ผลลัพธ์ตัวอย่าง
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

6. ตอนนี้คุณสามารถเรียกใช้คำสั่ง Docker พื้นฐานสองสามคำสั่งเพื่อรับข้อมูลบางอย่างเกี่ยวกับ Docker ได้:

สำหรับข้อมูลทั้งระบบบน Docker
docker info

สำหรับเวอร์ชันนักเทียบท่า
docker version

7. หากต้องการดูรายการคำสั่ง Docker ที่มีอยู่ทั้งหมด ให้พิมพ์ docker บนคอนโซลของคุณ

docker

ขั้นตอนที่ 2: ดาวน์โหลดอิมเมจ Docker

8. ในการเริ่มและเรียกใช้คอนเทนเนอร์ Docker ขั้นแรก จะต้องดาวน์โหลดรูปภาพจาก Docker Hub บนโฮสต์ของคุณ Docker Hub มีรูปภาพฟรีมากมายจากที่เก็บ

หากต้องการค้นหาอิมเมจ Docker Ubuntu ให้ออกคำสั่งต่อไปนี้:

docker search ubuntu

9. หลังจากที่คุณตัดสินใจเลือกรูปภาพที่คุณต้องการเรียกใช้ตามความต้องการของคุณแล้ว ให้ดาวน์โหลดรูปภาพนั้นในเครื่องโดยเรียกใช้คำสั่งด้านล่าง (ในกรณีนี้คือ รูปภาพ Ubuntu จะถูกดาวน์โหลดและใช้ ):

docker pull ubuntu

10. หากต้องการแสดงรายการอิมเมจ Docker ทั้งหมดที่มีบนโฮสต์ของคุณ ให้ออกคำสั่งต่อไปนี้:

docker images

11. หากคุณไม่ต้องการอิมเมจ Docker อีกต่อไป และต้องการลบออกจากโฮสต์ ให้ออกคำสั่งต่อไปนี้:

docker rmi ubuntu

ขั้นตอนที่ 3: เรียกใช้คอนเทนเนอร์ Docker

เมื่อคุณรันคำสั่งกับอิมเมจ คุณจะได้รับคอนเทนเนอร์ หลังจากที่คำสั่งที่กำลังดำเนินการในคอนเทนเนอร์สิ้นสุดลง คอนเทนเนอร์จะหยุด (คุณได้รับคอนเทนเนอร์ที่ไม่ทำงานหรือออกจากคอนเทนเนอร์) หากคุณเรียกใช้คำสั่งอื่นในอิมเมจเดียวกันอีกครั้ง คอนเทนเนอร์ใหม่จะถูกสร้างขึ้นและอื่นๆ

คอนเทนเนอร์ทั้งหมดที่สร้างขึ้นจะยังคงอยู่ในระบบไฟล์โฮสต์จนกว่าคุณจะเลือกที่จะลบออกโดยใช้คำสั่ง docker rm

12. ในการสร้างและเรียกใช้คอนเทนเนอร์ คุณต้องเรียกใช้คำสั่งลงในอิมเมจที่ดาวน์โหลด ในกรณีนี้คือ Ubuntu ดังนั้นคำสั่งพื้นฐานคือให้แสดง ไฟล์เวอร์ชันการแจกจ่ายภายในคอนเทนเนอร์โดยใช้คำสั่ง cat ดังตัวอย่างต่อไปนี้:

docker run ubuntu cat /etc/issue

คำสั่งข้างต้นแบ่งออกเป็นดังนี้:

docker run [local image] [command to run into container]

13. หากต้องการเรียกใช้คอนเทนเนอร์ตัวใดตัวหนึ่งอีกครั้งด้วยคำสั่งที่ดำเนินการเพื่อสร้างคอนเทนเนอร์ อันดับแรก คุณต้องได้รับ ID คอนเทนเนอร์ (หรือชื่อที่สร้างโดยอัตโนมัติโดย Docker) โดยการออกคำสั่งด้านล่างซึ่งแสดงรายการคอนเทนเนอร์ที่ทำงานและหยุดทำงาน (ไม่ทำงาน):

docker ps -l 

14. เมื่อได้รับ ID คอนเทนเนอร์แล้ว คุณสามารถเริ่มต้นคอนเทนเนอร์ได้อีกครั้งด้วยคำสั่งที่ใช้ในการสร้างคอนเทนเนอร์ โดยออกคำสั่งต่อไปนี้:

docker start 923a720da57f

ในที่นี้ สตริง 923a720da57f แสดงถึงคอนเทนเนอร์ ID

15. ในกรณีที่คอนเทนเนอร์กำลังทำงานอยู่ คุณสามารถรับ ID ได้โดยการออกคำสั่ง docker ps หากต้องการหยุดคำสั่ง docker stop ปัญหาคอนเทนเนอร์ที่ทำงานอยู่ โดยการระบุ ID คอนเทนเนอร์หรือชื่อที่สร้างขึ้นโดยอัตโนมัติ

docker stop 923a720da57f
OR
docker stop cool_lalande
docker ps

16. อีกทางเลือกที่หรูหรากว่าเพื่อที่คุณจะได้ไม่ต้องจำคอนเทนเนอร์ ID คือการจัดสรรชื่อที่ไม่ซ้ำให้กับทุกคอนเทนเนอร์ที่คุณสร้างโดยใช้ - -name ตัวเลือกบนบรรทัดคำสั่ง ดังตัวอย่างต่อไปนี้:

docker run --name ubuntu20.04 ubuntu cat /etc/issue

17. จากนั้น โดยใช้ชื่อที่คุณจัดสรรให้กับคอนเทนเนอร์ คุณสามารถจัดการคอนเทนเนอร์ (เริ่มต้น, หยุด, ลบ, top, สถิติ) เพิ่มเติมเพียงแค่ระบุชื่อ ดังตัวอย่างด้านล่าง:

docker start ubuntu20.04
docker stats ubuntu20.04
docker top ubuntu20.04 

โปรดทราบว่าคำสั่งข้างต้นบางคำสั่งอาจไม่แสดงผลหากกระบวนการของคำสั่งที่ใช้ในการสร้างคอนเทนเนอร์เสร็จสิ้น เมื่อกระบวนการที่ทำงานภายในคอนเทนเนอร์เสร็จสิ้น คอนเทนเนอร์จะหยุดทำงาน

ขั้นตอนที่ 4: เรียกใช้เซสชันแบบโต้ตอบลงในคอนเทนเนอร์

18. เพื่อที่จะเชื่อมต่อแบบโต้ตอบในเซสชันเชลล์คอนเทนเนอร์ และเรียกใช้คำสั่งเช่นเดียวกับที่คุณทำบนเซสชัน Linux อื่น ๆ ให้ออกคำสั่งต่อไปนี้:

docker run -it ubuntu bash

คำสั่งข้างต้นแบ่งออกเป็นดังนี้:

  1. -i ใช้เพื่อเริ่มเซสชันแบบโต้ตอบ
  2. -t จัดสรร TTY และแนบ stdin และ stdout
  3. ubuntu คือภาพที่เราใช้ในการสร้างคอนเทนเนอร์
  4. bash (หรือ /bin/bash) คือคำสั่งที่เรากำลังทำงานอยู่ภายในคอนเทนเนอร์ของ Ubuntu

19. หากต้องการออกและกลับสู่โฮสต์จากเซสชันคอนเทนเนอร์ที่ทำงานอยู่ คุณต้องพิมพ์คำสั่ง exit คำสั่ง exit จะยุติกระบวนการคอนเทนเนอร์ทั้งหมดและหยุดกระบวนการดังกล่าว

exit

20. หากคุณเข้าสู่ระบบแบบโต้ตอบบนพรอมต์ Terminal Terminal และคุณต้องการให้คอนเทนเนอร์อยู่ในสถานะทำงาน แต่ ออก จากเซสชันแบบโต้ตอบ คุณสามารถ ออก< คอนโซลและกลับสู่เทอร์มินัลโฮสต์โดยกดปุ่ม Ctrl+p และ Ctrl+q

21. หากต้องการเชื่อมต่อกับคอนเทนเนอร์ที่ทำงานอยู่อีกครั้ง คุณต้องมี ID หรือ ชื่อ คอนเทนเนอร์ ออกคำสั่ง docker ps เพื่อรับ ID หรือ ชื่อ จากนั้นรันคำสั่ง dockerแนบ โดยระบุคอนเทนเนอร์ ID หรือ ชื่อ ดังที่แสดงในภาพด้านบน:

docker attach <container id>

22. หากต้องการหยุดคอนเทนเนอร์ที่ทำงานอยู่จากเซสชันโฮสต์ ให้ออกคำสั่งต่อไปนี้:

docker kill <container id>

นั่นคือทั้งหมดสำหรับการจัดการคอนเทนเนอร์ขั้นพื้นฐาน ในบทช่วยสอนถัดไป เราจะพูดถึงวิธีการบันทึก ลบ และเรียกใช้เว็บเซิร์ฟเวอร์ในคอนเทนเนอร์ Docker