How to ใช้งาน Docker Container

Patchara Chukiatkajohn
I GEAR GEEK
Published in
3 min readJan 21, 2020

จัดการกับ Docker Image ให้สร้างออกมาเป็น Docker Container แล้วใช้งาน

จากสองบทความที่แล้ว เราได้เรียนรู้กันว่า Docker นั้นคืออะไร

และจะเขียน Docker File เพื่อสร้าง Docker Image อย่างไร

ในบทความนี้เราจะมาเรียนรู้การใช้งาน Docker Image เพื่อสร้างเป็น Docker Container จากนั้นก็เริ่มใช้งานเจ้า Docker Container กัน

จัดการกับ Docker Image

เรามาเริ่มกันที่การใช้งานคำสั่งเพื่อจัดการกับ Docker Image หรือเพื่อเตรียมเจ้า Docker Image ที่เราจะเอามาใช้งานเป็น Docker Container

เราสามารถตรวจสอบ Image ที่มีในเครื่องของเรา (Local Image) ด้วยคำสั่ง

docker images

หรือ

docker image ls

แล้วถ้าอยากได้ Image ID แบบเต็มๆ ไม่ตัดไม่ย่อ (no truncate) ก็

docker image ls --no-trunc

ถ้าเรายังไม่มี image สามารถ โหลดมาใช้จาก Docker Hub ได้ด้วยการ pull

docker image pull {ชื่อImage:ชื่อTag}
ex. docker image pull ubuntu:14.04

หรือ

docker pull {ชื่อImage:ชื่อTag}
ex. docker pull ubuntu:14.04

เมื่อโหลด image มาผิด หรือไม่ต้องการแล้ว ก็ลบได้โดยสั่ง

docker image rm {ชื่อImagesหรือImageID}
ex. docker image rm wrongImage

หรือ

docker rmi {ชื่อImagesหรือImageID}
ex. docker rmi wrongImage

ใช้งาน Docker มาหลายงาน หลายตัวแล้ว ลืมไปแล้วว่าอันไหนไม่ใช้แล้วบ้าง อยากลบตัวที่ไม่ใช้ออกทั้งหมดก็

docker system prune

*** คำสั่งนี้จะลบทั้ง image, container, volumn, network ที่ไม่ได้ใช้งานอยู่ ***

หรือจะลบออกให้หมดๆเลย ค่อยโหลดที่จะได้ใช้จริงๆมาอีกทีหลัง

docker rmi $(docker images -a -q)

เมื่อเราได้ Docker Image ที่ต้องการ จากการจัดการด้วยคำสั่งพื้นฐานต่างๆข้างต้นแล้วเราจำนำมาใช้งานเป็น Docker Container ต่อกันเลย

ใช้งาน Docker Container

เมื่อมี image ที่ต้องการแล้วต่อมาเราจะสร้าง container ขึ้นมาโดยใช้คำสั่ง

docker run {ชื่อImage}

เราอาจกำหนด [options] เพิ่มเติมในการใช้งานได้ในรูปแบบที่ประมาณนี้

docker run [options] {ชื่อImage}

ซึ่ง options ที่ใช้กันบ่อยๆ หลักๆก็จะมี

--name {ชื่อ}
ตั้งชื่อให้กับ container เพื่อให้เราเรียกใช้คำสั่งต่างๆกับตัว container ได้ด้วยชื่อที่ตั้งนี้
ex. docker run --name myContainer myImage
-p {เลข port ที่จะใช้}:{เลข port พื้นฐานของ container}
ตั้งค่าเลข port ที่ต้องการเพื่อใช้งาน
ex. docker run --port 8081:80 myImage
-d
กำหนดให้ container ทำงานที่เบื้องหลัง หรือแบบ background
ex. docker run -d myImage
-v /{path ของเครื่องเรา}:/{path ของ container}
คือการสร้าง volume ตาม path ที่เรากำหนด เพื่อแชร์ไฟล์ระหว่างตัว container กับเครื่องเราให้สามารถเรียกใช้ไฟล์ร่วมกันได้ (ใน container กับในเครื่องเราจะได้ไฟล์เหมือนกัน)
ex. docker run -v /myLocal:/myContainer myImage

