แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ผู้ดูแลระบบ

หน้า: 1 [2] 3 4 ... 11
16
 :YoYoXiXi1: :YoYoXiXi1:
เทคนิคการเขียน การวิจัยในชั้นเรียน

https://drive.google.com/file/d/1IxQzPiu3tEsUwE-nL7lM72CfLZgGS7NH

17
บันทึกเยี่ยม / ฐานคำนวณเงินเดือนครูแบบเปอร์เซนต์
« เมื่อ: วันที่ 20 เมษายน 2019, เวลา 20:34:10 pm »
ฐานคำนวณเงินเดือนครูแบบเปอร์เซนต์

18
 
รู้จัก Container มันคืออะไร แตกต่างจาก Virtualization อย่างไร?
ช่วงหลังเราได้ยินชื่ออย่าง Docker, Container, Kubernetes, Orchestration กันบ่อยขึ้นมาก โดย Blognone เองก็เคยนำเสนอข่าวในหัวข้อเหล่านี้อยู่บ่อยครั้ง แต่ก็ยังมีความสับสนในเรื่องนี้อยู่มาก เพราะเป็นแนวคิดที่ยังค่อนข้างใหม่และมีความแตกต่างจากระบบเซิร์ฟเวอร์แบบเดิมๆ สูง
บทความชุดนี้จึงมีเป้าหมายเพื่ออธิบายและทำความเข้าใจกับแนวคิดเหล่านี้ ใครที่รู้เรื่องนี้ดีอยู่แล้วสามารถข้ามไปได้เลยครับ
No Description
ภาพโดย Chanaka จาก Pexels
 Virtualization มีข้อจำกัด คำว่า "คอนเทนเนอร์" (container) เป็นเทคนิคการจัดการแพ็กเกจซอฟต์แวร์ประเภทหนึ่ง ที่มีความสัมพันธ์กับเทคนิค virtualization ที่อยู่ในโลกองค์กรมานาน ดังนั้นการอธิบายว่าคอนเทนเนอร์คืออะไร จึงมักถูกเปรียบเทียบว่าแตกต่างกับ virtualization อย่างไร
เทคนิค virtualization คือการสร้างคอมพิวเตอร์เสมือน (virtual machine หรือ VM) ที่มีทั้งซีพียู แรม สตอเรจ ระบบปฏิบัติการ ฯลฯ ขึ้นมารันบนคอมพิวเตอร์จริงๆ อีกทีหนึ่ง โดยตัวระบบปฏิบัติการของคอมพิวเตอร์เสมือน (Guest OS) จะไม่รู้ว่าตัวเองรันอยู่บน VM แต่เข้าใจว่ารันอยู่บนฮาร์ดแวร์คอมพิวเตอร์จริงๆ
วิธีการนี้ทำให้เกิดการแยกส่วน (isolation) ระหว่าง VM แต่ละตัวอย่างสมบูรณ์ สามารถรันระบบปฏิบัติการที่แตกต่างกันระหว่าง Guest OS กับ Host OS ได้ แต่ข้อเสียคือใช้ทรัพยากรซ้ำซ้อน ทำงานช้า เปลืองพื้นที่เก็บ OS และซอฟต์แวร์ต่างๆ ที่มักจะใช้เหมือนกันใน VM ทุกตัว
No Description
ภาพประกอบจาก Docker
 Container สร้างมาเพื่อแก้ไขข้อจำกัดของ Virtualization คอนเทนเนอร์จึงถูกสร้างขึ้นมาเพื่อแก้ปัญหาข้างต้น โดยมีฮาร์ดแวร์และ OS เพียงชุดเดียวกัน ลดความซ้ำซ้อนของการใช้ทรัพยากรลง ส่วนตัวแอพพลิเคชันและซอฟต์แวร์ซึ่งเป็นจุดที่แตกต่างกันไปก็จะมี "container" (เทียบได้กับ VM) มาครอบเพื่อแบ่งส่วนทรัพยากรไว้ไม่ให้ยุ่งกัน
จุดเด่นของคอนเทนเนอร์จึงเป็นเรื่องการใช้ทรัพยากรที่น้อยกว่า virtualization มาก อิมเมจของคอนเทนเนอร์อาจมีขนาดเพียงกี่ไม่กี่สิบ MB ในขณะที่อิมเมจของ VM ต้องใช้พื้นที่ระดับหลาย GB นอกจากนี้ ระยะเวลาที่ใช้บูต, พลังซีพียูและปริมาณแรมที่ต้องใช้ ก็ลดลงตามไปด้วย ส่งผลให้เซิร์ฟเวอร์หนึ่งเครื่องสามารถยัดคอนเทนเนอร์จำนวนมากกว่าการรัน VM ที่ให้ผลแบบเดียวกันถึง 2-3 เท่าตัว
บางครั้ง คอนเทนเนอร์ถูกเรียกชื่อในทางเทคนิคว่า Operating-system-level virtualization หรือการสร้าง VM ที่ระดับ OS โดยเราไม่ต้องสร้างเครื่องคอมพิวเตอร์เสมือนขึ้นมาทั้งตัว
ข้อเสียของคอนเทนเนอร์ก็ย่อมเป็นความยืดหยุ่นที่น้อยกว่า virtualization แบบดั้งเดิม โดยเฉพาะไม่สามารถใช้ OS ที่แตกต่างกันระหว่าง Guest และ Host ได้ (เพราะจุดเด่นของคอนเทนเนอร์คือการแชร์ OS ก็อปปี้เดียวกัน)
No Description
ภาพจาก Docker
 ประวัติย่อของ Container แนวคิดของคอนเทนเนอร์ไม่ใช่เรื่องใหม่ ในโลกของยูนิกซ์เกิดแนวคิดนี้ขึ้นมาตั้งแต่ปี 2000 จากแนวคิด jails ของ FreeBSD จากนั้นในปี 2004 ระบบปฏิบัติการ Solaris ของบริษัท Sun Microsystems ก็มีฟีเจอร์แบบเดียวกันโดยใช้ชื่อว่า Zones (หรือ Solaris Containers) ฝั่งลินุกซ์เองก็นำไอเดียนี้มาสืบสานต่อในโครงการอย่าง OpenVZ หรือ LXC (Linux Containers)
