Docker คืออะไร + สอนวิธีใช้สไตล์ Web Developer

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

ปัญหาที่เราเจอกันบ่อยๆ

1. เสียเวลาติดตั้ง Application

ปัญหายอดฮิตของ web developer ทุกคนเลยก็คือ การเสียเวลาไปกับการติดตั้งพวก application ต่างๆ ที่โปรเจคนั้นๆ จำเป็นต้องใช้ ลองคิดกันเล่นๆ ว่าถ้าเราจะทำเว็บด้วย WordPress เราจะต้องลงอะไรบ้าง ?

ที่ต้องลงแน่ๆ เลยก็จะเป็น web server อย่าง Apache หรือ nginx ถูกมั้ยครับ จากนั้นเราก็จะต้องลง PHP แล้วก็ database อย่าง MySQL รวมไปถึง tool อย่าง phpMyAdmin ด้วย และที่ขาดไม่ได้เลยก็คือตัว WordPress เองครับ ส่วนใครอยากจะให้เว็บโหลดเร็วๆ หน่อย ก็อาจจะต้องลง Memcached เพิ่มเข้าไปอีก

จะเห็นว่าขั้นตอนพวกนี้มันกินเวลาไปไม่น้อยเลยล่ะครับ แล้วถ้าโปรเจคนั้นต้องการใช้ application อะไรที่การติดตั้งมันมีความซับซ้อนมากขึ้นกว่านี้ หรือเป็น application ที่เราไม่เคยติดตั้งมาก่อน อย่าง Jenkins, Elasticsearch หรือ Cassandra เราก็จะยิ่งเสียเวลามากขึ้นไปอีกครับ

2. เครื่อง Dev กับ Production ไม่เหมือนกัน

อีกปัญหาที่ผมคิดว่าเราน่าจะเจอกันทุกคนเลยก็คือ สภาพแวดล้อมของการ dev กับ production มันไม่เหมือนกันครับ สมมติเราได้งานฟรีแลนซ์มา 2 งาน งานนึง server ลูกค้าเค้าใช้ PHP 7 อีกงาน server เค้าใช้ HHVM แล้วเราดัน dev บนเครื่องที่ใช้ PHP 5 ปรากฏว่าพอเอางานขึ้นไปแล้วมีปัญหาครับ เนื่องจากเราไม่เคยเทสกับสภาพแวดล้อมของ production มาก่อนเลยนั่นเอง แล้วการที่จะทำให้สภาพแวดล้อมของเครื่อง dev เหมือนกับ production เป๊ะๆ  นี่ก็ไม่ใช่เรื่องง่ายเลย

ปัญหาหมดไป เมื่อมี Docker

ปัญหาดังกล่าวจะไม่เกิดขึ้นเลยครับ ถ้าเราใช้ tool ที่มีชื่อว่า Docker เพราะเจ้าDocker ที่ว่านี้ มันมีความสามารถในการ “ห่อ” เจ้า application ต่างๆ ให้อยู่ในรูปของ “container” ที่เราสามารถนำไปติดตั้งที่เครื่องไหนก็ได้ที่มี Docker รันอยู่ ด้วยความสามารถนี้เอง ที่ทำให้ web developer อย่างเราสบายขึ้น ไม่ว่าจะในฐานะ…

คนนำ Container ไปใช้

อย่างที่เล่าไปก่อนหน้านี้ครับว่า บาง application นั้นมีขั้นตอนการติดตั้งที่ยุ่งยากซับซ้อน หากเราใช้ Docker เราก็แค่ไปโหลด container ที่ชาวบ้านเค้าทำไว้ดีแล้วมาใช้ได้เลย เราอาจจะโหลด container ของ Apache, PHP, MySQL มาก่อน แล้วค่อยลง WordPress เพิ่มเข้าไปเอง หรือจะเลือกโหลด container ของ WordPress แบบพร้อมใช้งานมาเลยก็ได้ สมมติเราได้งานที่ server เค้าลง PHP 5.3 ไว้ เราก็ไปโหลด container ของ PHP 5.3 มารัน หากดึกคืนนั้นมีลูกค้าเก่ามาขอให้ช่วยแก้งานที่ใช้ PHP 5.6 เราก็สลับไปรัน container ของ PHP 5.6 แทน อะไรทำนองนี้ครับ