จะใช้หลาย options เลยก็ได้ เช่น

docker run --name cName -p 1234:80 -v /myWork:/work/app -d coolImage

บางครั้งเราอาจเจอการใช้เลข port ซ้ำ ซึ่งสามารถเช็ค port ที่ใช้ทำงานแล้วได้โดย

docker ps
เพื่อแสดง container ที่ทำงานอยู่

เราจะสามารถเห็นรายละเอียดต่างๆ รวมไปถึง port ที่ใช้รัน container ตัวอื่นๆอยู่

ตัวอย่างเมื่อเราสั่งคำสั่ง docker ps

เราสามารถเพิ่ม option “-a” (all) ได้เพื่อดู container ที่ไม่ได้ทำงานอยู่ด้วย

docker ps -a
เพื่อแสดง container ทั้งหมดรวมทั้งที่ไม่ได้ทำงานอยู่ด้วย

แล้วถ้าเรามี Docker Container อยู่แล้ว เราจะใช้งานมันได้โดยสั่ง

docker start {ชื่อ หรือ ID container}
เพื่อให้ container ที่กำหนดเริ่มทำงาน
*** ไม่ใช่การสร้าง container จาก image ***
ex1. docker start myContainer
ex2. docker start 123456a78912

อยากหยุดการทำงานของ container ที่ไม่ได้ใช้งานก็ทำได้ด้วย

docker stop {ชื่อ หรือ ID container}
เพื่อให้ container ที่กำหนดหยุดทำงาน
ex1. docker stop myContainer
ex2. docker stop 123456a78912

ยังมีคำสั่งในการใช้งาน container ที่น่าสนใจอื่นๆอยู่อีก สามารถเข้าชมได้ที่ https://docs.docker.com/engine/reference/commandline

แบ่งปัน Docker Image

เราสามารถเก็บ image ดีๆ หรือแบ่งปันแบบหล่อๆสวยๆไว้ที่ Docker Hub ให้ได้ใช้งานกันเราก็ทำได้

ก่อนอื่นเราต้อง login เข้าบัญชี docker ของเราก่อนด้วยคำสั่ง

docker login

จากนั้นมันก็จะให้เรากรอก username กับ password ตามระเบียบ

แต่ถ้าอยากประหยัดขั้นตอนก็รวดพิมพ์ด้วย options ตามนี้ได้เลย

docker login -u {ชื่อ user ของเรา} -p {รหัสผ่านของเรา}
ex. docker login -u iamuser -p 1234567890

จากนั้นเราจะทำการ push ขึ้นโดยสั่ง

docker push {ชื่อ user ของเรา}/{ชื่อ image}
ex. docker push iamuser/my-soCool-image

นอกจากนี้เรายังสามารถ push เอา imageใหม่ที่สร้างขึ้นจาก container ที่เราแก้ไขปรับปรุงบางอย่างไป ขึ้นที่ registry ของทาง Docker Hub เราจะใช้ container id ซึ่งดูได้จากการใช้งานคำสั่ง “docker ps” ที่กล่าวไปแล้วในหัวข้อก่อนหน้า เราจะทำการ commit ตัว image นี้โดยการสั่ง

docker commit {container_id} {ชื่อ repo}/{ชื่อ image}:{ชื่อ tag}
ex. docker commit c1d258f19e0a iamuser/newImage:version02

ตอนนี้เราได้เรียนรู้ใช้งาน Docker Container ด้วยคำสั่งพื้นฐานที่นิยมกันแล้ว

แต่ !!

เราอาจรู้สึกว่า จะใช้งาน Docker Container ตัวหนึ่ง ต้องพิมพ์คำสั่งเยอะแยะเต็มไปหมด ยุ่งยากซะเหลือเกิน แล้วถ้าจะใช้งานทีละหลาย container ล่ะ

ในบทความถัดไปเราจะมาแนะนำเครื่องมือที่มีชื่อว่า docker-compose ที่จะทำให้การใช้ทำงาน และจัดการกับหลายๆ Docker Container นั้นเป็นเรื่องง่าย

--

--