แต่คอนเทนเนอร์กลายมาเป็นเรื่องแพร่หลายในวงกว้างจาก Docker ที่เริ่มต้นในปี 2013 ซึ่งช่วงแรกยังอิงอยู่บนโครงการยุคก่อนหน้าอย่าง LXC หรือ libvirt แต่ภายหลัง Docker ก็พัฒนาส่วนต่างๆ ขึ้นมาเอง (libcontainer) จนสมบูรณ์พร้อมใช้งาน ทำให้แนวคิดคอนเทนเนอร์ "จุดติด" และได้รับการยอมรับในวงการอย่างรวดเร็ว มีตัวอย่างการใช้งานจากบริษัทใหญ่ๆ อย่าง...เกิลที่พัฒนาฟีเจอร์ของ Google Compute Engine ให้รองรับอย่างรวดเร็ว
ถึงแม้ Docker จะถูกสร้างขึ้นมาเพื่อลินุกซ์ แต่ความนิยมของมันทำให้ระบบปฏิบัติการฝั่งวินโดวส์ ทำให้ไมโครซอฟท์เข้ามาร่วมวงตั้งแต่ปี 2014 และสำเร็จลุล่วงใน Windows Server 2016
ความสำเร็จของ Docker ทำให้เกิดคู่แข่งขึ้นบ้าง เช่น Rocket หรือ rkt ของบริษัท CoreOS (ปัจจุบันถูก Red Hat ซื้อไปแล้ว) ทำให้โลกคอนเทนเนอร์แยกออกเป็นสองส่วน แต่ภายหลังก็หาทางออกได้ ด้วยการออกมาตรฐานกลางภายใต้การดูแลของ Open Container Initiative (OCI) (ภายหลังยังพัฒนาต่อมาเป็นโครงการ containerd และ runc ซึ่งจะไม่กล่าวถึงในที่นี้)
No Description
ภาพจาก Docker
 ตัวอย่างการใช้งาน Container รูปแบบการนำคอนเทนเนอร์ไปใช้งานมีหลากหลาย แต่ที่พบบ่อยคือการนำแอพพลิเคชันองค์กรในแบบเดิมๆ (ซึ่งมักเป็นแอพที่เขียนด้วยเทคโนโลยียุคก่อนอย่าง Java, .NET หรือ PHP) มาใส่ไว้ในคอนเทนเนอร์ เพื่อมารันบนโครงสร้างพื้นฐานยุคใหม่ที่เป็นคลาวด์ แทนที่การใช้เซิร์ฟเวอร์แบบดั้งเดิมที่เริ่มล้าสมัย ช่วยให้การย้ายขึ้นคลาวด์ราบรื่นกว่าเดิม
นอกจากนี้ เทคโนโลยีคอนเทนเนอร์ยังช่วยแก้ปัญหาเรื่อง system dependency ระหว่างแอพแต่ละเวอร์ชัน แต่ละสถานะ (เช่น dev/test/production) เพราะทุกอย่างที่จำเป็นถูกรวมมาในอิมเมจให้หมดแล้ว มันจึงมีประโยชน์ในแง่กระบวนการเปลี่ยนโค้ดที่เขียน ไปสู่การดีพลอยใช้งานจริงบนเซิร์ฟเวอร์ปลายทาง หรือที่เราเรียกกันว่า CI/CD อีกด้วย
การใช้งานคอนเทนเนอร์อีกแบบหนึ่งที่พบบ่อยในช่วงหลัง คือการแยกแอพพลิเคชันยุคเดิมที่เขียนมาเป็นก้อนใหญ่ๆ (monolithic) ให้กลายเป็นไมโครเซอร์วิส (microservice) ที่มีขนาดเล็กลง จัดการได้สะดวกขึ้น สามารถสเกลเซอร์วิสบางตัวหากต้องการรับโหลดมากขึ้น
การนำคอนเทนเนอร์ของแอพพลิเคชันที่แยกเป็นไมโครเซอร์วิส ไปรันบนโครงสร้างพื้นฐานยุคคลาวด์ที่สเกลตัวเองได้ง่ายขึ้น จึงมีความซับซ้อนสูงตามไปด้วย และกลายเป็นหน้าที่ของซอฟต์แวร์ที่เรียกว่า orchestration (เหมือนวาทยากรนำวงออเคสตร้า) อย่าง Kubernetes หรือ Apache Mesos ที่จะกล่าวถึงในบทความตอนต่อไป
ข้อมูลอ้างอิงจาก
      

19
DOCKER เบื้องต้น / Docker คืออะไร ใช้งานอย่างไร
« เมื่อ: วันที่ 20 เมษายน 2019, เวลา 08:59:42 am »

