Difference between revisions of "Docker"
From CMU ITSC Network
| Line 50: | Line 50: | ||
== Work Shop 2 : คำสั่งพื้นฐาน ==  | == Work Shop 2 : คำสั่งพื้นฐาน ==  | ||
| + | {| class="wikitable"  | ||
| + | |-  | ||
| + | |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/  | ||
Revision as of 06:16, 8 March 2019
Docker คืออะไร
- Software Container เป็นการสร้างสภาพแวดล้อมสำหรับ software โดยแยกออกออกมาเพื่อไม่ให้กวนกับ software อื่น ๆ บนระบบปฏิบัติการเดียวกัน สามารถนำ Container ไปทำงานบนเครื่องไหนก็ได้จะได้ผลเหมือนกัน
 - Docker เป็น engine ในการจัดการ Software Container ที่ใช้งานได้ง่าย ไม่ซับซ้อน เป็นที่แพร่หลาย
 - Container VS VM

*image from https://www.docker.com 
ปัญหาที่เจอบ่อย
- ต้องติดตั้ง ตั้งค่า 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 Machine
- Docker Desktop for Windows https://docs.docker.com/docker-for-windows/install/
 - Docker for Ubuntu https://docs.docker.com/install/linux/docker-ce/ubuntu/
 
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 : คำสั่งพื้นฐาน
| 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/