คนสร้าง Container เอง

สมมติว่าเราได้งาน Node.js ชิ้นใหญ่มา แล้วเราก็ติดตั้ง application ต่างๆ ที่จำเป็นต้องใช้เรียบร้อยแล้ว บังเอิญเราได้เพื่อนมาช่วยเขียนโค้ดอีกคน แล้วเราอยากให้เครื่องของเพื่อนมีสภาพแวดล้อมเหมือนเราเป๊ะๆ เลย สิ่งที่เราต้องทำก็แค่ห่อ application ต่างๆ ที่เราได้ลงไว้ ให้กลายเป็น container ของ Docker ครับ จากนั้นเราก็บอกให้เพื่อนลง Docker ซะ แล้วเราก็ส่ง container ของเรา ไปให้เพื่อนรัน เพียงเท่านี้เพื่อนของเราก็จะสามารถเริ่มงานได้ทันทีแล้วล่ะครับ

รู้จัก Docker ให้มากขึ้น

มาถึงตรงนี้ ผมว่าเพื่อนๆ คงพอจะเห็นภาพแล้วว่า Docker มันช่วยอะไรเราได้บ้าง แต่ก่อนที่เราจะลองเล่นมัน ผมอยากจะให้เราเข้าใจหลักการทำงานของมันสักนิดนึงก่อนครับ

1. Docker ต้องใช้กับ Linux

Docker นั้นใช้ฟีเจอร์บางอย่างของ Linux ครับ นั่นหมายความว่าเครื่องของเราจะต้องติดตั้ง Linux ก่อน ถึงจะรัน Docker ได้ แต่หากใครใช้ Windows หรือ Mac OS X อยู่ แล้วไม่อยากจะเปลี่ยนไปใช้ Linux เราอาจจะใช้ตัวช่วยอย่าง Vagrant หรือ Boot2Docker ในการจำลอง Linux ขึ้นมาก็ได้เช่นกันครับ

2. Container ของ Docker เร็วกว่า VM

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

3. Docker มีระบบ Registry

คำถามที่น่าจะสงสัยกันก็คือ แล้วเราจะหา container ที่เราต้องการจะใช้ได้จากที่ไหน คำตอบคือ Docker เค้าจะมีระบบ registry ที่มีชื่อว่า Docker Hub ที่จะเปิดให้คนทั่วไปสามารถเอา container ที่ตัวเองสร้างขึ้นมาเก็บไว้ที่ส่วนกลางเพื่อที่จะได้แบ่งปันให้คนอื่นได้ใช้ด้วยครับ อารมณ์เดียวกับ Node.js ที่มี npm นั่นแหละ สิ่งที่เราต้องทำก็แค่เข้าเว็บ Docker Hub แล้วก็ search หา container ที่ต้องการจะใช้ container ไหนสร้างโดย official เองก็จะมีคนโหลดเยอะหน่อยครับ

4. วิธีสร้าง Container ของ Docker

container ของ Docker นั้นถูกสร้างมาจาก Docker image อีกทีครับ สมมติเราอยากจะสร้าง container ของ Apache เอาไว้ใช้งานเอง เราก็จะต้องสร้าง Docker image ที่บรรจุ Apache ไว้ข้างในขึ้นมาซะก่อน แล้วจึงสั่งให้ Docker รัน image ตัวนี้

ส่วนวิธีสร้างตัว Docker image นั้นก็ไม่ยากเลยครับ ให้เราสร้างไฟล์เปล่าๆ ที่เรียกกันว่า Dockerfile ขึ้นมา แล้วก็ใส่ command ต่างๆ ของ Linux ที่เอาไว้ติดตั้ง Apache ลงไป จากนั้นก็สั่งให้ Docker ทำการ build เจ้าไฟล์นี้ให้กลายเป็น Docker image ครับ แล้วถ้าเราอยากจะแชร์ image นี้ให้คนอื่นได้ใช้ผ่าน Docker Hub ด้วย เราก็สามารถ push ขึ้นไปผ่าน command ของ Docker ได้เลย

