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
  • 🚨 Prerequisites
  • 🔑 Docker Hub Sign-Up
  • 🔐 Docker Login
  • 🐳 Docker Tag
  • 🐳 Docker Push
  • 🐳 Docker Pull
  • 🎯 Summary

Was this helpful?

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

Docker Push

ส่ง 🖼️ Container Images ให้คนอื่นได้ใช้กัน

Previous🖼️ Container ImageNextWSL

Last updated 4 years ago

Was this helpful?

🤠 จาก เราได้ลองสร้าง 🖼️ Container Images ตัวแรกของเราไปเรียบร้อยแล้ว ดังนั้นในบทความนี้เราก็ส่งมันไปให้ชาวโลกได้ลองเล่น 🖼️ Container Images ของเราดูบ้างกัลล์

แนะนำให้อ่าน บทความนี้เป็นส่วนหนึ่งของคอร์ส ที่จะสอนตั้งแต่เรื่องพื้นฐานยันระดับ master กันไปเลย ซึ่งเนื้อหาทั้งหมดจะทำให้เพื่อนๆเข้าใจและใช้งาน Docker โดยใช้ Kubernetes เป็น และสามารถสร้าง Cluster เพื่อนำไปใช้งานบน Cloud Providers ต่างๆได้ และทั้งหมดที่พูดมานั้นอ่านได้ฟรีเลย ดังนั้นหากสนใจก็สามารถกดเจ้าวาฬสีน้ำเงินเพื่อไปอ่านตั้งแต่เริ่มต้นได้ครัช 🤠

🚨 Prerequisites

หากใครยังไม่ได้สร้าง 🖼️ Container Images รบกวนไปสร้างให้เรียบร้อยก่อน ซึ่งสามารถทำตามได้จาก กั๊ฟ แต่ถ้าอยากรู้แค่ขั้นตอนก็อ่านดูแต่ละ step ก็ได้เหมียนกัลล์

ก่อนที่จะไปต่อ ลองตรวจสอบ Image ที่อยู่ในเครื่องกันโหน่ย ด้วยคำสั่งลิสต์รายการ Images ด้านล่าง

docker images

จากที่ร่ายมาทั้งหมดนั่นหมายความว่าเราจะต้องส่ง 🖼️ Container Image ของเราไปเก็บไว้ที่ 🌎 Docker Hub ดังนั้นเราก็ต้องมี Account ของเขาเสียก่อน

🔑 Docker Hub Sign-Up

🔐 Docker Login

หลังจากที่สมัครสมาชิกเสร็จ เราก็จะมา Login กันโดยเปิดตัว Command Prompt ขึ้นมาแล้วใช้คำสั่ง docker login ตามด้วย username และ password ที่เราตั้งไว้นั่นเอง (ตอนใส่รหัสผ่านมันจะไม่มีตัวอักษรขึ้นมาไม่ต้องตกใจนะ คอมไม่ได้เสีย 🤣)

docker login

Login Succeeded

ส่วนใครไม่ถนัดใช้ Command ก็สามารถคลิกขวาที่ไอคอนปลาวาฬ แล้วทำการ Login จากตรงนั้นก็ได้เช่นกันฮัฟ

เมื่อ Login เสร็จเรียบร้อยถัดไปเราก็จะเริ่มเอา 🖼️ Container Image ของเราส่งขึ้นไปเก็บไว้ที่ 🌎 Docker Hub กันต่อเลย

🐳 Docker Tag

ก่อนอื่นเราต้องเตรียม 🖼️ Container Image ต่ออีกนิดหน่อย โดยการติดสิ่งที่เรียกว่า tag เสียก่อน เพื่อเป็นการบอกว่าเรากำลังจะเอา 🖼️ Container Image ตัวไหนในเครื่อง ไปใส่ตัวไหนที่อยู่บน 🌎 Docker Hub

