การติดตั้ง Docker เพื่อเตรียมทำ Lab
ความต้องการเบื้องต้น:
- ระบบปฎิบัตรการ : Windows 7 /10
- Internet Access
- พื้นฐานการใช้งาน Linux เบื้องต้น
1. ติดตั้ง Docker บน Windows
Downlod และ ติดตั้ง : https://store.docker.com/editions/community/docker-ce-desktop-windows
( กรณีต้องการศึกษา Docker สามารถทำความเข้าใจเบื้องต้นได้ที่นี่ )
เมื่อติดตั้งเสร็จให้เปิด Command Prompt เพื่อทดสอบ Docker โดยพิมพ์
docker info
ถ้าไม่ขึ้น error แสดงว่า Docker ใช้งานได้ …. ยินดีด้วย คุณได้ไปต่อ ^_^
2. Run Linux Container จาก Docker
เนื่องจาก Hadoop จะทำงานบนระบบปฎิบัติการ Linux ดังนั้นเราจึงต้อง run Linux บน Docker โดยในที่นี้เราจะใช้ Docker image ของ ซึ่งเป็น Ubuntu ที่เป็น version ที่ติดตั้ง ssh เอาไว้แล้วเพื่อสะดวกในการ ssh เข้าไปทำงาน
docker pull rastasheep/ubuntu-sshd
รอจนเสร็จแล้วทำการตรวจสอบว่ามี images ที่เครื่องแล้วหรือยัง
docker images
ทำการ start ubuntu container
docker run -d -p 2222:22 --name ubuntu rastasheep/ubuntu-sshd
คำสั่งนี้จะทำกา run container ของระบบปฏิบัติการ Ubuntu ชื่อว่า “ubuntu” โดยมีการ map port 22 SSH จาก container มาที่เครื่องเราที่ port 2222 (-p 2222:22)
ตรวจสอบการทำงานของ ubuntu container
docker ps
ถ้า STATUS ขึ้นว่า “Up … minutes” , และ NAMES = ubuntu แสดงว่าเครื่องเรา จำลอง Ubuntu Linux เรียบร้อยแล้วพร้อมที่จะทำในขั้นตอนการลง Hadoop ต่อไป
ใครผ่านถึงขั้นตอนนี้ข้ามไปข้อ 3 ได้เลย ครับ
— — — สำหรับคนที่ติด error เท่านั้น!!!! — — —
ลอง stop container
docker stop ubuntu
ลองลบ docker process
docker rm -f ubuntu
แล้วเริ่ม start ubuntu container (docker run -d …) ใหม่ครับ
3. วิธีการดู IP Address ของ Docke rContainer
ก่อนที่เราจะเชื่อมต่อเข้าไปใช้ Container Docker เราต้องทราบ IP address ซึ่งในที่นี้จะมี 2 IP คือ
- Container IP คือ IP ที่ใช้ภายใน Docker Container
- Host IP คือ IP ของระบบปฎิบัติการที่ run Docker ดังแสดงได้ดังรูปที่ 1
ซึ่งวิธีการดู IP ของทั้งสองนั้นสามารถดูได้ดังนี้
- Container IPหาได้จากคำสั่ง
docker inspect ubuntu
เลื่อนหาข้อความ “IPAddress” ในที่นี้ Container IP คือ 172.17.0.2
- Host IP หาได้จากคำสั่ง
ipconfig
ซึ่ง Host IP ในที่นี้คือ 10.0.75.1
กรณีหา Host IP ไม่พบให้ลองใช้คำสั่ง
docker-machine ip
เมื่อเราทราบทั้งสอง IP แล้วก็ “จด” ไว้ซึ่งต่อไปจะถูกนำไปใช้ในบทความต่อไปครับ
Host IP = 10.0.75.1
Container IP = 172.17.0.2
4. ทดสอบเชื่อมต่อใช้งาน Ubuntu container ด้วย Putty (ผ่าน SSH)
ต่อไปเราจะใช้ putty ทำการเชื่อมต่อเข้าไปใช้ระบบปฎิบัติการ ubuntu ที่ run อยู่ภายใต้ Docker container ดังแสดงดังรูปที่ 2
ทำการ download putty ที่นี่ และติดตั้งให้เรียบร้อย
เปิด Putty ใส่
Host IP = 10.0.75.1
Port = 2222
โดยจริงๆ แล้ว Container IP คือ 172.17.0.2 และ Port SSH คือ 22 แต่เนื่องจากเราอยู่ที่ Host ที่ใช้ IP 10.0.75.1 และ ได้ map port 22 จาก container มายัง host ที่ port 2222 (ระบุ parameter -p 2222:22 ในคำสั่งตอน docker run … ในข้อ 2)
กด Open
แล้วกด Yes แล้ว login ด้วย
user: root
password: root
ถ้า login สำเร็จ เราจะได้ shell ของ ubuntu ที่ run บน Docker Container ให้ลองพิมพ์
cat /etc/*release
ซึ่งจะเห็นว่าตอนนี้เราเข้าไปใช้งาน Ubuntu version 14.04 ที่ run อยู่ใน Docker Container
5. สร้าง User สำหรับการใช้งาน
เข้า Putty ด้วย user: root ตามที่ได้อธิบายไปใน “ตอนที่ 1” ทำการสร้าง user สำหรับใช้งานซึ่งเราจะไม่ใช้ user root เนื่องจากสิทธิ์สูงมาก
สร้าง ubuntu user : “tan” , ใส่ password เป็น “tan”
useradd tan
passwd tan
สร้าง home directory และใส่ user tan เข้าสู่ group sudo
mkhomedir_helper tan
usermod -aG sudo tan
จากนั้นให้ทำการปิด putty และ re-login ด้วย user: tan
user : tan
password : tan
แก้ไขให้เรียก Bash shell หลังจาก Login เพื่อให้ง่ายในการกด keyboard เรียกคำสั่งต่างๆ
vi .profile
เพิ่มคำสั่ง bash ต่อท้าย file .profile
bash
Note : จบขั้นตอนนี้ผมได้ทำการ Save Docker image ไว้ที่ →
drtan/ubuntu-lab:setup
6. ติดตั้ง Java 8
sudo apt-get updatesudo apt-get install software-properties-commonsudo add-apt-repository ppa:webupd8team/java -y sudo apt-get updatesudo apt-get install oracle-java8-installer
เลือก Yes 2 ครั้ง จากนั้นลองทดสอบเรียก Java โดย
java -version
Note : จบขั้นตอนนี้ผมได้ทำการ Save Docker image ไว้ที่ →
drtan/ubuntu-lab:java8
สรุป Command
#Run Docker
docker run -d -p 2222:22 --name ubuntu rastasheep/ubuntu-sshd#Stop Docker
docker stop ubuntu#kill docker process
docker rm ubuntu
สรุป
มาถึงจุดนี้เราก็ได้เตรียม Docker เพื่อพร้อมที่จะใช้งานเพื่อทำ Lab ต่อไป