Docker คืออะไร
Docker คือ engine ตัวหนึ่งที่มีการทำงานในลักษณะจำลองสภาพแวดล้อมขึ้นมาบนเครื่อง server เพื่อใช้ในการ run service ที่ต้องการ มีการทำงานคล้ายคลึงกับ Virtual Machine เช่น VMWare, VirtualBox, XEN, KVM แต่ข้อแตกต่างที่ชัดเจนคือ Virtual Machine ที่รู้จักกันก่อนหน้านี้นั้น เป็นการจำลองทั้ง OS เพื่อใช้งานและหากต้องการใช้งาน service ใดๆ จึงทำการติดตั้งเพิ่มเติมบน OS นั้นๆ แต่สำหรับ docker แล้วจะใช้ container ในการจำลองสภาพแวดล้อมขึ้นมา เพื่อใช้งานสำหรับ 1 service ที่ต้องการใช้งานเท่านั้น โดยไม่ต้องมีส่วนของ OS เข้าไปเกี่ยวข้องเหมือน Virtual Machines อื่นๆ ตัวอย่างดังรูปDocker นั้น เป็นที่รู้จักกันอย่างแพร่หลายในช่วง 1–2 ปีที่ผ่านมานี้ เนื่องจากสามารถใช้งานได้อย่างสะดวกและตอบสนองความต้องการของ ผู้พัฒนาโปรแกรม (Developer) หรือ ผู้ดูแลระบบ (System admin)
Docker image คืออะไร
Docker image เป็นเหมือนตัวต้นแบบของ container ซึ่งภายในจะประกอบด้วย application ต่างๆ ที่มีการติดตั้งไว้เพื่อใช้งานสำหรับ service นั้นๆ รวมทั้งมีการ config ค่าต่างๆ ไว้เรียบร้อยแล้ว จากนั้นก็นำมาสร้างเป็น docker image บน registry เพื่อนำใช้งาน ทั้งนี้ผู้ใช้งานสามารถยังสร้าง docker image สำหรับใช้งานเองได้อีกด้วย
Docker container คืออะไร
Docker container สามารถมองได้เสมือนกล่อง ซึ่งนำ docker image มาติดตั้ง เพื่อให้สามารถใช้งาน service ที่ต้องการจาก image นั้นๆ ได้ โดยใน container แต่ละตัวจะมีการใช้งาน RAM, CPU, ไฟล์ config ต่างๆ เป็นของแต่ละ container เอง และยังสามารถสั่ง start, stop ได้ที่ container นั้นๆ อีกด้วย
ความน่าสนใจของ docker
  • Docker engine สามารถใช้งานได้บนหลาย platform ทั้งบน Linux, Mac และ Windows
  • Docker มีขนาดเล็ก สามารถใช้งาน และติดตั้งได้อย่างรวดเร็ว และสะดวกในการ start / stop หรือแม้แต่การย้ายไปใช้งานสำหรับเครื่อง server อื่นที่มีการ run docker engine ก็สามารถทำได้โดยไม่ซับซ้อน
  • ผู้ใช้งาน docker ไม่จำเป็นต้องติดตั้ง OS อีกครั้งเพื่อติดตั้ง container รวมทั้งไม่จำเป็นต้อง config เพิ่มเติมในส่วนที่ไม่จำเป็นอีกด้วย
  • Docker มีความต้องการในการใช้ CPU, RAM และพื้นที่น้อยกว่า Virtual Machine ทั้งนี้ในทรัพยากรที่มีเท่ากัน docker สามารถใช้งาน container ได้มากกว่า Virtual Machine
  • เนื่องจากผู้ใช้งาน สามารถสร้าง docker image ได้เอง จาก dockerfile ดังนั้นการใช้งาน docker ยังช่วยลดปัญหาสภาพแวดล้อมที่ต่างกัน ที่มักพบเมื่อบาง application สามารถทำงานได้บน development server แต่ไม่สามารถใช้งานบน production server ได้
  • Docker ยังมี docker registry ซึ้งผู้ใช้งานสามารถเลือก pull image ต่างๆ ที่มีการสร้างไว้ให้แล้วมาใช้งาน โดยมี Docker Hub เป็น registry หลักในการเรียกใช้ image
ข้อดีของ Docker เมื่อเทียบกับ VMs
  • Docker ไม่ต้องเสียเวลาในสร้าง OS ใหม่ และการ config แต่ละ OS เลย
  • Docker เบาและเร็วกว่ามาก ไม่ว่าจะเป็น start stop และ restart เพราะมันใช้ OS, CPU และ RAM ร่วมกันกับ Host OS
  • Docker สามารถรัน container ได้มากกว่า VMs ในเครื่องที่มีทรัพยากรที่เท่ากัน
  • Docker มีระบบ Registry ทำให้สามารถเคลื่อนย้าย หรือติดตั้ง Container ได้สะดวก และรวดเร็วกว่ามาก
  • Containers มันรันอยู่บน Docker Engine ทำให้ไม่ต้องสนใจว่า Infrastructure หรือ Host OS ว่าจะเป็นอะไรยังไง ทำให้หมดปัญหาว่าเครื่อง Dev รันได้ แต่เครื่อง Production มันรันไม่ได้บ้าง หรือเครื่อง Dev แต่ละคนติดตั้งเครื่องมือคนละเวอร์ชันกัน เราก็ build container เป็น image แล้วส่งในคนในทีมใช้ ก็หมดปัญหาแล้ว

การติดตั้ง DockerDocker สามารถติดตั้งได้ทั้ง Linux, Mac (OS X 10.11 or newer macOS)และ Windows (Windows 10 Pro 64bit) ซึ่งสำหรับ Mac และ Windows รุ่นต่ำกว่านั้นต้องติดตั้งโดยใช้ Docker Toolbox แทน โดยเราจะใช้ Docker Toolbox เนื่องจากผมใช้ window 8ติดตั้ง Docker ToolboxDocker Toolbox จะประกอบด้วย
  • Docker CLI client ไว้สำหรับรันคำสั่ง Docker Engine (docker) เพื่อสร้าง images และ containers
  • Docker Machine (docker-machine) เพื่อสร้าง Linux VM ตัวเล็กๆ ที่มี Docker Engine รันอยู่
  • Docker Compose สำหรับรันคำสั่ง docker-compose
  • Kitematic ที่เป็น Docker GUI
  • Docker QuickStart shell ที่มีการทำ preconfigured สำหรับ Docker command-line environment ไว้แล้ว
  • Oracle VM VirtualBox
Docker ConceptsImages
  • images จะเป็น read only templates ที่เอาไว้สร้าง containers
  • images จะสร้างโดยใช้คำสั่ง docker build ซึ่งใครๆ ก็สามารถสร้างได้
  • images นึงๆ จะประกอบด้วยชั้น (layer) ของ images อื่นๆ
  • images จะถูกเก็บไว้ที่ Docker registry
Containers
  • ถ้าเปรียบ images เป็น class แล้ว containers ก็จะเป็น instance ของ class นั้นๆ (runtime object)
  • containers จะถูกสร้างมาจาก images ซึ่งภายใน container จะมี binaries และ dependencies ทั้งหมดที่จำเป็นในการรันโปรแกรมที่ต้องการ
Registries and Repositories
  • registry คือที่ที่เอาไว้เก็บ images
  • เราสามารถสร้าง registry เองก็ได้ หรือจะใช้ public registry ของ Docker ที่ชื่อ DockerHub ก็ได้