สรุปอีกที! ก่อนใช้งาน Docker

เพื่อให้แน่ใจว่าทุกคนเข้าใจ Docker เป็นอย่างดีแล้ว ผมจะขอสรุปภาพรวมให้ฟังอีกที โดยจะแบ่งออกเป็นส่วนๆ ดังนี้ครับ

  • Application คือ สิ่งที่เราต้องการจะใช้งาน เช่น Apache, PHP, MySQL, WordPress, Laravel เป็นต้น
  • Docker image คือ ไฟล์ image ที่บรรจุ application ข้างต้นเอาไว้ โดยไฟล์นี้ได้มาจากการ build ไฟล์ Dockerfile ที่ใส่ command ของ Linux สำหรับติดตั้ง application ดังกล่าวเอาไว้
  • Docker container คือ กล่องที่บรรจุ application ที่พร้อมทำงาน ซึ่งเป็นผลมาจากการรัน Docker image
  • Docker Hub คือ  ที่ๆ เราสามารถอัพโหลด image ที่ตัวเองสร้างขึ้นไปเพื่อแบ่งปันให้คนอื่นได้ใช้ด้วย หรือเราจะดาวน์โหลด image ที่คนอื่นทำไว้ดีแล้วมาใช้งานเลยก็ได้

มาถึงตรงนี้ พื้นฐานเกี่ยวกับ Docker ของทุกคนคงจะแน่นปึ๊กแล้ว ผมว่าเรามาเริ่มใช้ Docker กันเลยดีกว่าครับ

Workshop

ก่อนที่เราจะมาเริ่มใช้งาน Docker ผมอยากให้เราดู OS ของเครื่องที่เราใช้อยู่ก่อนนะครับว่ามันเป็นอะไร

  • Windows / Mac OS X ต้องติดตั้ง Docker Machine เพื่อจำลอง Linux ขึ้นมาก่อน แล้วค่อยติดตั้ง Docker Engine อีกที
  • Linux สามารถติดตั้ง Docker Engine ได้ทันที

สำหรับบทความนี้ ผมจะขอถือว่าเราใช้ Mac OS X แล้วกันนะครับ หากใครใช้ OS อื่น ก็ไม่เปนไรฮะ เพราะวิธีการใช้งานนั้น ไม่ได้แตกต่างกันมาก

1. ติดตั้ง Docker Toolbox

ขั้นตอนแรกให้เราไปดาวน์โหลด Docker Toolbox มาก่อนฮะ พอโหลดเสร็จก็ติดตั้งได้เลย แล้วเราก็จะเจอหน้าจอถามว่าเราต้องการจะติดตั้งอะไรบ้าง

สิ่งที่ Docker Toolbox เตรียมมาให้

สิ่งที่ Docker Toolbox เตรียมมาให้

  • Docker Client เป็นตัว Docker จริงๆ
  • Docker Machine ตัวจำลอง Linux เพื่อที่จะสามารถใช้งาน Docker Client ได้
  • Docker Compose tool อำนวยความสะดวกในการรัน container ของ Docker
  • Docker Quickstart Terminal app terminal ที่เอาไว้ใช้รัน Docker
  • Kitematic Docker เวอร์ชั่นที่เป็น GUI
  • Oracle VM VirtualBox VM ที่เอาไว้ใช้ร่วมกับ Docker Machine ในการจำลอง Linux

ผมแนะนำให้เราลงทั้งหมดเลยฮะ สำหรับใครที่เคยลง VirtualBox มาแล้ว ผมขอแนะนำให้ใช้ตัวที่มากับ Docker Toolbox นะครับ เพราะจะเป็นเวอร์ชั่นที่ใหม่กว่า

2. ลองรัน Docker

พอลงเสร็จแล้ว ให้เราเทสการทำงานของ Docker ด้วยการเปิด Docker CLI ขึ้นมาครับ สิ่งที่เกิดขึ้นก็คือมันจะไปรัน Docker Machine เพื่อที่จะสร้าง VM ของ Linux ขึ้นมา ให้เรารอจนมันสร้างเสร็จครับ