ซึ่งรายละเอียดเรื่อง tag มันจะคล้ายๆกับการทำเวอร์ชั่น เช่น ตัวนี้เป็นเวอร์ชั่น 1 นะ ตัวนี้เป็นเวอร์ชั่นทดสอบนะ บลาๆ ซึ่งก่อนที่เราจะไปต่อป๋มขอแสดงรายการ 🖼️ Container Image ที่อยู่ในเครื่องอีกครั้งก่อน จะได้ไม่ต้องเลื่อนขึ้นๆลงๆไปมาด้วยคำสั่ง docker images ก็จะเห็นตามรูปด้านล่าง

คราวนี้เราจะใช้คำสั่ง docker tag แล้วตามด้วย ชื่อ image ในเครื่องของเรา กับ ชื่อ image ใน docker แบบตัวอย่างด้านล่างนี้ (ชื่อ image ใน docker จะต้องนำหน้าด้วย username ของเราเสมอ)

docker tag demo01 saladpuk/demo01

จากคำสั่งด้านบนมันก็จะเป็นการทำให้ docker ในเครื่องเรารู้ละว่าเจ้า 🖼️ Container Image ที่ชื่อว่า demo01 ถ้ามันถูกเอาขึ้น 🌎 Docker Hub มันจะถูกเอาไปเก็บใน account ของ saladpuk แล้วเก็บไว้ในตัวที่ชื่อว่า demo01 ตามรูปด้านล่างนั่นเอง

🐳 Docker Push

หลังจากที่เราตั้ง tag เรียบร้อย ลองดูรายการ 🖼️ Container Images ในเครื่องเราอีกครั้งก็จะเห็นเจ้า tag ใหม่ที่พึ่งสร้างมาด้วยตามรูปด้านล่างเลย ซึ่งสังเกตได้ว่า Image Id มันจะเป็นเลขเดียวกัน

คราวนี้เราก็จะเอาตัว demo01 ไปฝากไว้กับ 🌎 Docker Hub ด้วยคำสั่ง docker push ตามคำสั่งด้านล่าง

docker push saladpuk/demo01

ลิงค์นี้อาจจะไม่อยู่แล้วถ้าเลยเดือนเมษา 2021 เพราะป๋มน่าจะไม่ได้อัพเดทมันนะกั๊ฟ 😢

Public Accessibility อย่างที่เคยบอกไปว่าโดยปรกติตัว Container Image ของเราจะถูกเปิดให้ทั่วโลกเห็น (Public) นั่นหมายความว่าใครที่รู้ลิงค์นี้ หรือ search หา เขาก็จะสามารถเข้ามาลองเอา Container Image ของเราไปลองเล่นได้ ดังนั้นของที่เป็น sensitive data เช่น secrect key ต่างๆนาๆ ก็อย่าเอาไปเก็บไว้ในนั้นนะ

ส่วนสำหรับใครที่ไม่อยากจะให้คนอื่นแอบเข้ามาใช้ Container Image ของเราก็สามารถตั้งค่าให้เป็น private ได้จากที่เว็บ docker hub ตามรูปด้านล่างได้เลยฮัฟ

🐳 Docker Pull

หลังจาก Login เสร็จให้กดปุ่ม + ADD NEW INSTANCE เพื่อสร้างเครื่อง Linux จำลองขึ้นมาเลย (ใครไม่เคยใช้ Linux ก็จะได้ใช้ตอนนี้แหละ 🤣) โดยเราสามารถใช้งานได้ 4 ชมเต็มๆตามรูปด้านล่าง

จากตรงนี้เราก็จะลองเอา Container Image ของเรามาลองเล่นดู โดยที่หน้าจอดำๆของเครื่อง Linux ให้ใช้คำสั่งด้านล่างเพื่อ Run ตัว Container ของป๋มเล่นดู

docker run saladpuk/demo01

Counter: 1 Counter: 2 Counter: 3 ...

