26
เปลี่ยนผานจาก Application สู Docker container Internet Innovation Lab NECTEC , Thailand Science Park http://bit.ly/WUNCA36

เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

เปลี่ยนผานจาก Application สู

Docker containerInternet Innovation Lab

NECTEC , Thailand Science Parkhttp://bit.ly/WUNCA36

Page 2: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

วิธีลงโปรแกรมบนคอมพิวเตอร

Setup.exe , Setup.dmg

Page 3: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

วิธีลงโปรแกรมบนคอนเทนเนอร

docker run “name image”

Page 4: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

Docker Image มาจากที่ไหน https://hub.docker.com/explore/

Page 5: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

วันนี้มีอะไร ---> มาสราง Docker image กันเถอะ

Page 6: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

พื้นฐานตองรู● มีพื้นฐานเกี่ยวกับ shell ( ใชคําสั่ง command line)

● มีความรูพื้นฐานเกี่ยวกับ docker

● มีประสบการณ การใช docker run

● ใช image จาก https://hub.docker.com/

● เคยพัฒนา หรือติดตั้ง software บน server

● เคยใช docker build, Dockerfile

Page 7: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

ทบทวน docker กอนเริ่มใชงาน

http://www.siamhtml.com/getting-started-with-docker/

Page 8: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

ทบทวน docker กอนเริ่มใชงาน

Page 9: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

เริ่มตนที่ Developer● เริ่มตนที่…...Developer

○ สนับสนุนให Developer ใช Docker ○ App จะ run ไดอยางยั่งยืน Code ตองมีสวนเอื้อ

● ผลพลอยได….ชวยทั้ง ○ Dev พัฒนางาย อยูใน container dependencies ไมตีกัน สราง environment ของแตละ app ได ○ Ops ไดรับการสงมอบ docker image จาก dev deploy ขึ้นไดทันที ไมตองมี ติดตั้ง จุกจิก

● แกไขใหม...Migrate App เกาๆ

https://en.wikipedia.org/wiki/DevOps

Page 10: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

การไดมาของ Docker image (..ที่ดี..)

● การใช Docker Image ที่มีอยูแลว● Build จาก Dockerfile● จัดการ Dependencies อยางเหมาะสม ของแตละ Applications● สามารถ Config ขณะ Runtime ได● แยก Application แลวผูกเขาดวยกันดวย link● เก็บขอมูลไวใน Persistent volume ภายนอก● จัดการ Log/Monitoring อยางเหมาะสม

Page 11: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

การใช Docker image ที่มีอยูแลว● มองหา software ใน https://hub.docker.com/● ดูจาก official + vendor + pull + last push + git● นํามาใชเลย แบบ config ขณะ run● นํามาเปน base ใน Dockerfile

Page 12: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

Build จาก Dockerfile● แนะนํามากกวา docker commit● องคความรู อยูในรูปแบบของ text เปนเอกสารไดในตัว● ทําซํ้า และปรับแตงได● ใช version control ได● ใชงาน automate build

Page 13: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

จัดการ Dependencies อยางไร● แยก lib ออกจาก code● ภาษาสมัยใหมมักจะมีตัวจัดการ Dependencies

○ เชน PHP:Composer, Java:Maven, Python:pip, JS:npm○ รายการของ dependencies จะอยูในรูปแบบของไฟล○ สะดวกใชเวลา build

Code

Base Environment

(PHP, Python, JAVA)

Copy Build

Application Image

Library Repository

Page 14: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

Config at runtime● ควรแยก Config ออกจาก code เชน DB Access Credential ● ผาน Environment Variable [docker run -e XXX=xxx]● ผาน config file [docker run -v /myconfig:/etc/app/conf]● Customized at runtime

Application Image

Default config Running Instance

Run

Runtime config

Page 15: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

Linked Container หลายอันเขาดวยกัน● แยกการทํางาน ระหวาง application กับ backend service เชื่อมกันผาน --link● หลักการ “หนึ่งอัน ทําหนึ่งอยาง-Do one thing at a time”● หากตองการ scale สามารถ scale ไดเฉพาะบาง container

Application

MySQL

Application

Page 16: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

แยกขอมูลไวโดย Persistent volume● ผานการใช -v <host path>:<container path>● ควรแยก User data ออกจาก application

○ ลบ container แลว data ยังอยู○ สะดวกในการยาย Application○ เหมาะกับทํางานบน cluster (Kubernetes, Docker)

Page 17: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

จัดการ Log/monitoring อยางเหมาะสม● Log สําคัญมาก เพราะ เราไมสามารถ ssh เขาไปเพื่อตรวจสอบได ตองอาศัยขอมูลจาก

Log● Log ผาน STDOUT แทนที่ Log file● ชวยใหจัดการเรื่อง Log ไดงายขึ้น ดูผาน docker logs หรือ ใช log shipper ไดงาย

ลดการจัดการไฟล Log ทํา centralize log ได● มี health check สําหรับ process ที่ทํางานเคียงขางกัน ทําใหเรานํา monitoring tools

ไป check การทํางานได

Page 18: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

ตัวอยางการสราง Image

Page 19: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

ศึกษา Image อยางเขาใจ

Page 20: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker
Page 21: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

Dockerfile quick reference Keyword Description

FROM Base image สําหรับเริ่มตน

MAINTAINER ขอมูลผูเขียน Dockerfile

RUN รัน command ใน container แลวบันทึกลงใน image

CMD Command ที่จะทํางานเมื่อเริ่ม container

EXPOSE ขอมูลเกี่ยวกับการ bind port

ENV ตั้งคา environment variable

ADD Copy file, folder, URL ไปยัง image

COPY Copy file, folder ไปยัง image

Keyword Description

ENTRYPOINT Command ที่จะทํางานเมื่อเริ่ม container ทํางานกอน CMD

VOLUME ขอมูลเกี่ยวกับโฟลเดอรที่สามารถ จัดเก็บภายนอกได

USER เปลี่ยน user ที่ทํางาน

WORKDIR เปลี่ยน folder ที่ทํางาน

ARG ตัวแปรที่อนุญาตใหสงผาน --build-arg ขณะ build image

Page 22: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

เรียนรูจากมืออาชีพ Wordpresshttps://github.com/docker-library/wordpress/blob/43d32697c6862dcb48ca520e87e1e0fb585aee03/php5.6/apache/Dockerfile

Page 23: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

การใช base image จาก image ที่ใกลเคียง

การใช RUN แบบหลายๆ command ชวยเรื่อง image layers

การแกไขไฟลโดยใช echo

Enable apache module

Page 24: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

เตรียม Volume สําหรับ mount จากภายนอก

ใช shell script ชวยเชนเรื่อง permission และการ set คาจาก ENV

บางโปรแกรมตองใชคําสั่งเฉพาะเพื่อ run เปน foreground

Page 25: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

คุณก็สราง docker image ของคุณได

Page 26: เปลี่ยนผ านจาก Application สู NECTEC , Thailand Science ... · การได มาของ Docker image (..ที่ดี..) การใช Docker

Q&A