รู้จัก Docker และการติดตั้ง Docker บน CentOS 7

รู้จัก Docker และการติดตั้ง Docker บน CentOS 7

Docker พัฒนาจากภาษา Go โดย Solomon Hykes ช่วงเดือนมีนาคมปี 2013 เป็นเครื่องมือโอเพ่นซอร์สใช้สำหรับสร้างและจัดการลีนุกซ์คอนเทนเนอร์หรือ LXC (Linux Containers) (ให้มองภาพคล้ายกับตู้คอนเทนเนอร์ หรือกล่องวิเศษที่ผู้ใช้สามารถเรียกใช้งานสิ่งที่ต้องการได้ทันที ทุกที่ทุกเวลา คล้ายกับโลโก้ปลาวาฬบันทุกแอพพลิชั่นของดอกเกอร์นั่นเอง) โดยที่ Docker ถือเป็นเวอร์ชวลไลเซชั่นที่ทำงานในระดับ OS-Level กินทรัพยากรน้อยมากเมื่อเทียบกับVirtual Machine หรือ VM ที่ใช้งานในปัจจุบัน(ต้องจอง cpu, ram, hdd) ผู้ใช้งาน Docker สามารถเรียกใช้งานแอพลิเคชั่นที่ต้องการโดยใช้เวลาเพียงไม่กี่นาที ไม่ต้องปรับแต่งคอนฟิกมากมายอย่างเช่นในอดีตอีกต่อไป (เสมือนเราเดินเข้า 7-Eleven เมื่อตอนที่หิว)

Docker ทำให้ผู้ดูแลระบบและนักพัฒนาโปรแกรม (system admin & coders) สามารถพัฒนาแอพลิชั่นตามที่ต้องการ โดยการเลือกใช้(หยิบ)ในตู้คอนเทนเนอร์ที่มีการจัดสรรไว้อย่างเป็นระเบียบ สามารถรองรับเซิร์ฟเวอร์ประเภทต่างๆ ไม่ว่าจะเป็น Linux อาทิ centos, ubuntu, debian, fedora หรือ Windows รวมทั้งแพลตฟอร์มกลุ่มเมฆ และทูลสำหรับทำโครงสร้างพื้นฐานด้านสารสนเทศ อาทิ OpenStack Nova, OpenSVC, OpenShift, Google Compute Engine, Amazon Web Services , Microsoft Azure, Jenkins เป็นต้น สามารถอ่านรายละเอียด Docker เพิ่มเติมได้ที่ https://www.docker.com

ตัวอย่าง Operating-system-level virtualization ที่ทำงานในลักษณะเดียวกับ Docker
ตัวอย่าง Operating-system-level virtualization ที่ทำงานในลักษณะเดียวกับ Docker อาทิ เช่น
- OpenVZ (Linux)
- Linux-VServer (Linux)
- lmctfy (Linux)
- Parallels Virtuozzo Containers (Linux, Windows)
- FreeBSD Jail (FreeBSD)
- Solaris Containers (Solaris, OpenSolaris)
- WPAR - AIX Workload partitions (AIX)
- HP-UX Containers (SRP) (HP-UX)
- sysjail (OpenBSD, NetBSD)
- iCore Virtual Accounts (Windows)
- Sandboxie (Windows)

รู้จัก Docker กัน

ที่มา: https://www.youtube.com/watch?v=ZzQfxoMFH0U

Note.
VM = Virtual Machine เป็นเครื่องจักรกลเสมือน ตัวอย่างซอฟต์แวร์ VM อาทิ เช่น KVM, VMWare, VirtualBox, Xen, HyperV, Parallels เป็นต้น


ที่มา: http://en.wikipedia.org/wiki/Docker_(software)

ข้อแตกต่างของ Virtual Machines กับ Docker
- Virtual Machines ต้องอาศัยทำงานภายใต้ Guest OS ทำให้เครื่องกินทรัพยากรมาก หากตั้งหลาย Guest OS บนเครื่องเดียวกันเนื่องจากเราต้องมีการจอง
ขนาด CPU, RAM, HDD และทรัพยากรอื่นๆ
- Docker สามารถทำงานภายใต้ระบบ Host OS ได้เลยโดยอาศัย Docker Engine เป็นตัวช่วย ไม่ต้องจำลอง Guest OS อย่างเช่น Virtual Machines




ที่มา : https://www.docker.com/whatisdocker/
แสดงภาพของ Virtual Machines


ที่มา : https://www.docker.com/whatisdocker/
แสดงภาพของ Docker



พัฒนาการของการใช้งานระบบปฏิบัติการ
1. OS > Apps ** รันได้ OS เดียวเท่านั้น หากระบบเสียหายต้องติดตั้งใหม่ทั้งหมด (ในอดีต)
2. OS > VM + Guest OS1 + Apps | VM + Guest OS2 + Apps2 | VM Guest OS3 + Apps3 ** รันได้หลาย OS บนเซิร์ฟเวอร์เดียวกัน แยกไฟล์ images เป็นส่วนๆแบบอิสระ
3. OS > VM + Provisioner + Apps (ตัวจัดการ VM เช่น Vagrant, Puppet, Chef) ** ช่วยให้การจัดการ VM ทำได้ง่ายขึ้น เร็วขึ้น
4. OS > Operating-system-level virtualization (Docker) + Apps



