Saladpuk.com
🏆 เนื้อหาหลัก
🏆 เนื้อหาหลัก
  • 💖สลัดผัก
  • 📰มีอะไรใหม่บ้าง
    • 2020
      • 2020-11
      • 2020-10
      • 2020-09
      • 2020-08
      • 2020-03
      • 2020-02
      • 2020-01
    • 2019
      • 2019-12
      • 2019-11
      • 2019-10
      • 2019-09
      • 2019-08
  • 🤔อ่านเรื่องไรดี ?
  • มือใหม่หัดเขียนโค้ด
    • 👶เขียนโค้ดด้วยภาษา C#
      • เกิดมาไม่เคยเขียนโค้ดมาก่อนเบย
      • 👶พื้นฐาน
        • 1.โปรแกรมที่ต้องลง
        • 2.โครงสร้างของโค้ด
        • 3.ชนิดของข้อมูล
        • 4.การสร้างตัวแปร
        • 5.คำสั่งพื้นฐาน
        • 6.การแปลงข้อมูล
        • 7.การเปรียบเทียบค่า
        • 8.การตัดสินใจด้วย IF statements
        • 9.การตัดสินใจด้วย Switch statements
        • 10.การทำงานซ้ำๆด้วย While
        • 11.การทำงานซ้ำๆด้วย Do While
        • 12.การทำงานซ้ำๆด้วย For
        • 13.การแก้โจทย์จากรูป
        • 14.มารู้จักกับ Array กัน
      • 🧑ระดับกลาง
        • 15.Value type vs Reference type
        • 16.ลดงานซ้ำๆด้วย Method
        • 17.มารู้จักกับ Class & Field กัน
        • 18.มารู้จักกับ Constructor กันบ้าง
        • 19.มาเขียน Method ใน Class กัน
        • 20.มารู้จักกับ Property กัน
        • 21.ลองใช้คลาสแบบจริงจังบ้าง
        • 22.การสืบทอด Inheritance
        • 23.Polymorphism
        • 24.Abstract Class
        • 25.Interface
        • 26.Namespace
        • 27.Enum
        • 28.Exception handler
        • 29.ลงลึกกับ string
        • 30.StringBuilder เพื่อนคู่ string
      • 👨⏳ระดับสูง
        • Generic
        • Delegates
        • Action & Func
        • Lambda expression
        • LINQ
        • พระคัมภีร์การใช้คำสั่ง LINQ
      • 💡Tips
        • 💡C# version 8.0
        • 💡Boxing & Unboxing
    • 👶Algorithm
      • 👾Algorithm Big-O
      • 👽Algorithm P & NP
    • 👦OOP
      • 💖Abstraction
      • 💖Encapsulation
      • 🏆Abstraction & Encapsulation
      • 💖Inheritance
      • 💖Polymorphism
      • 🏆Inheritance & Polymorphism
      • 📝ลองเขียน OOP ดูดิ๊
      • 👑OOP + Power of Design
      • 🥰เทคนิคในการออกแบบ
    • 👶บทสรุปฐานข้อมูล
      • เก็บรูปในฐานข้อมูล
      • Database indexing
      • การลบข้อมูล
    • 👦Communication Patterns
    • 👦Design Patterns
      • 🤰Creational Patterns
        • 🏭Factory Method
        • 🏭Abstract Factory
        • ☝️ Singleton Pattern
        • 🏗️ Builder Pattern
        • 🎎Prototype Pattern
      • 🧱Structural Patterns
        • 🔌Adapter Pattern
        • 📪Proxy Pattern
  • Puzzle
    • 🧠Challenges
      • 🐴Google ม้า 25 ตัว
      • 🌉Amazon เสา 2 ต้น
      • 🥇ทองเก๊
      • 💊ยาต้านโควิด
      • 🎩CP หมวก 5 ใบ
      • 🧓Einstein's Riddle 01
  • พื้นฐานที่ควรต้องรู้
    • 🐳Docker
      • 📦Docker Containers
      • 🃏Docker Exercise 01
      • 🛠️ Docker Tools
      • 🗃️ Docker Registry
      • 🖼️ Container Image
      • 📢Docker Push
      • 🔄WSL
    • 👶Clean Code
      • 🧓Uncle Bob - Clean Code
      • 🧓Uncle Bob - Comments
      • 🧓Uncle Bob - Naming
      • 🧓Uncle Bob - Mindset
      • 🧓Uncle Bob - TDD
    • 👶Code Smells
    • 👶สิ่งที่คนเขียนโค้ดมักเข้าใจผิด
    • 👶AI พื้นฐาน
    • 👶Git พื้นฐาน
      • Git branching strategy
    • 👶Cloud พื้นฐาน
    • 👶UML พื้นฐาน
      • Activity Diagram
      • Class Diagram
      • Sequence Diagram
      • Use case Diagram
      • บทสรุปการใช้ UML
    • 👶Data Scientist
      • การเลือก Algorithms ให้ AI (1/5)
      • การเตรียมข้อมูลให้ AI (2/5)
      • หลักการตั้งคำถามให้ AI (3/5)
      • แฉความลับของ AI Model (4/5)
      • หัดเขียน AI จาก AI ของคนอื่น (5/5)
    • 👶DevOps พื้นฐาน
    • 👶Docker ขั้นพื้นฐาน
      • Image and Container
      • แชร์ Docker Image ที่สร้างไว้
    • 👶Microservices พื้นฐาน
      • Microservices ที่ดีมีลักษณะยังไง
      • Microservices Tips
      • จาก Monolith สู่ Microservices
    • 👶ความรู้พื้นฐานในการทำเว็บ
    • 👦Bottlenecks of Software
      • หัวใจที่สำคัญที่สุดของฐานข้อมูล
    • 👦Agile Methodology
      • Agile in a Nutshell
      • Software Development Life Cycle
      • Code Review
    • 👦Security พื้นฐาน
      • การเก็บรหัสผ่านที่ถูกต้อง
      • Security in actions
        • Hash function
      • Security Principles
      • 😎The Matrix 1
      • 😎The Matrix 2
      • HTTPS in a nutshell
    • 👦SOLID Design Principles
      • มารู้จักกับ SOLID กันดีกว่า
      • Single-Responsibility Principle
      • Open/Closed Principle
      • Liskov Substitution Principle
      • Interface Segregation Principle
      • Dependency-Inversion Principle
  • Cloud Computing
    • 👶Microsoft Azure 101
      • สมัคร Microsoft Azure
      • รู้จักกับ Resource Groups
      • สร้างเว็บตัวแรกกัน
      • สร้าง Virtual Machine กัน
      • ประเภทของคลาว์เซอร์วิส
      • มาสร้าง Logic App กัน
      • มาสร้าง Function App กัน
      • คลาว์คิดเงินยังไง ?
      • Cloud Native
      • Guideline for Cloud scaling
      • Auto Scaling
    • 👶Azure App Services
    • 👶App Service Plan
    • 👶Azure Storage
      • Blob storage
        • ลองสร้างที่เก็บไฟล์กันเลย
        • เข้าใจ Blob storage ให้มากขึ้น
        • ลองเขียนโค้ดอัพโหลดไฟล์กันบ้าง
        • สร้างเว็บจากที่ฝากไฟล์บนคลาว์
    • 👶Azure Bot Service
      • Bot เข้าใจเราได้ยังไงกันนะ
    • 👶Azure Cognitive Services
      • การสร้าง Cognitive Services
      • การ Login ด้วยใบหน้า
      • อ่านลายมือจากรูปเป็นตัวอักษร (OCR)
      • เขียน AI แยกของต่างๆทำยังไง?
      • เขียนแอพ ทายอายุ บอกเพศ ง่ายจิ๊ดเดียว
      • เขียนแอพให้ AI อธิบายรูปเป็นภาษาคน
    • 👶Machine Learning Studio
      • มาสร้าง AI ของแท้ตัวแรกของเรากัน
      • สร้าง AI ตัดสินใจอนุมัติบัตรเครดิต 💳
      • ลองเรียกใช้ AI ของเรากัน
    • 👶Azure Service Fabric
      • สร้าง Service Fabric กัน
    • 👶Blockchain
      • Blockchain ทำงานยังไง ?
      • Consensus Algorithm คืออะไร ?
      • สร้าง Blockchain ใช้เองกัน !
      • หัดเขียน Smart Contract กัน
    • 👶Power BI
    • 👶Azure Web App
      • เซิฟเวอร์บนคลาว์ ราคา? ต่าง?
    • 👶Azure DevOps
      • เล่น Azure DevOps กัน
      • เล่นกับ Repository
      • ลองทำ Continuous Integration (CI)
      • ลองทำ Continuous Delivery (CD)
      • เล่น Kanban Board
    • 🤠Cloud Playground
      • การป้องกันความลับหลุดตอนที่ 1
      • การป้องกันความลับหลุดตอนที่ 2
      • การป้องกันความลับหลุดตอนที่ 3
      • การป้องกันความลับหลุดตอนจบ
  • Software Testing
    • 👦Test-First Design
    • 👦Test-Driven Development
      • 1.มารู้จักกับ TDD กันดีกว่า
      • 2.Test cases เขาเขียนกันยังไงนะ
      • 3.เครื่องมือในการทดสอบ
      • 4.การใช้ Theory และ InlineData
      • 5.โค้ดที่ทดสอบได้
      • 6.Mantra of TDD
      • 7.Functional & None-Functional testing
      • 8.Manual vs Automation testing
      • 9.Automation Frameworks in .NET
      • 10.Mock Framework
      • 11.มาเรียนการใช้ Moq กันเถอะ
      • 12.สรุป
  • Web
    • 👦Web API
      • 1.Web API คืออะไร
      • 2.ติดตั้ง .NET Core SDK
      • 3.สร้าง Web API ตัวแรกกัน
      • 4.Verbs
      • 5.Swagger เพื่อคู่ API
      • 6.การใช้ Model
      • 7.เรียก Web API ผ่าน Postman
      • 8.มาจัดกลุ่ม API กัน (1/2)
      • 9.มาจัดกลุ่ม API กัน (2/2)
  • Software Design
    • 🤴Design Patterns
      • 🦈Creational patterns
        • Abstract Factory
        • Builder
        • Factory Method
        • Prototype
        • Singleton
      • 🦈Structural patterns
        • Adapter
        • Bridge
        • Decorator
        • Facade
        • Proxy
      • 🦈Behavioral patterns
        • Chain of Responsibility
        • Command
        • Iterator
        • Mediator
        • Memento
        • Observer
        • State
        • Strategy
        • Template Method
        • Visitor