3. ดู IP ของ Docker Machine

พอได้ VM มาแล้ว ให้เราดู IP address ของ VM ด้วยคำสั่งนี้ฮะ

สมมติว่าเราได้ IP มาเป็น 192.168.99.100 เราก็จะสามารถพรีวิวเว็บที่เราทำผ่าน http://192.168.99.100/ ครับ ให้เราลองเปิด url นี้ดูเลย เราก็จะพบว่ามันยังเข้าไม่ได้ เพราะว่าเรายังไม่ได้ลง web server เลยนั่นเองครับ

4. SSH เข้าไปที่ Docker Machine

ก่อนที่จะติดตั้ง web server เราจะต้องเข้าใจก่อนนะครับว่า ตอนนี้เรายังอยู่บน Mac OS X อยู่เลย แล้วสิ่งที่เราต้องการจะทำก็คือการลง web server ที่ตัว Docker Machine ครับ เพราะฉะนั้นเราจะต้อง SSH เข้าไปที่เครื่อง Docker Machine ก่อน ด้วยคำสั่งนี้ครับ

เพียงเท่านี้ เราก็จะเข้ามาอยู่ในตัว Docker Machine แล้วล่ะครับ command อะไรที่เราจะรันในนี้ ก็จะมีผลกับตัว VM เท่านั้น ไม่ใช่กับ Mac OS X แล้ว

5. โหลด Docker image

ตอนนี้เราพร้อมที่จะติดตั้ง web server แล้วครับ ให้เราเข้าเว็บ Docker Hub แล้ว search หา Apache ได้เลย แต่ถ้างานของเราจะต้องใช้ PHP อยู่แล้ว เราจะ search หา PHP ไปเลยก็ได้นะครับ เพราะ Docker image ของ PHP นั้น จะมีแบบพ่วง Apache มาให้ด้วย

Docker Hub

ค้นหา PHP จาก Docker Hub

เมื่อเจอ Docker image ที่ต้องการแล้ว เราก็สามารถโหลด Docker image นั้นมาใช้ด้วย command ด้านล่างนี้ครับ

command อาจจะดูยาวๆ นะครับ มาดูว่าแต่ละ option มันเอาไว้ทำอะไรบ้าง

  • run คือ การสั่งให้ Docker สร้าง container ขึ้นมาจาก Docker image
  • –name myContainer คือ การตั้งชื่อให้กับ container ที่จะถูกสร้าง แนะนำให้ตั้งชื่อให้สื่อความหมายหน่อยนะครับ เพราะเราจะต้องใช้ชื่อนี้ในการ start/stop container ด้วย
  • -d เป็นการสั่งให้รันแบบ background
  • -p 9999:9999 เอาไว้จับคู่ port ของ Docker Machine กับ port ของ container ครับ อย่าง container ของ Apache นี่เค้าจะใช้ port 80 หากเราต้องการจะให้ Docker Machine ใช้ port 80 เหมือนกัน เราก็กำหนดให้เป็น -p 80:80
  • image:tag ชื่อของ Docker image ที่เราต้องการจะโหลดมาใช้ (ดูชื่อได้จากหน้า image ที่ Docker Hub) ตรงนี้เราสามารถเลือกเวอร์ชั่นย่อยของ image ได้ด้วยการระบุ tag ลงไปนะครับ หากไม่ระบุ ก็จะถือว่าเราเลือกเวอร์ชั่นล่าสุด

ว่าแล้วก็ลองรัน command สำหรับโหลด PHP ดูเลยฮะ

หลังจากรัน command ด้านบน สิ่งที่เกิดขึ้นก็คือ

  • Docker ตรวจสอบว่าเครื่องเรามีการโหลด image ชื่อ php ที่มี tag เป็น 5.6-apache แล้วหรือยัง
  • ถ้ายัง Docker ก็จะไปโหลด image จาก Docker Hub มาให้
  • พอได้ image มาแล้ว Docker ก็จะรัน image นั้นให้กลายเป็น container พร้อมกับตั้งชื่อว่า php5.6 ตามที่เราได้ระบุไว้
  • จับคู่ port 80 ของ Docker Machine เข้ากับ port 80 ของ container

