Difference between revisions of "Docker"

From CMU ITSC Network
Line 123: Line 123:
 
https://docs.docker.com/engine/reference/commandline/docker/
 
https://docs.docker.com/engine/reference/commandline/docker/
  
== Work shop 3 : push image ==
+
== Workshop 3 : push image ==

Revision as of 06:22, 8 March 2019

What is Docker

  • Software Container เป็นการสร้างสภาพแวดล้อมสำหรับ software โดยแยกออกออกมาเพื่อไม่ให้กวนกับ software อื่น ๆ บนระบบปฏิบัติการเดียวกัน สามารถนำ Container ไปทำงานบนเครื่องไหนก็ได้จะได้ผลเหมือนกัน
  • Docker เป็น engine ในการจัดการ Software Container ที่ใช้งานได้ง่าย ไม่ซับซ้อน เป็นที่แพร่หลาย
  • Container VS VM
    Docker-containerized-and-vm-transparent-bg.png
    *image from https://www.docker.com

Pain point

  • ต้องติดตั้ง ตั้งค่า server ที่จะรัน Application
  • ไม่สามารถติดตั้งหรืออัพเกรด Library บางอย่างบน OS ได้เนื่องจากกระทบกับ Application อื่น
  • เครื่อง Dev กับ Production ไม่เหมือนกัน

Docker Architecture

Docker Engine

  • Docker Client คือพวก CLI ของ Docker ที่ใช้ในการจัดการ
  • Docker Daemon คือ service ของ Docker ที่รันบน Server เราจะเรียก Server นี้ว่า Docker Machine

Docker Hub

  • เป็น Repository หรือเรียกว่า Registry ทำหน้าที่ให้บริการ Docker Image มี Image ของผู้พัฒนาโปรแกรมต่าง ๆ ให้ใช้งาน มีการจัดเก็บ version ของ image อย่างเป็นระบบ มีเอกสารคู่มือการใช้งาน Image

โดยให้บริการที่ https://hub.docker.com ใช้งานได้ฟรี

  • สามารถสร้าง Private Registry บน Server เองได้

Docker Image

  • เป็น Template ที่สร้างขึ้นโดยนักพัฒนาเป็นชุดของ Software/Library สามารถดึง(pull)มาจาก Registry เพื่อใช้งานหรือสร้างขึ้นมาเองได้
  • เป็นไฟล์แบบอ่านอย่างเดียว

Docker Container

  • คือ Image ที่ถูกรันขึ้นมาใช้งาน โดยจะมีสภาพแวดล้อมตาม Image ต้นแบบ
  • ไฟล์หรืออะไรที่ถูกสร้างขึ้นมาใน Container จะหายไปเมื่อมีการลบ Container
  • สามารถการเปลี่ยนแปลงใน Container กลับไปเป็น Image ได้เรียกว่า commit

Docker-image-container.png

Docker Machine

Work Shop 1 : pull image

เปิด powshell ขึ้นมา แล้วพิมพ์คำสั่งในการ pull image

docker pull mysql:latest
docker pull ubuntu:latest
docker pull alpine

แสดง image ที่อยู่บนเครื่อง

docker images
REPOSITORY                 TAG                    IMAGE ID            CREATED             SIZE
mysql                      latest                 91dadee7afee        2 days ago          477MB
ubuntu                     latest                 47b19964fb50        4 weeks ago         88.1M
alpine                     latest                 caf27325b298        5 weeks ago         5.53MB

Work Shop 2 : General Commands

Command Description
docker build Build an image from a Dockerfile
docker commit Create a new image from a container’s changes
docker container Manage containers
docker cp Copy files/folders between a container and the local filesystem
docker exec Run a command in a running container
docker image Manage images
docker images List images
docker inspect Return low-level information on Docker objects
docker logs Fetch the logs of a container
docker network Manage networks
docker ps List containers
docker pull Pull an image or a repository from a registry
docker push Push an image or a repository to a registry
docker restart Restart one or more containers
docker rm Remove one or more containers
docker rmi Remove one or more images
docker run Run a command in a new container
docker stats Display a live stream of container(s) resource usage statistics
docker stop Stop one or more running containers
docker tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
docker top Display the running processes of a container
docker volume Manage volumes

https://docs.docker.com/engine/reference/commandline/docker/

Workshop 3 : push image