Powered by GitBook
On this page
  • 💖 เกริ่น
  • 🤔 Docker คือไย? ทำไมนิยมจุง?
  • 😢 ปัญหา
  • 😄 วิธีแก้ปัญหา

Was this helpful?

Export as PDF
  1. พื้นฐานที่ควรต้องรู้

Docker

คอร์ส Docker หลักแสนที่ไม่ต้องจ่ายเงินเรียน 😘

PreviousEinstein's Riddle 01NextDocker Containers

Last updated 4 years ago

Was this helpful?

💖 เกริ่น

คอร์สนี้ ดช.แมวน้ำ จะพาเพื่อนๆดำดิ่งกับเจ้าปลาวาฬสีน้ำเงินที่ชื่อว่า 🐳 Docker ตั้งแต่ความรู้พื้นฐานยันระดับ master กันไปเลย ซึ่งแมวน้ำเชื่อว่ามันจะเป็นคอร์สฟรีที่ให้ความรู้เท่าคอร์สที่ต้องจ่ายเงินหลักแสนแน่นอนฮ๊าฟ

ความในใจ สาเหตุที่ตั้งคอร์สนี้ขึ้นมาเพราะ อยากส่งมอบความรู้ที่สมบูรณ์ให้ได้มากที่สุดแก่สังคมที่ผมรัก เพราะเรื่อง docker ในเบื้องลึกนั้นมันไม่ได้ง่ายแบบที่หลายๆคนเข้าใจ ดังนั้นถ้าใครเห็นเห็นจุดไหนอธิบายผิดไป หรืออยากเสริมตรงไหน โปรดอย่าได้รอช้าทำ Pull request หรือส่งข้อความหาผมได้ที่ลิงค์นี้เบยครัช