หน้าตาของ Docker Hub
  • ภายใน registry จะมี repositories ที่เอาไว้จัดเก็บ images แต่ละตัว
  • Docker repository แต่ละอันคือที่รวบรวม images ตัวเดียวกัน แต่ต่างเวอร์ชัน แยกโดยใช้ tags

ลองสร้าง Hello World Docker Container
  • ให้เปิดเบราว์เซอร์ไปที่ https://hub.docker.com/ แล้วสมัครสมาชิกให้เรียบร้อยนะแล้วก็ และค้นหา busybox
  • เลือก repository ของ busybox ที่เป็น offical ข้างในจะแสดงรายละเอียดวิธีการใช้งาน https://hub.docker.com/_/busybox/
  • เปิด Docker Quickstart Terminal เปิดครั้งแรกก็รอก่อนนะครับมันจะ Initailize โปรแกรมแปบนึง
หน้าตาของ Docker Terminal
  • พิมพ์คำสั่ง docker images เพื่อดูรายการ images ทั้งหมดที่เรามี จะพบว่าตอนนี้ยังไม่ images ใดๆ
docker images
  • พิมพ์คำสั่ง docker run busybox echo "hello world"คำสั่งนี้เอาไว้สร้าง container จาก image ชื่อ busybox โดยปกติจะพิมพ์
docker run busybox:1.26.2 echo “hello world”
ที่ระบุ tag เป็น 1.26.2 (แต่ถ้าไม่ระบุ tag จะใส่ tag เป็น latest เสมอ) ซึ่งถ้าเรายังไม่มี image ตัวนี้ Docker จะทำการ pull มาจาก registry ให้ ตามด้วยคำสั่งที่จะใช้งานคือให้พิมพ์คำว่า hello world ออกมา รูปแบบคำสั่ง docker run repository:tag command [arguments] รายละเอียดเพิ่ม ที่นี่
  • การรัน Docker Container ใน interactive mode ทำได้โดยการใช้ -i flag และใช้ -t เพื่อสร้าง pseudo-TTY เพื่อแสดง input และ output ตัวอย่าง docker run -i -t busybox และลองสร้างไฟล์ a.txt ถ้าต้องการออกจากโหมดนี้ใช้คำสั่ง exit Docker จะ shutdown container นี้ไป
  • ถ้าลองรัน docker run -i -t busybox อีกรอบ และ ls ดูจะพบว่าไม่มีไฟล์ a.txt เนื่องจากทุกครั้งที่ใช้ docker run จะเป็นการสร้าง container ใหม่เสมอ


ใช้งาน Docker Container
  • รัน container ใน detached mode
  • การใช้คำสั่ง docker ps
  • การกำหนดชื่อ container
  • การใช้คำสั่ง docker inspect
  • การใช้งาน port
  • การใช้คำสั่ง docker logs
Detached Modeความแตกต่างระหว่างการรัน container แบบ foreground (default mode) กับแบบ background หรือ detached mode (-doption) คือ เมื่อรันแบบ foreground หน้าจอ console จะแสดง process ของ container ตัวนั้นๆ อยู่ ไว้รับ input แสดง output รวมถึง standard error ดังนั้นจะใช้ console พิมพ์คำสั่งอื่นๆ ต่อไม่ได้ ซึ่งจะต่างจากแบบ background ซึ่งเมื่อรัน container แล้วจะแสดง container id ออกมาทางหน้าจอ console และสามารถพิมพ์คำสั่งอื่นได้ ส่วน process จะรันอยู่ใน background จนกว่าจะสั่งให้ container นั้นหยุดทำงานถ้าใช้ -d option หน้า console จะสามารถรับคำสั่งอื่นได้ ต่างจาก default ที่ต้องรอจนกว่า container จะหยุดทำงานการใช้งานคำสั่ง docker psคำสั่ง docker ps เอาไว้แสดงรายการ container ที่กำลังทำงานอยู่ทั้งหมดซึ่งถ้าต้องการให้แสดง container ทั้งหมด รวม container ที่หยุดการทำงานไปแล้วด้วยต้องใช้ -a option docker ps -a
กรณีที่ต้องการสร้าง container และต้องการให้ลบทิ้งเมื่อทำงานเสร็จให้ใช้ --rmoption ตัวอย่าง docker run --rm busybox sleep 1จะเห็นลอง docker ps -a แล้วไม่มี container id ที่รันคำสั่ง sleep 1 เลยการกำหนดชื่อให้กับ Containerเนื่องจากการสร้าง container แบบปกติ Docker จะทำการระบุชื่อของ container ให้เองแบบไม่ซ้ำกัน แต่เราสามารถระบุชื่อเองได้โดยใช้ — name optionตัวอย่างdocker run --name hello_world busybox echo "hello worlf"การดูรายละเอียดภายใน Containerทำได้โดยใช้คำสั่ง docker inspect id(container/image) เพื่อแสดงข้อมูล low level ของ container หรือ imageการทำ Docker Port Mappingโดยปกติ ports ที่ถูกเปิดไว้ภายใน container นั้นจะไม่สามารถเข้าใช้งานได้จาก Docker Host ได้ ซึ่งการที่จะเข้าใช้งานได้นั้นต้องทำ publish port ที่ต้องการก่อน ตั้งแต่ขั้นตอนการสร้าง container ขึ้นมา (docker run) ซึ่งสามารถทำได้ 2 วิธี
1. ใช้ -p host_port:container_port เพื่อผูก port ของ container เข้ากับ host
2. ใช้ -P ถ้าต้องการผูกทุก ports ของ container ที่ expose* ไว้ให้กับ host โดยฝั่ง host จะเป็นการ random port
*expose คือ การเปิด port ใน container ใช้ option --expose โดยสามารถระบุเป็น port หรือ เป็นช่วงของ port ก็ได้
ทดลองสร้าง container ของ Tomcat 8.0 ซึ่งมี port เป็น 8080 และต้องการผูกกับ host port ที่ 8888 โดยใช้คำสั่งนี้ docker run -it --rm -p 8888:8080 tomcat:8.0ทดสอบเข้า http://host-ip:8888 จากเบราว์เซอร์Docker logsในกรณีที่รัน container ใน detached mode เราสามารถดู log ของ container ตัวนั้นๆ ได้จาก docker logs ซึ่งมีรูปแบบคำสั่ง คือdocker logs [options] container_id