Docker เหมาสำหรับใคร
1. ผู้ดูแลระบบเครือข่ายคอมพิวเตอร์ ที่ต้องการศึกษาระบบและนำไปติดตั้งในหน่วยงาน
2. Web Programmer ที่ต้องการทางลัดในการพัฒนาโปรแกรม
3. ครู/อาจารย์ที่สอนหลักสูตรด้านระบบเครือข่าย และการเขียนโปรแกรมใหม่ๆ
4. นักวิจัยที่ต้องการสร้างสรรค์งานวิจัย โดยใช้ตัว Docker เป็นฐาน หรือพัฒนา Apps มาใช้งานร่วมกับ Docker

เพื่อให้เห็นภาพยิ่งขึ้น ผู้เขียนได้ทดลองติดตั้ง Docker บนระบบลีนุกซ์ CentOS 7


ขั้นตอนการติดตั้ง Docker
1. ติดตั้งแพ็กเกจ Docker
[root@arnut ~]# yum install docker

2. สั่งเปิดบริการ Docker พร้อมกำหนดให้ทำงานตอนบู๊ตเครื่อง
[root@arnut ~]# systemctl start docker
[root@arnut ~]# systemctl enable docker
[root@arnut ~]# systemctl is-enabled docker
enabled

----Note.------------------------------------------------
สำหรับท่านที่ใช้ CentOS 6.x ให้ติดตั้งดังนี้
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install docker-io
service docker start หรือ /etc/init.d/docker start
chkconfig docker on
chkconfig --list docker - See more at: http://www.sysadmin.in.th/node/336#sthash.YlWjzlMU.dpuf
--------------------------------------------------------------

3. ตรวจสอบการทำงาน พร้อมทำการดึงไฟล์อิมเมจล่าสุดของ CentOS (Centos images Locally)
[root@arnut ~]# docker pull centos
Pulling repository centos
dade6cb4530a: Download complete
511136ea3c5a: Download complete
5b12ef8fd570: Download complete
Status: Downloaded newer image for centos:latest

4. ตรวจาสอบไฟล์อิมเมจ
[root@arnut ~]# docker images centos
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos centos7 dade6cb4530a 4 days ago 224 MB
centos latest dade6cb4530a 4 days ago 224 MB
centos 7 dade6cb4530a 4 days ago 224 MB

หรือ
[root@arnut ~]# docker images

5. ทำการรัน Docker Container ผ่านทางเชลสคริปต์ (ในที่นี้ทดสอบเป็น CentOS)
[root@arnut ~]# docker run -i -t centos /bin/bash
[root@de5fb998ae26 /]#

6. ตรวจสอบระบบปฏิบติการ
[root@de5fb998ae26 /]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)

[root@31cbbe777b8c /]# ls /
bin etc lib lost+found mnt proc run selinux sys usr
dev home lib64 media opt root sbin srv tmp var


ทดสอบระบบปฏิบัติการ CentOS

------------
- กรณีเป็น Docker Container Ubuntu สั่งเป็น
[root@arnut ~]# docker run -i ubuntu /bin/bash

---------------

7. ออกจาก Docker Container
[root@de5fb998ae26 /]# exit
exit
[root@arnut ~]#

8. ในกรณีต้องการหา Container based ที่เป็นระบบปฏิบัติการ Ubuntu, Debian, Fedora หรือ SuSE สามารถใช้คำสั่งดังนี้
[root@arnut ~]# docker search ubuntu
[root@arnut ~]# docker search debian
[root@arnut ~]# docker search fedora
[root@arnut ~]# docker search suse


ทดสอบคำสั่ง docker search ubuntu

9. กรณีต้องการตรวจสอบโปรเซสดูว่า containers ใดรันอยู่บ้างให้ใช้คำสั่ง
[root@arnut ~]# docker ps

10. ตรวจสอบเวอร์ชั่นของ Docker
[root@arnut ~]# docker version
Client version: 1.3.2
Client API version: 1.15
Go version (client): go1.3.3
Git commit (client): 39fa2fa/1.3.2
OS/Arch (client): linux/amd64
Server version: 1.3.2
Server API version: 1.15
Go version (server): go1.3.3
Git commit (server): 39fa2fa/1.3.2

การยกเลิกการติดตั้ง Docker
[root@arnut ~]# systemctl stop docker
[root@arnut ~]# systemctl disable docker
[root@arnut ~]# yum remove docker -y

---
แหล่งข้อมูลสำหรับศึกษาเพิ่มติม
- Operating-system-level virtualization
- Docker official website
- Docker Official Images on Git
- Docker (software) on WikiPedia
- Docker corner on CentOS.org
- Official Repositories

--
Write by Aj.Arnut Ruttanatirakul
(c) 2015 SysAdmin Knowledge
http://www.sysadmin.in.th
February,12 2015