เนื้อหาของ Docker ที่จะเอามาอธิบายมันเยอะม๊วกกกก แต่หลักๆที่อ่านจบผมรับรองว่าเราจะรู้จักและใช้งาน Docker ได้ สามารถจัดการ Microservices ด้วย Kubernetes เป็น และสามารถนำไปสร้าง Cluster บนผู้ให้บริการ Cloud Computing ได้แน่นอนครับ ... ซึ่งอย่างที่บอกแต่ละเรื่องมันสามารถแตกมาเป็นคอร์สของมันเองได้เลย ดังนั้นผมจะขอไล่ไต่ระดับไปทีละเรื่อง และบางเรื่องจะขอแยกออกมาเป็นคอร์สของมันอีกทีนะกั๊ฟ 🤠

🤔 Docker คือไย? ทำไมนิยมจุง?

😢 ปัญหา

สมมุติว่าเราต้องเขียนเว็บซักตัวที่ต้องต่อ database เราต้องทำไงบ้าง? ... อย่างแรกเลยเราต้องติดตั้งโปรแกรมต่างๆในเครื่องเราก่อนชิมิ เช่นคนเขียน php ก็ต้องติดตั้ง Apache หรือ Java ก็ต้องติดตั้ง JDK, Node, .NET บลาๆแล้วแต่ว่าเราจะเขียนเว็บด้วยอะไร ส่วนตัว database เราก็ต้องไปติดตั้งมันเช่นกัน SQL, MySQL, MongoDB บลาๆขึ้นอยู่กับเราจะใช้ database ตัวไหน หรือพูดแบบรวบรัดง่ายๆคือ เราต้องเตรียม Environment ของเครื่องคอมเราให้พร้อมที่จะทำงานนั่นเอง จากที่ฟังดูก็เหมือนไม่มีอะไรยากเลยชิมิ? ตามรูปด้านล่าง