Docker Images
  • Docker Image Layers
  • สร้าง Docker Image จากคำสั่ง docker commit
  • สร้าง Docker Image ด้วย Dockerfile
  • Dockerfile In-depth
  • วิธีเอา Docker Image ขึ้น Docker Hub
Docker Image LayersDocker Image แต่ละตัวจริงๆ แล้วมันจะเป็นการอ้างอิงถึงรายการของ read-only layers ซึ่ง layers ที่ว่านี่ก็คือ stack image layer ที่ซ้อนต่อกันจาก base imageจากรูป image ตัวนี้ประกอบด้วย 3 stacked image layersวิธีการดูว่า Docker Image ที่เราใช้นั้นประกอบด้วย image อะไรบ้าง ดูได้จากคำสั่ง docker history ตัวอย่าง docker history busyboxbusyboxจะมี 2 layers คือ base image ที่ add file และ image ที่ 2 สั่งรัน bashdocker history ตัวอย่าง docker history busybox:1.26.2busybox:1.26.2 จะมี 2 layers คือ base image ที่ add file และ image ที่ 2 สั่งรัน bashโดยเมื่อสั่งสร้าง container แล้ว มันจะสร้าง Thin R/W layer หรือเรียกว่า container layer ขึ้นมาไว้ข้างบน โดยสามารถมีได้หลายตัวต่อ 1 image ซึ่งการเปลี่ยนทั้งหมดเช่น เขียนไฟล์ใหม่ แก้ไขไฟล์เดิม หรือลบไฟล์ทิ้ง จะเกิดขึ้นที่ container layer ของแต่ละตัว ซึ่งถ้าลบ container ทิ้งไป container layer ก็จะถูกลบไปด้วย โดยไม่ไปแก้ไขอะไรที่ image เลยการสร้าง Docker Imageมี 2 วิธีในการสร้าง Docker Image
1. commit สิ่งที่เราแก้ไขทั้งหมดใน Docker Container
2. สร้าง Dockerfileสร้าง Docker Images จากคำสั่ง docker commitตัวอย่างถ้าต้องสร้าง image ของ debian ที่มี git client ติดตั้งมาให้พร้อมใช้งาน ทำได้โดย
  • รัน container ของ debian ตัวที่เราจะใช้เป็น base image ก่อน ใช้คำสั่งdocker run -it debian:jessie
  • ทดลองรัน $ git จะพบว่าไม่สามารถทำงานได้ ให้ติดตั้ง git ก่อน $ apt-get update && apt-get install -y git เมื่อติดตั้งเสร็จลองรัน $ git อีกครั้งจะแสดง help ของ git ขึ้นมาแสดงว่าพร้อมใช้งานแล้ว ให้ออกมาจาก container ได้เลย
  • ใช้คำสั่ง Docker commit เพื่อบันทึกการแก้ไขทั้งหมดใน container layers ไปเป็น image ตัวใหม่ ใช้คำสั่งdocker commit container_id repository:tag
จะได้ image ตัวใหม่ ที่มีขนาดใหญ่กว่าเดิม เพราะติดตั้ง git เพิ่มเข้าไป
  • ลองสร้าง container จะ image ใหม่นี่ดู และทดลองใช้คำสั่ง git พบว่ามี git ติดตั้งมาพร้อมใช้งานเลย docker run -it rachata/debian_git:1.0
จะเห็นว่าใช้คำสั่ง git ได้แล้ว

วิธีการเอา Docker Image ขึ้น Docker Hub
  • เริ่มต้นให้สมัครบัญชีผู้ใช้งานก่อนที่ https://hub.docker.com/
ostlab คือ docker_hub_id โดย Repository จะเป็น docker_hub_id/repository name
  • เปลี่ยนชื่อ Repository ของ image ให้ถูกต้อง docker tag source_image[:tag]target_name[:tag] เช่นdocker tag rachata/debian_git:1.0 paretk/debian:1.0
  • ล็อกอินเข้า Docker Hub docker login --username=paretkและใส่ password
  • push image เข้า Docker Hub docker push paretk/debian:1.0
  • เมื่อกลับไปดูที่ https://hub.docker.com/ จะมี repository paretk/debian เพิ่มขึ้นมาแล้ว

จะเห็นว่ามี Paretk/debian อยู่cr: https://medium.com/@rachatatongpagdee/

20
DOCKER เบื้องต้น / ทำความรู้จัก Docker และ Software Container
« เมื่อ: วันที่ 19 เมษายน 2019, เวลา 21:10:27 pm »
Software Container คืออะไร
ก่อนจะพูดถึง Docker มาทำความเข้าใจเรื่อง Software Container กันก่อนครับ Software Container เป็น concept ของการสร้างสภาพแวดล้อมเฉพาะให้ซอฟต์แวร์ทำงานได้โดยไม่กวนกับซอฟต์แวร์ตัวอื่นบนระบบปฏิบัติการเดียวกัน เราสามารถเอา Container ไปรันในคอมพิวเตอร์หรือ Server เครื่องไหนก็ยังทำงานได้เหมือนเดิม โปรแกรมใน Container ยังทำงานได้ปกติไม่ผิดเพี้ยนจากเดิม ที่ผ่านมา Software Container มีการพูดถึงและมีการใช้งานกันมานานแล้ว อาทิ LXC (Linux Container), Solaris Containers, OpenVZ เป็นต้น แต่ไม่เป็นที่แพร่หลายมากนัก เนื่องจากมีการใช้งานค่อนข้างยุ่งยาก ปัจจุบันจึงได้เกิด Engine ที่ชื่อว่า Docker เป็นตัวจัดการ Container ที่ใช้งานได้ง่ายกว่าตัวอื่นๆทำให้ได้รับความนิยมในวงกว้าง และกำลังเข้ามามีบทบาทในกลุ่ม Developer และ DevOps หรือ System Admin มากขึ้นเรื่อยๆ
ความแตกต่างระหว่าง Virtual Machine กับ Container
  • Container จะเป็นการเพื่อจำลองและควบคุมสภาพแวดล้อมสำหรับการรันเฉพาะบาง Service เช่น Contianer ที่รัน nginx ใน ubuntu ก็จะบรรจุ Environment เหล่านี้ไว้เป็น 1 Contianer และรัน service เท่าที่จำเป็นต้องใช้เท่านั้น ทำให้ใช้ทรัพยากรน้อยกว่า Virtual Machine
  • Virtual Machine จะเป็นการจำลอง Environment มาทั้ง OS รันขึ้นมาเป็นเครื่อง Server 1 เครื่อง และมีการรัน service หลายๆ service ใน VM เดียวกัน ทำให้แต่ละ VM ต้องใช้ทรัพยากรจำนวนมาก
