Docker

#HelloInfra #HelloErmine #HelloWorld2021

Docker คือ?

แพลตฟอร์มซอฟต์แวร์ที่ช่วยให้คุณสร้าง ทดสอบ และติดตั้งแอปพลิเคชันใช้จริงได้อย่างรวดเร็ว Docker จะบรรจุซอฟต์แวร์ลงไปในหน่วยที่เป็นมาตรฐานเรียกว่า Container ซึ่งจะมีทุกสิ่งที่ซอฟต์แวร์ต้องใช้ในการเรียกใช้งาน รวมทั้ง Library เครื่องมือสำหรับระบบ Code และ Run time

Docker image คือ?

ตัวต้นแบบของ container ซึ่งภายในจะประกอบด้วย application ต่าง ๆ ที่มีการติดตั้งไว้เพื่อใช้งานสำหรับ service

Docker container คือ?

สามารถมองได้เสมือนกล่อง ซึ่งนำ docker image มาติดตั้ง เพื่อให้สามารถใช้งาน service ที่ต้องการจาก image นั้น ๆ ได้

Docker-compose คือ?

script คำสั่ง ที่เอาไว้สร้าง container หลาย ๆ อันขึ้นมาพร้อมกัน โดยใช้คำสั่งเดียว

คำสั่ง Docker compose

version - เป็นการระบุว่าเราจะใช้ Compose file เวอร์ชั่นไหน

services - เป็นการระบุ container ที่ต้องใช้

image - เป็นการเรียกใช้ Image จาก Docker hub Registry

ports - เป็นการทำ port mapping ระหว่าง host กับ container

volumes - การสร้าง volume มี 2 แบบ ซึ่งสร้างอยู่ในชื่อของ server แต่ละตัวก็คือการเชื่อมต่อ volume แต่ถ้าอยู่ใน ระดับเดียวกัน server: จะเป็นการสร้าง volume

build - การบอกว่าให้ใช้ image ที่สร้างจาก Dockerfile

links - เป็นการผูก service เข้าด้วยกันทำให้ service สามารถเรียกใช้งาน server ที่ link ได้

restart: alway - เป็นการกำหนดให้ service นั้น restart ตัวเองอัตโนมัติเมื่อเกิดข้อผิดพลาด หรือสั่งให้เริ่มต้นทำงานอัตโนมัติเมื่อเปิดเครื่องเปิดใหม่

network - เป็นการใช้เพื่อสร้างเส้นทางสื่อสารกันระหว่าง container

memory limit - การกำจัดการใช้งาน container เพื่อไม่ให้ใช้ ram เกินที่ตั้งไว้

context - path ของ Dockerfile เพื่อที่จะใช้การสร้าง container

memory reservations - การกำหนดค่าการใช้งาน ram ขั้นต่ำของ container

depens_on - สั่งให้ service นั้นเริ่มทำงานหลังจาก service ที่ depens_on อยู่เริ่มต้นทำงานเสร็จแล้ว

อธิบาย docker-compose.yml

version: '3.1' <<# Version ของ docker-compose
service: <<#Service ที่เราจะใช้
    msql:<<#ชื่อserver
        image: mysql:5.7 <<#image ที่เราจะใช้
        container_name: mysql <<#ตั้งชื่อ container
        port:
            -3308:3306 <<#Map Port จาก Host กับ Container
        volumes:
            -"./data/var/lib/mysql" <<Map Folder หรือ File จาก Host กับ Container
        environment:
        ...<<#Environment ของ image        

ทำไมถึงต้องใช้ Docker ?

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

วิธีการติดตั้ง Docker

1.1 ถ้าเคยมีการลง Docker มาก่อนให้ลบ Docker version เก่าออกก่อน หากไม่เคยให้ข้ามขั้นตอนนี้ไป

sudo apt-get remove docker docker-engine docker.io containerd runc

1.2 ทำการอัปเดต package ของ ubuntu

 sudo apt-get update

1.3 ลงตัวช่วยในการติดตั้ง Docker โดยติดตั้ง Package เพิ่มเติมเพื่อให้สามารถใช้งาน apt บน HTTPS ได้

 sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

1.4 ติดตั้ง GPG Key ของ Docker

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

1.5 ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า repository

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

วิธีการสร้าง container สำหรับการ run service

ติดตั้ง Docker image ที่ต้องการ ในที่นี้จะติดตั้ง nginx

sudo docker pull nginx

Website สำหรับ pull image ที่ต้องการใช้งาน

Basic Docker Command

docker ps <option>
  • ใช้สำหรับดู container ที่กำลัง run อยู่

  • <option> อย่างเช่น -a ที่ย่อมาจาก all

docker exec -it <name container> bash
  • การเข้าไปดูข้อมูลหรือแก้ไขข้อมูลใน container นั้น ๆ

docker run
  • คำสั่งในการ run container

แหล่งอ้างอิง📑

Last updated

Was this helpful?