แต่เวลาที่เราทำงานกันเป็นทีมจริงๆเราก็จะพบว่า ทุกคนในทีมก็ต้องเตรียม Environment แบบเดียวกัน จะได้ทำงานด้วยกันได้ ซึ่งเราก็จะพบกับความหฤหรรษ์ว่า บางคนใช้ Windows บางคนใช้ MacOS บางคนใช้ Linux และแม้แต่กระทั่ง Software Version ก็ยังเป็นคนละตัวกันอีกต่างหาก ตามรูปเบย

ข้อควรระวัง บ่อยครั้งที่เราไม่สนใจว่าเครื่องแต่ละคนเป็นยังไงใครอยากใช้อะไรก็ใช้ไป มันจะทำให้เรามองไม่เห็นปัญหา เช่น การเขียนโค้ดแบบนี้มันทำงานได้กับ version นี้เท่านั้น พอไปทำงานที่เครื่องอื่นที่ไม่ได้ใช้ version นั้นๆ มันก็จะทำงานไม่ได้ ทำให้เกิดปัญหาที่หลายๆคนมักจะได้ยินว่า "ที่เครื่องผมมันทำงานได้นะ" งุยล่ะ

สมมุติว่าเคลียกับคนในทีมจนได้ environments เหมือนกันทั้งทีมละ สุดท้ายเราก็ต้องเอาเว็บที่เราเขียนเสร็จ ไปทำงานที่เครื่องเซิฟเวอร์ซักตัว ซึ่งคำถามคือ ... เจ้าเซิฟเวอร์เครื่องนั้นมันถูกตั้ง Environments เหมือนกับของเราหรือเปล่า?