Docker คืออะไร
Docker ก็เป็น Software Container ที่ถูกพัฒนาขึ้นมาให้สามารถการจัดการ Container ได้ง่าย Image มีขนาดเล็ก แยกเป็นชั้นๆ สร้างแนวคิด build, ship, run ที่แต่ละรอบของการสร้าง Container เร็วขึ้นมาก ทำให้เป็นที่สนใจและกำลังแพร่หลายในกลุ่ม Developer และ System Admin
Docker มีชุดซอฟต์แวร์ให้ใช้งานดังนี้
  • Docker Engine เป็น Core หลักในการทำงาน
  • Docker Machine เป็นซอฟต์แวร์สำหรับสร้าง หรือ เซ็ตอัพเครื่องให้พร้อมสำหรับ container
  • Docker Swarm เป็นซอฟต์แวร์ที่เอาไว้เชื่อมต่อ Docker Engine หลายๆเครื่องมาเชื่อมต่อรวมกันให้เป็น cluster
  • Docker Compose เป็นซอฟต์แวร์สำหรับอำนวยความสะดวกในการรัน Container โดยสามารถสั่งรันหลายๆ Container ได้พร้อมๆกัน ตั้งค่าต่างๆ รวมไปถึงเชื่อมโยง Container ให้สามารถทำงานร่วมกันได้
ทำไมจึงควรใช้ Docker
1. กว่าจะติดตั้ง Software ในเครื่อง Server เพื่อรัน Applicaion ก็เสียเวลาไปกับการติดตั้งและ Configulation กันเป็นชั่วโมงแล้วหรือบางคนอาจจะเสียเวลาเป็นวันๆ
2. เครื่อง Development กับ Production ไม่เหมือนกัน เครื่อง Development ลงโปรแกรมไว้เวอร์ชันนึง แต่บนเครื่อง Production ลงไว้อีกเวอร์ชันนึง บางทีเขียน Code บนเครื่อง Development แล้วสามารถรันได้ปกติ แต่เมื่อเอา Code ขึ้น Production อาจจะทำให้ Code เกิด error หรือไม่สามารถทำงานได้
ปัญหาดังกล่าวจะไม่เกิดขึ้นถ้าเราใช้ Docker เพราะ Docker จะช่วยแพ็ค application เหล่านี้อยู่ในรูปแบบของ Container ซึ่งเราสามารถเอา Container ไปรันในเครื่องไหนก็ได้โดย Application ของเรายังทำงานได้ปกติไม่ผิดเพี้ยนจากเดิม ไม่ว่าจะไปรันในเครื่อง Development หรือบน Production Serverองค์ประกอบต่างๆของ Docker
  • Docker image
    คือต้นแบบของ Container ข้างในจะเป็น Linux ที่มีการติดตั้ง Application และ มีการ Configuration เอาไว้แล้ว ซึ่งเกิดมาจากการ build ไฟล์ Dockerfile ขึ้นมาเป็น image
  • Docker containercontainer จะถูกสร้างมาจาก Docker Image ที่เป็นต้นแบบ เกิดเป็น container จะได้ Service หรือ Application ที่สามารถเรียกใช้งานได้ทันที
  • Docker registry
    เราสามารถสร้าง Docker Image แล้วนำไปเก็บรวบรวมไว้บน server (ลักษณะเดียวกับการเก็บ Source Code ไว้บน Github) โดย Docker registry ณ ปัจจุบันก็มีให้เลือกใช้งานได้หลากหลายโดยมี Docker Hub เป็น Docker registry หลักในการเรียกใช้(pull) Docker Image และนอกจากนี้ยังมีผู้ให้บริการ docker registry เจ้าอื่นๆด้วย เช่น Gitlab, Quay.io, Google Cloud เป็นต้น
ส่วนใครที่กำลังจะศึกษาการใช้งาน Docker ก่อนเริ่มใช้งาน ควรจะศึกษาพื้นฐานการใช้งานและการติดตั้ง Software บน Linux มาก่อน คือต้องลองทำจริงติดตั้งเอง Config เองใน Linux ก่อนที่จะย้ายมาใช้ Docker ซึ่ง Docker ก็ทำงานอยู่ภายใต้ Linux เช่นเดียวกัน ถ้าหากเข้าใจพื้นฐาน Linux ดีแล้ว มาลองใช้งาน Docker กันครับ จากที่คุณเคยติดตั้งเป็นชั่วโมงหรือติดตั้งเป็นวันมันจะลดเหลือเพียงไม่กี่นาทีเท่านั้น และทำให้ Developer และ System Admin ทำงานได้ง่ายขึ้นกว่าเดิมมาก
ถ้าหากพร้อมที่จะใช้งาน Docker กันแล้ว มาลองใช้คำสั่งพื้นฐานของ Docker ในบทความนี้กันต่อเลยครับ
cr: https://medium.com/thothzocial-engineering/