ขั้นตอนนี้อาจจะต้องรอโหลดนานนิดนึงนะครับ เพราะ image จะมีขนาดประมาณ 100 MB พอ Docker รันเสร็จแล้ว ก็ลองเข้า http://192.168.99.100/ ดูอีกทีครับ คราวนี้เราจะเจอข้อความ Forbidden แทน เพราะตอนนี้ยังไม่มีไฟล์อะไรอยู่ใน document root ของ Apache เลยนั่นเองฮะ

6. Map folder

เพื่อให้ Apache ใน container มองเห็นงานที่เราเคยทำไว้ เราจะต้องเชื่อมประตูมิติครับ แต่การจะเชื่อมนั้น เราจะต้องทำอยู่ 2 จุดด้วยกัน

1. ระหว่าง Mac OS X กับ Docker Machine

ในส่วนนี้ ผมขออธิบายเป็นขั้นตอนตามนี้ครับ

  • ปิด Docker CLI แล้วไปที่ VirtualBox
  • ไปที่ VM ชื่อ default แล้วเลือก Settings
  • ไปที่ Shared Folders
  • เลือก Folder Path ให้ตรงกับ folder ที่เก็บงานของเราไว้ เช่น “/Users”
  • ระบุ Folder Name ที่จะให้ mount ไปยัง VM เช่น “Users”
  • ปิดเครื่อง VM นั้น แล้วเข้า Docker CLI ใหม่อีกครั้ง
เข้าไปกำหนด Shared Folders ของ VirtualBox

เข้าไปกำหนด Shared Folders ของ VirtualBox

จากนั้นให้เราเข้าไปที่เครื่อง Docker Machine อีกครั้ง เพื่อดูว่ามันเห็นไฟล์งานของเราแล้วหรือยัง ให้เรารัน command ด้านล่างนี้ ตามลำดับครับ

ถ้าไม่มีอะไรผิดพลาด เราจะพบว่างานของเราที่เคยอยู่ใน /Users บน Mac OS X มันเข้ามาอยู่ใน Docker Machine แล้วครับ การเชื่อมประตูมิติจุดแรกได้เสร็จลงแล้ว

2. ระหว่าง Docker Machine กับ container

อีกจุดที่เราต้องทำก็คือการทำให้ Apache ใน container มองเห็นงานของเราบน Docker Machine ครับ ให้เราเพิ่ม option ของการ map folder ระหว่าง Docker Machine กับ container เข้าไปใน command แบบนี้

command ด้านบน จะเป็นการเชื่อม /Users/siamhtml/Sites/ ซึ่งเป็นที่เก็บงานของผม เข้ากับ document root ของ Apache ครับ หากเรารันแล้ว Error ก็ไม่ต้องตกใจไปนะครับ เพราะสาเหตุของ Error นั้นมีอยู่ไม่กี่อย่างฮะ

2.1 Port ถูกใช้ไปแล้ว

ถ้าเจอ Error แบบนี้ แปลว่ามี container อื่น ใช้ port 80 ไปแล้วครับ ให้เราลิส container ทั้งหมด ที่กำลังรันอยู่มาดูด้วย command

เราก็จะเห็นรายการ container ทั้งหมด ที่กำลังรันอยู่ครับ ให้เรามองหาคอลัมน์ PORTS แล้วดูว่า container ไหน ที่มันใช้ port 80 อยู่ เมื่อเจอแล้วก็ดูที่คอลัมน์ NAMES แล้วจำชื่อ container นั้นไว้ครับ เพราะเราจะต้องเอามาใช้ในการ stop มันด้วย สมมติว่า container ที่เอา port 80 ไป คือ container เดิมที่เราเคยรันไว้ก่อนหน้านี้นี่แหละ ให้เรา stop มันด้วย command นี้ครับ

จากนั้นก็ลองรัน command ที่พ่วง option สำหรับ map folder ดูอีกทีฮะ คราวนี้น่าจะผ่านแล้ว

2.2 ชื่อ Container ซ้ำ

