Difference between revisions of "Docker"

From CMU ITSC Network
Line 124: Line 124:
  
 
== Workshop 3 : push image ==
 
== Workshop 3 : push image ==
 +
* สมัครบัญชี https://hub.docker.com
 +
* เข้าสู่ระบบแล้วสร้าง repository <br>[[File:Create-repo.PNG|link=]]
 +
* tag image เป็นชื่อบัญชีที่สร้าง
 +
<syntaxhighlight lang=poweshell>
 +
docker tag alpine:latest [accountname]/alpine:latest
 +
</syntaxhighlight>
 +
* แสดงรายการ image
 +
<syntaxhighlight lang=poweshell>
 +
docker images
 +
</syntaxhighlight>
 +
<syntaxhighlight lang=poweshell>
 +
alpine                    latest                caf27325b298        5 weeks ago        5.53MB
 +
supawit/alpine            latest                caf27325b298        5 weeks ago        5.53MB
 +
</syntaxhighlight>
 +
* login เข้า hub.docker.com ด้วยบัญชีที่สร้าง
 +
<syntaxhighlight lang=poweshell>
 +
docker login -u [accountname]
 +
</syntaxhighlight>
 +
* push image ที่ tag ไว้ขึ้น repository บน registry
 +
<syntaxhighlight lang=poweshell>
 +
docker push [accountname]/alpine:latest
 +
</syntaxhighlight>

Revision as of 07:35, 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

Workshop 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

Workshop 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

  • สมัครบัญชี https://hub.docker.com
  • เข้าสู่ระบบแล้วสร้าง repository
    Create-repo.PNG
  • tag image เป็นชื่อบัญชีที่สร้าง
docker tag alpine:latest [accountname]/alpine:latest
  • แสดงรายการ image
docker images
alpine                     latest                 caf27325b298        5 weeks ago         5.53MB
supawit/alpine             latest                 caf27325b298        5 weeks ago         5.53MB
  • login เข้า hub.docker.com ด้วยบัญชีที่สร้าง
docker login -u [accountname]
  • push image ที่ tag ไว้ขึ้น repository บน registry
docker push [accountname]/alpine:latest