21
DOCKER เบื้องต้น / การใช้งาน Docker เบื้องต้น
« เมื่อ: วันที่ 19 เมษายน 2019, เวลา 21:07:50 pm »
เริ่มต้นใช้งาน Docker
เริ่มจากเราต้องทำการติดตั้ง Docker กันก่อนครับ การติดตั้งก็ไม่ได้มีอะไรยุ่งยากเพียงแค่การดาวน์โหลด Package มาติดตั้ง เหมือนการติดตั้งโปรแกรมทั่วไปในคอมพิวเตอร์ ติดตั้งเพียงไม่กี่ขั้นตอนก็สามารถใช้งานได้เลย มีให้ติดตั้งทั้ง Mac, Windows, และ Linux มีวิธีติดตั้งตามลิงค์ด้านล่างนี้
  • Docker for Mac
  • Docker for Windows
    ถ้าหากใช้ Windows รุ่น Home จะไม่สามารถติดตั้ง Docker for Windows ได้ (เนื่องจากต้องใช้ Microsoft Hyper-V ในการรัน)
    ให้เปลี่ยนไปติดตั้ง Docker Toolbox แทน
  • Docker on Linux
คำสั่ง Docker เบื้องต้น
สำหรับการใช้งาน Docker นั้นจะต้องใช้คำสั่งในการสั่งงาน ผ่าน Command Line
เมื่อติดตั้งเสร็จแล้ว ให้เปิดโปรแกรม Terminal หรือ cmd แล้วมาเริ่มกันที่การใช้คำสั่ง Docker กันเลยครับ
หลังจากติดตั้ง docker แล้ว ลองตรวจสอบเลขเวอร์ชั่นกันก่อนเลย ด้วยคำสั่งนี้
docker --version
หรือ
docker -v
เริ่มจากการ Pull Docker Image
ก่อนจะทำการสร้างและรัน Docker container ลองค้นหาในDocker Hub ก่อนครับว่ามีอะไรให้เราใช้บ้างเมื่อเจอ Docker image ที่ต้องการ สามารถโหลด Docker image ที่ต้องการด้วยคำสั่งด้านล่างนี้
docker pull
ตัวอย่าง : ในที่นี้จะโหลด Docker image ที่ชื่อว่า nginx ให้ใช้คำสั่ง
docker pull nginx
หรือ 
docker pull nginx:stable
หรือ 
docker pull nginx:1.10
เราสามารถเลือกเวอร์ชั่นของ image ได้ด้วยการระบุ tag ลงไป หากไม่ระบุ tag ก็จะเป็นการเลือกใช้เวอร์ชั่นล่าสุด เช่น nginx ก็จะมี Docker Image ให้เลือกหลายๆเวอร์ชั่น nginx:stable, nginx:1.10
การสร้าง Container
มาถึงขั้นตอนสำคัญ ก็คือการสร้าง Container โดยใช้คำสั่ง docker run เพื่อสร้าง Docker Container
docker run --name demo -d -p 8080:80 -v /home/me:/home/docker image
ตัวอย่าง
docker run --name myweb -p 8080:80 -v /myweb:/var/www/html -d nginx
คำสั่งอาจจะดูยาวหน่อย เพราะคำสั่ง docker run จะต้องมีการใส่ option เข้าไปด้วย
--name demo คือ การตั้งชื่อให้กับ container โดยเมื่อเราใช้คำสั่ง start stop หรือ rm สามารถสั่งงาน container ได้จากชื่อ container ได้เช่นกัน
-d เป็นการสั่ง contianer ให้รันแบบ background
-v /home/me:/home/docker คือการ mount volume หรือเป็นการแชร์ไฟล์ระหว่าง container กับเครื่องเราให้สามารถเรียกใช้ไฟล์ร่วมกันได้
-p 8080:80 เป็นการ map port ระหว่างเครื่อง และ container เช่น อย่าง container ของ nginx จะใช้ port 80 เป็น default หากต้องการให้เครื่องใช้ port 8080 เราก็กำหนดให้เป็น -p 8080:80
image ชื่อของ Docker image ที่เราต้องการเรียกใช้ (จากตัวอย่างจะใช้ nginx เป็น image)
เมื่อมีการสั่ง docker run จะมีตรวจสอบว่ามี image นั้นอยู่ในเครื่องหรือไม่ ถ้าหากไม่พบ Docker ก็จะทำการ Pull Image นั้นๆจาก Docker Hub ลงมาให้
การใส่ Option ต่างๆสำหรับแต่ละ Image จะไม่เหมือนกัน มีการ map port หรือ mount volume ต่างกัน โดยเราสามารถดูได้จากคำอธิบายของแต่ละ Image ได้ในเว็บ hub.docker.com
Port ที่เรากำหนดด้วย -p สามารถเข้าถึงได้จาก IP Address ของเครื่อง (localhost, 127.0.o.1 หรือ IP ในวงแลน) ตามด้วย Port ที่เรากำหนดไว้ ในที่นี้คือ http://localhost:8080/ (ถ้าใช้ Docker Toolbox จะเป็น IP : 192.168.99.100 โดย default)
โดย Container ที่เราลองรันอยู่เป็น Web Server เพราะฉะนั้นจะต้องมาลองเปิดดูใน browser พบว่าสามารถใช้งานได้แล้วตรวจสอบสถานะ Container
เมื่อใช้คำสั่ง docker run เพื่อสร้างและรัน docker แล้ว
ลองตรวจสอบว่ามี Container ตัวไหนรันอยู่บ้าง
docker ps
ตัวอย่างการใช้คำสั่ง docker psจะสังเกตได้ว่ามี Container ที่ชื่อว่า myweb กำลังทำงานอยู่ โดยทุกๆ Container ก็จะมี Container ID เป็นของตัวเอง และเราสามารถสั่งงาน start, stop, rm ได้ด้วยการเรียกผ่าน Container IDหรือถ้าหากต้องการดูรายการ container ทั้งหมด ไม่ว่าจะเป็น container ที่กำลังรันอยู่และหยุดทำงานไปแล้วโดยใช้คำสั่ง
docker ps -a
หยุด Container
เมื่อต้องการให้ container หยุดทำงานจะต้องใช้คำสั่ง docker stop ตามด้วย Container ID หรือ Name ที่ใช้อ้างอิง Container
docker stop a715
ในที่นี้จะใช้ Container ID ในการอ้างอิงเพื่อสั่งหยุด contianer ที่ต้องการ
(การเรียกใช้ Container ID ไม่จำเป็นต้องใส่ให้ครบทุกตัวอักษรก็ได้)
ลบ Container
เมื่อไม่ใช้งาน Container นั้นแล้ว ไม่อยากจะใช้ต่อสามารถลบ Container ได้ด้วยคำสั่ง
docker rm a715
จะใช้คำสั่งนี้ได้ก็ต่อเมื่อ Container นั้นหยุดทำงานไปแล้ว
ดู Docker Image ทั้งหมด
docker images
การแสดงผลหลังจากใช้งานคำสั่ง docker imagesคำสั่งลบ Image
เมื่อต้องการลบ image จะต้องแน่ใจก่อนว่ามี container ไหนเรียกใช้ image นี้อยู่รึเปล่าถ้าไม่มีการเรียกใช้งานก็สามารถสั่งลบ image ด้วยคำสั่ง docker rmi ตามด้วย Image หรือ Image name ที่อ้างอิงกับ Image นั้นๆ
docker rmi c07e
หรือ
docker rmi
nginx:stable-alpine
สำหรับคำสั่ง Docker เบื้องต้นที่ใช้กันอยู่บ่อยๆก็มีประมาณนี้ยังเหลือคำสั่งอีกมากมาย ซึ่งอาจจะพูดถึงในตอนต่อไปๆ ขอให้สนุกกับการใช้งาน Docker ครับ
cr: https://medium.com/thothzocial-engineering/