แต่ถ้ายังเจอ Error นี้อีก ก็แปลว่ามี container อื่น ใช้ชื่อนี้ไปแล้วฮะ ซึ่งในกรณีนี้ก็คือ container เดิม ที่เราเคยสร้างไว้แต่ยังไม่ได้ map folder นั่นเอง เพื่อความชัวร์ เราสามารถดูรายการ container ทั้งหมดที่มีอยู่ในเครื่องได้ด้วย command นี้ครับ

รับรองว่าเราจะต้องเจอ container ที่มีชื่อว่า php5.6 อย่างแน่นอนครับ ให้เราลบ container นั้นออกก่อนด้วย command นี้

เสร็จแล้วก็ลองรัน command ที่พ่วง option สำหรับ map folder ดูอีกทีฮะ หากไม่มี Error อะไรแล้ว ให้เราเทสการทำงานด้วยการสร้างไฟล์ชื่อ phpinfo.php ขึ้นมา แล้วใส่โค้ดนี้ลงไป

จากนั้นก็เอาไปใส่ไว้ใน document root ของ Mac OS X ได้เลยครับ แล้วลองเข้าไปที่ http://192.168.99.100/phpinfo.php หากสามารถรันได้ก็หมายความว่าการเชื่อมประตูมิติทั้งสองจุดนั้นได้เสร็จเรียบร้อยแล้วครับ

7. Start Container ครั้งต่อๆ ไป

ทุกๆ ครั้งที่เราสร้าง containerใหม่ขึ้นมาด้วยการรันคำสั่ง docker run พวก option ต่างๆ ที่เราใส่ไว้นั้น มันจะผูกติดกับตัว container เลยนะครับ เวลาจะรันครั้งต่อไป เราก็สามารถใช้ command สั้นๆ แบบนี้ได้เลย

จะเห็นว่าเราไม่ต้องมาพิมพ์ command ยาวๆ อีกแล้วนะครับ ลองนึกดูเล่นๆ ว่าถ้าเราโหลด PHP มาหลายๆ เวอร์ชั่น การจะสลับเวอร์ชั่นนั้นก็แค่ stop เวอร์ชั่นที่รันอยู่ก่อน แล้วค่อย start เวอร์ชั่นที่ต้องการจะใช้เท่านั้นเอง

8. สร้าง Docker image เอง

หากเราอยากจะสร้าง Docker image ขึ้นมาใช้เอง ก็ไม่ยากครับ ให้เรา SSH เข้า Docker Machine ก่อน แล้วก็สร้างไฟล์ขึ้นมาอันนึงโดยใช้ชื่อว่า Dockerfile จากนั้นก็ใส่ command ของ Linux ที่ต้องการจะรันลงไปในไฟล์นี้ เมื่อเรียบร้อยแล้วให้เราเข้าไปที่ folder ที่เก็บ Dockerfile อยู่ แล้วรันคำสั่ง build ตามนี้ครับ

เพียงเท่านี้ เราก็จะได้ Docker image ที่ชื่อ myImage มาใช้งานแล้วล่ะครับ รายละเอียดเพิ่มเติมเพื่อนๆ สามารถเข้าไปดูได้ที่เว็บหลักครับ

เราสามารถดู Dockerfile ของ Image บน Docker Hub ได้ด้วย

เราสามารถดู Dockerfile ของ Image บน Docker Hub ได้ด้วย

9. เอา Docker image ขึ้น Docker Hub

สุดท้ายแล้ว เราสามารถแชร์ Docker image ที่เราสร้างไปให้คนอื่นๆ ใช้ได้ด้วยนะครับ ให้เราเข้าไปสมัครเป็นสมาชิกของ Docker Hub ก่อน จากนั้นก็สร้าง repository ขึ้นมา เมื่อ Docker image พร้อมแล้ว เราก็สามารถรัน command สำหรับ push ของ Docker ได้ทันที เพียงเท่านี้ เพื่อนๆ ทั่วโลกก็จะเห็น Docker image ที่เราสร้างไว้แล้วล่ะครับ รายละเอียดในส่วนนี้ สามารถเข้าไปดูได้ที่เว็บหลักเช่นกันครับ

