ก่อนอื่นเลยต้องขอบคุณครูของฉันก่อน ที่อุส่าห์สอน เรื่อง Docker Docker เป็นตัวจัดการแอพ โปรแกรมที่เราอยากได้มาให้เรา ไม่ว่าจะอยู่ที่ไหน แค่เราใช้คำสั่งให้ถูกต้อง Docker ก็จะไปค้นหามาให้เรา
การทำ Docker Container เริ่มต้นจาก เป็น Docker File มาเป็น Docker Image และสุดท้ายถูกอัดเป็น Docker Container ในที่สุดและถูกเก็บไว้ที่ Docker Hub ที่เป็นที่เก็บของ Docker
เริ่มต้นเลยเราจะสร้าง Project มาหนึ่งตัว เพื่อที่จะ Build เป็น Docker Containner เปิด Terminal ขึ้นมาเลยและใช้คำสั่งนี้เพื่อสร้างโฟลเดอร์ชื่อ Docker เอาไว้เก็บเฉพาะ Project ที่เกี่ยวกับ Docker และใช้คำสั่งสร้างโฟลเดอร์ชื่อ todos ด้วย
mkdir [FolderName] แล้วกด Enter
จะได้ดังนี้
เมื่อเราเข้าไปในโฟลเดอร์ todos แล้วจะใช้คำสั่งนี้เพื่อ เปิดโฟลเดอร์ todos มันจะถูกเปิดด้วยโปรแกรม Visual Studio Code มาให้เรา
code .
จะเปิดออกมาได้แบบนี้
เปิด Terminal ขึ้นมาโดยกด command + J ด้วยคำสั่งนี้ จะสร้างไฟล์ package.json
npm init
เมื่อรันเสร็จแล้วนเราจะได้ ไฟล์ package.json มาหนึ่งไฟล์แบบนี้
และเราจะติดตั้ง Express ลงใน Project ด้วยคำสั่งนี้ (Express เป็น library ใช้เพื่อเขียน ResAPI)
npm install express --save
จากนั้นสร้างไฟล์ index.js และเขียนโค้ดนี้ลงไป เพื่อเรียกใช้งาน port :80 เวลาเรียกใช้ที่ Browser จะเป็น localhost เป็น port default และที่หน้าเว็บจะแสดงคำว่า Hello Wold สีเขียว
บันทึกแล้วรันที่เครื่องของเราก่อน ด้วยคำสั่งนี้ และไปเปิด Browser จะเห็นดังด้านล่าง
node index.js
ต่อมาเราจะทำ port: /todos เพื่อแสดง id และชื่อ เป็นแบบ json เขียนเสร็จแล้วบันทึก Stop การรันด้วยการกด Control+C และรันใหม่อีกครั้ง
ดูที่ Browser ด้วยport : localhost/todos จะได้ดังนี้
ต่อไปเราจะทำการ Filter เอามาแสดงเฉพาะเลข id ที่เรากรอกลงไป เขียนเสร็จแล้วบันทึก Stop การรันด้วยการกด Control+C และลองรันใหม่อีกครั้ง
ดูที่ Browser ด้วย localhost/todos/1 จะได้ดังนี้
Project ของเราพร้อมที่จะ Build ขึ้นไปใช้บน Docker แล้วและที่สำคัญเราต้องเขียนคำสั่งเพื่อที่จะ Build ให้เป็น Docker Container เพื่อที่จะนำไปใช้ได้ และใกล้เคียงกับของจริงมากที่สุด ความสามารถของเจ้า Docker
ก่อนอื่นต้องสร้าง ไฟล์ขึ้นมาหนึ่งไฟล์ ชื่อว่า Dockerfile และเขียนโค้ดนี้ลงไป เตรียมสำหรับการ Build ติด Tage
คำสั่ง Build ติดแท็ก เพื่อให้ Docker รู้ว่ามีอยู่และสามารถนำไป Build เป็น DockerContainer
docker build -t todos:1.0.0 .
เราจะพบว่ามัน ติดปัญหาที่ บรรทัดที่ 6 ถามหา Repository field จึงต้องกลับไปแก้ไข ที่ไฟล์ package.json แล้วลอง Build ใหม่อีกรอบ
เรามาที่ไฟล์ package.json เพื่อที่จะเปิดใช้งานแบบ private ให้ใช้งานได้
แล้วสร้าง Folder มาเก็บไฟล์ index.js ที่เราสร้างไว้ เพราะตอนเราจะ Build ได้บอกว่ามีโฟลเดอร์ src อยู่ด้วย
และลอง Build ใหม่อีกรอบ ผลลัพธ์ที่ได้ เราได้ติดแท็กเรียบร้อย ต่อไปเราจะใช้คำสั่ง ของ Docker เพื่อดูว่ามี Image อะไรบ้าง ของสำคัญมาแล้ว
จากนั้นเราจะเข้าไปดูว่ามี Image Tag นี้หรือไม่ ปรากฏว่าคำสั่งที่เราสั่ง Build ได้ผลเพราะเราเห็น Tag แล้วที่ Repository ของ Docker
เมื่อได้แบบนี้เราจะ Build ให้เป็น Container ส่ะ จะได้นำไปใช้ได้
เพื่อความแน่ใจนเราจะเช็คดูอีกทีว่ามี Container todos จริงไหม ปรากฏว่ามีจ้าาาา งั้นๆๆ
ไปดูที่ Browser ทีที่ port : localhost:8080 กัน และ port อื่นๆ ด้วย
จากที่เราจะสร้าง Project และ Build ให้เป็น Docker Container ผลลัพธ์ที่ได้ก็คือ ไม่ได้หน้าไม่ต่างที่เขียนที่เครื่อง local เลย เรียกได้ว่าใกล้เคียงกันมาก อย่างกะแกะ ต่อไปเราจะทำ Service เพื่อให้เจ้า Kube ทำงานให้เราแทน เวลาที่เรามีการแก้ไข Project เอาไว้ เท่านี้ก่อน ยาวเกินแล้ว เดี๋ยวเรา งง เอง 55+
…………………….….Thank You My Teacher ^_^……………………………
!! หมายเหตุ !! คำสั่งกันลืม
คำสั่ง Build ติดแท็ก
docker build -t todos:1.0.0
คำสั่งติดตั้ง minikube
brew install minikube
คำสั่งดู Docker Image
docker image ls
docker image ls -a
คำสั่งลบ Docker Image
docker image rm 314918ddaedf
คำสั่งดู Docker Container
docker container ls
docker container ls -a
docker container ls -aq (ดูเฉพาะเลข ID และมัดรวม)
คำสั่งลบ Docker Container
docker container rm 0b816e154d1a
docker container rm $(docker container ls -aq) ลบทั้งหมดหลังจากมัดรวมกันแล้ว
คำสั่งหยุดการทำงานของ Docker Container
docker container stop 0b816e154d1a
docker container stop $(docker container ls -aq) หยุดทั้งหมดหลังจากมัดรวมกันแล้ว
คำสั่งรัน Docker Container (-p คือ Port , — name คือ การตั้งชื่อ , ชื่อ Repository , สุดท้ายเป็นชื่อ Tag)
docker run -d -p 8080:80 --name api-sit todos:1.0.0
คำสั่งเข้าไปดูรายละเอียดข้างใน Container
docker exec -it c83d586b8d95 sh (เข้าไปดูใน Container นี้)
ls (ขอดูรายละเอียด)
cd .. (การเข้าไปดู)
exit (ออกมา)
คำสั่ง apply run on kube
apply -f todo-api-sit.service.yml