เราก็จะเห็นว่าตัว Container Image ของเราสามารถทำงานได้เหมือนกับที่อยู่ในเครื่องของเรา แม้ว่าเครื่องที่ ดช.แมวน้ำ ทำเป็นตัวอย่างนั้นจะใช้ Windows OS ก็ยังสามารถไปทำงานบน Linux OS ได้เป็นปรกตินั่นเองครัช

🎯 Summary

จากตรงนี้เราก็น่าจะพอเห็นแนวทางในการเอา 🖼️ Container Image ของเราไปแชร์ให้คนอื่นได้ลองใช้ หรือเอาไปลองทำงานบนเครื่องอื่นๆกันแล้วนะ ซึ่งการที่เราจะทำแบบนั้นได้ก็ต้องมีการสร้าง 🔐 Docker Account นิดหน่อย เพื่อที่จะเข้าไปใช้งาน 🌎 Docker Hub ได้นั่นเอง

ในบทความถัดไปเราจะมาลองดูกันว่า ถ้าเรามีโปรเจคที่ใช้ Docker หลายๆตัว เช่นมี Front-end, Back-end มีการต่อ Database ต่างๆนาๆ ซึ่งทั้งหมดนั่นเราจะเอาไปทำงานบน Docker ได้ยังไง ก็เชิญอ่านได้จากบทความถัดไปขอรับ (ใจเย็นๆนะโยม บทความถัดไปกำลังเขียนอยู่)

จากรูปด้านก็จะเห็นว่า ในเครื่องของ ดช.แมวน้ำ มี 🖼️ Container Images อยู่ 2 ตัว โดยตัวที่ป๋มจะส่งไปให้ชาวโลกเห็นคือตัว demo01 ซึ่งใน เราจะรู้ว่าพี่วาฬ 🐳 นั้นเก็บ Images ต่างๆทั่วโลกไว้ที่ 🗃️ Docker Registry หรือที่เราเรียกกันติดปากว่า 🌎 Docker Hub นั่นเอง

ขั้นตอนสมัครสมาชิกค่อนข้างเรียบง่าย ดังนั้นเหล่าผองแมวน้ำรบกวนไปสมัครยืนยันอีเมล์กันเองได้จากลิงค์นี้เบย แล้วเมื่อสมัครเสร็จก็กลับมา Login ต่อที่เครื่องเราได้ละ

เมื่ออัพโหลดทุกอย่างเสร็จสิ้้นก็หมายความว่าตัว 🖼️ Container Image ของเรานั้นไปอยู่กับพี่วาฬเรียบร้อยแล้วนั่นเอง ซึ่งเพื่อนๆสามารถเข้าไปดูได้ที่ลิงค์นี้ เย่ๆ

สุดท้ายเมื่อเราเอาขึ้นไปละ ก็ลองเอามาเล่นซะหน่อยดิ๊ แต่ถ้าจะเอามาเล่นในเครื่องตัวเองก็คงจะได้ผลลัพท์เหมือนเดิม ดังนั้นในรอบนี้เราจะลองใช้คอมพิวเตอร์เครื่องอื่นมาเล่น Container Image ของเรากันดีก่า โดยการกดเข้าไปที่ลิงค์นี้เบย ซึ่งเมื่อเข้ามาก็ Login > Start ให้เรียบร้อยครัช

อ่านแล้วชอบป๋มก็ขอฝากแชร์ หรือกดติดตามเพื่อจะได้ไม่พลาดบทความอื่นๆจาก ดช.แมวน้ำ ได้จากลิงค์นี้เบยครัช 😍

🐳
📢
บทความที่ 5
https://hub.docker.com
https://hub.docker.com/r/saladpuk/demo01
https://labs.play-with-docker.com
Saladpuk Fanclub
บทความที่ 6
🐳 Docker
บทความที่ 6
ช่องทางสนับสนุนค่าอาหารแมวน้ำกั๊ฟ 😘