สมมุติอีกว่าตั้งค่าต่างๆของเซิฟเวอร์ได้ไม่มีปัญหาละกัน ซึ่งอยู่มาวันหนึ่งคนเข้าชมเว็บเยอะขึ้นเราก็ต้องขยายเซิฟเวอร์เพื่อรองรับผู้ใช้ปริมาณมากๆ ... แล้วเครื่องเซิฟเวอร์ที่เราขยายเพิ่มขึ้นมา เราจะตั้งค่า Environment พวกนั้นยังไง? พวกมันจะคุยกันยังไง? Network ล่ะ? Infrastructure บลาๆ

จากปัญหาที่ว่ามาก็น่าจะพอเห็นภาพแบบคร่าวๆแล้วล่ะว่า

😄 วิธีแก้ปัญหา

ซึ่งแน่นอนว่าปัญหาที่เราเจอ ขาเดฟทั่วโลกก็เจอปัญหานี้เช่นกัลล์ ซึ่งหนึ่งในการแก้ปัญหาแบบนี้ที่กำลังได้รับการนิยมอยู่ก็คือการใช้ 🐳 Docker นั่นเอง ซึ่งมันจะช่วยเราได้ยังไงลองย้อนกลับไปที่จุดเริ่มต้นกันนิสสส์นุง

เมื่อเรา/ทีมจะเขียนอะไรก็ตาม เราก็จะตกลงกันให้เรียบร้อยว่าจะใช้ Environments เป็นแบบไหน แล้วเราก็จะสร้างสิ่งที่เรียกว่า 🖼️ Docker Image ขึ้นมา (ขออธิบายให้เข้าใจง่ายๆแบบนี้ก่อนละกันนะ)

Docker Image คล้ายๆกับการที่เราทำ Backup Image ที่มันจะจำสถานะทุกอย่างที่เรากำหนดเอาไว้ เช่น ลงโปรแกรมอะไรไว้ เวอร์ชั่นเท่าไหร่ ของต่างๆถูกตั้งค่าเอาไว้ยังไง บลาๆ แล้วใครก็ตามที่เอา Image ไปใช้ก็จะได้สถานะ Environments ทุกอย่างตามที่ Image ถูกตั้งค่าไว้นั่นเอง

หลังจากที่ได้ Docker Image ละถัดมา ทุกคนในทีมก็จะใช้ 🖼️ Docker Image ตัวนั้นอีกที โดยเจ้า Docker Image จะจัดการ Environments ทุกอย่างให้เป็นไปตามที่มันถูกระบุไว้ ตามรูปด้านล่างเบย

และแน่นอนที่เซิฟเวอร์ก็สามารถเอาไปใช้ได้ และรวมถึงการทำ Server Scaling ก็เช่นกัน

คำเตือน การทำ Scaling โดยใช้ Docker ไม่ได้ง่ายแบบในตัวอย่างนะจ๊ะ ซึ่งเนื้อหาทั้งหมดของการทำ Orchestration ทั้งหมดแมวน้ำจะขอแยกไปไว้ในคอร์ส Kubernetes นะกั๊ฟ เพราะในคอร์สนี้จะขอเน้นเรื่อง Docker เพียงอย่างเดียวไปก่อนนั่นเองฮ๊าฟ

อาววล๊า เพียงเท่านี้ก็น่าจะพอเห็นภาพกันแล้วนะว่าทำไมเจ้าวาฬน้ำเงิน🐳 Docker ถึงได้เป็นที่นิยมกันจุง และน่าจะเพียงพอต่อการตัดสินใจว่าควรจะสละเวลาตีพุงดู Netflix ของเรามานั่งศึกษามันอ่ะป่าวละ ดังนั้นในบทความถัดไปของคอร์สนี้เดี๋ยวเราจะมาเริ่มลงรายละเอียดและลองใช้ Docker กันดูบ้างดีก่าฮั๊ฟ 😘

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

🐳
📦Docker Containers
Saladpuk Fanclub
👶 Docker ขั้นพื้นฐาน
👶 Microservices พื้นฐาน
👶 Azure Service Fabric
https://www.facebook.com/mr.saladpuk
Docker Image ไม่ใช่ไฟล์รูปนะ 🤣
ช่องทางสนับสนุนค่าอาหารแมวน้ำกั๊ฟ 😘