ความรู้สึกหลังใช้ Docker

ก็น่าจะเห็นกันแล้วนะครับว่า Docker มันช่วยอะไรเราได้บ้าง อย่าลืมนะครับว่าตัวอย่างที่ผมยกมามันเป็นแค่การลง PHP ซึ่งถือว่าไม่ได้มีอะไรมาก ซึ่งในการใช้งานจริงๆ แล้ว เราอาจจะไปโหลด Laravel แบบ container เดียว พร้อมใช้งานได้ทันที มีทั้ง MongoDB และ Redis มาให้พร้อมเลยก็เป็นได้ เราอาจจะเล่นเว็บ แล้วพอดีไปเห็นคนเค้าใช้ Elasticsearch แล้วอยากลองเล่นมั้ง เราก็สามารถให้ Docker ช่วยติดตั้ง Elasticsearch ได้ด้วยเวลาเพียงไม่กี่นาที ก็ลองไปเล่นกันดูนะครับ แล้วเราจะไม่ได้ยินคำว่า “กว่าจะ setup ระบบเสร็จ ก็หมดไปวันนึงแล้ว”

(Visited 56,229 times, 87 visits today)

21 Responses to “Docker คืออะไร + สอนวิธีใช้สไตล์ Web Developer”

  1. เป็นบทความที่อ่านแล้วเข้าใจง่ายครับ

  2. เป็นการเริ่มต้นที่ดีที่ได้อ่าน

  3. ดีมากครับกำลังจะลอง

  4. ใช้ putty login ยังไงหรอครับ
    https://docs.docker.com/installation/windows/#login-with-putty-instead-of-using-the-cmd
    อ่านตามนี้แล้วงงอ่ะครับ

  5. เหมาะมาก ๆ กับการ setup ที่ไม่ต้องค้นหาและ compat package เอง น่าจะมีการนำมาใช้งานกันมากขึ้นเรื่อย ๆ เหมาะมากกับ devloper ที่ไม่ค่อยมีความรู้การ set host ด้วยตัวเอง แต่ถ้า พวกที่ทำ host ก็จะสะดวกขึ้น แต่ก็คงรู้สึกแปลก ๆ แต่โดยรวมก็คือ ทำให้ง่ายขึ้น ถือว่าดีมาก ๆ ครับ

  6. เยี่ยมมากครับ

  7. แจ่มมากเลยครับ สุดยอด

  8. ดีงามม
    ขอบคุณสำหรับบทความครับ

  9. เจ้าตัว php5.6 ที่เราลงไปมันจะไปอยู่ที่ Path ไหนอะครับ

  10. ขอบคุณคับสำหรับความรู้ดีๆๆ

  11. ขอบคุณมาก ๆ ครับ
    ——————————————–
    ขอ อนุญาตแนะนำ
    http://www.cloud-hotspot.com – cloud radius billing for mikrotik hotspot/pppoe-server

  12. docker run –name php5.6 -d -p 80:80 -v /Users/siamhtml/Sites/:/var/www/html/ php:5.6-apache
    เค้า mapping path ใน docker container : /var/www/html/ มาใช้ /Users/siamhtml/Sites/ กรณี OSX

  13. ขอบคุณครับ มันคือแนวทางที่ดีมาก

  14. ชัดเจน แจ่มแจ้ง ขอบคุณครับ

  15. เยี่ยมมาก ขอบคุณครับ

  16. ทำตามขั้นตอนแล้ว ลองเข้า http://192.168.99.100/ แล้วขึ้นแบบนี้ครับ

    403 Forbidden
    You don't have permission to access / on this server.

    แบบนี้แก้ยังไงครับ

  17. Supasan Doungchana

    ทำตามขั้นตอนแล้ว ลองเข้า http://192.168.99.100/ แล้วขึ้นแบบนี้ครับ

    403 Forbidden
    You don't have permission to access / on this server.

    พอจะรู้ไหมครับว่าแบบนี้แก้ยังไง

  18. อิสระภาพอีกครั้งของนักพัฒนา

Leave a Reply to Supasan Doungchana