22
รวมสาระความรู้ทั่วไปเกี่ยวกับ IT/Computer / โดรน..เทคโนโลยี
« เมื่อ: วันที่ 18 เมษายน 2019, เวลา 10:44:18 am »
 :19: :19: :19:
สุดยอดการพัฒนาเทคโนโลยี..โดรน



คนเริ่มควบคุมนั่งได้บินได้



แล้วก็กลายมาเป็นธุรกิจการบิน


23
 :YoYoXiXi1: :YoYoXiXi1: :YoYoXiXi1:
การศึกษาพฤติกรรมของนักเรียนชั้นมัธยมศึกษาปีที่ 2
โรงเรียนวารินชำราบในเรื่องการไม่ส่งงาน / การบ้าน

ชื่องานวิจัย                        การศึกษาพฤติกรรมของนักเรียนชั้นมัธยมศึกษาปีที่ 2 โรงเรียน
                                       วารินชำราบในเรื่องการไม่ส่งงาน / การบ้าน
ชื่อผู้วิจัย                           นาย สุรพล  กิ่มเกลี้ยง
กลุ่มสาระการเรียนรู้              การงานอาชีพและเทคโนโลยี

บทคัดย่อ

  การศึกษาวิจัยครั้งนี้  มีวัตถุประสงค์เพื่อศึกษาพฤติกรรมของนักเรียนในระดับชั้นมัธยมศึกษาปีที่ 2 โรงเรียนวารินชำราบผู้วิจัยได้จัดทำแบบสอบถามเพื่อศึกษาสาเหตุของการไม่ส่งงาน / การบ้านของนักเรียนจำนวน 15 ข้อ โดยให้นักเรียนเรียงลำดับสาเหตุการไม่ส่งงาน / การบ้านตามลำดับที่มากที่สุดจนถึงน้อยที่สุดจากลำดับ 1 – 15 และได้ทำการนำผลของแต่ละสาเหตุ มาหาค่าร้อยละ แล้วนำข้อมูลมาวิเคราะห์และหาข้อสรุปพร้อมทั้งนำเสนอในรูปของตารางประกอบคำบรรยาย เพื่อศึกษาพฤติกรรมของนักเรียนในเรื่องการไม่ส่งงาน / การบ้าน
ผลการศึกษาปรากฏว่า    จากการศึกษาและวิเคราะห์แบบสอบถามเพื่อศึกษาพฤติกรรมของนักเรียนชั้นมัธยมศึกษาปีที่ 2 ในเรื่องการไม่ส่งงาน / การบ้าน แสดงให้เห็นว่า สาเหตุของการไม่ส่งงาน ไม่ส่งการบ้าน ลำดับที่ 1 คือ การให้การบ้านมากเกินไป และแบบฝึกหัดยากทำไม่ได้ โดยคิดจากนักเรียน 40 คน ที่เลือกเป็นสาเหตุอันดับที่ 1 และ 2 จำนวน 27 คน คิดเป็น ร้อยละ   65.85
ดาวน์โหลดตัวอย่าง ดังไฟล์แนบด้านล่างนี้

24
ทิป เทคนิค Mikroik / วิธีการทำ Load Balance Static 2 WAN Failover Netwatch Disable Interface Route
« เมื่อ: วันที่ 20 มีนาคม 2019, เวลา 22:12:54 pm »
 :yoyo_71: :yoyo_71: :yoyo_71:

วิธีการทำ Load Balance Static 2 WAN Failover Netwatch Disable Interface Route


25

 :yoyo_71: :yoyo_71: :yoyo_71:

ออกแบบเน็ตเวิร์กหนึ่งระบบควรทราบอะไรบ้าง?


26
 :l29: :l29: :l29:

ทดสอบ Switch POE ส่งกระแสไฟฟ้าผ่านสาย LAN ได้ไกลกี่เมตร


27
ทิป เทคนิค Mikroik / Script-Sys คืออะไร และวิธีป้องกันใน 10 นาที
« เมื่อ: วันที่ 20 มีนาคม 2019, เวลา 22:07:46 pm »

 :l29: :l29: :l29:

Script-Sys คืออะไร และวิธีป้องกันใน 10 นาที


28
ทิป เทคนิค Mikroik / วิธีคำนวณหาค่า Classifier ของ LoadBalance PCC ใน Mikrotik
« เมื่อ: วันที่ 20 มีนาคม 2019, เวลา 22:04:11 pm »
 :l29: :l29: :l29:

วิธีคำนวณหาค่า Classifier ของ LoadBalance PCC ใน Mikrotik


29
 :yoyo_71: :yoyo_71: :yoyo_71:
ดูว่าเครื่องใช้ไหนเน็ตมากน้อยแค่ไหน และการ limit bandwidth แบบง่ายๆ


30
เป็นคลิปที่ดีมาก

หน้า: 1 [2] 3 4 ... 11