Pattanapong Cherthong
3 min readSep 30, 2016

การใช้งาน Docker เบื้องต้น

ก่อนจะเริ่มต้นใช้งาน เรามาทำความรู้จัก Docker และ Software Container กันก่อนครับ

เริ่มต้นใช้งาน Docker

เริ่มจากเราต้องทำการติดตั้ง Docker กันก่อนครับ การติดตั้งก็ไม่ได้มีอะไรยุ่งยากเพียงแค่การดาวน์โหลด Package มาติดตั้ง เหมือนการติดตั้งโปรแกรมทั่วไปในคอมพิวเตอร์ ติดตั้งเพียงไม่กี่ขั้นตอนก็สามารถใช้งานได้เลย มีให้ติดตั้งทั้ง Mac, Windows, และ Linux มีวิธีติดตั้งตามลิงค์ด้านล่างนี้

  • Docker for Mac
  • Docker for Windows
    ถ้าหากใช้ Windows รุ่น Home จะไม่สามารถติดตั้ง Docker for Windows ได้ (เนื่องจากต้องใช้ Microsoft Hyper-V ในการรัน)
    ให้เปลี่ยนไปติดตั้ง Docker Toolbox แทน
  • Docker on Linux

คำสั่ง Docker เบื้องต้น

สำหรับการใช้งาน Docker นั้นจะต้องใช้คำสั่งในการสั่งงาน ผ่าน Command Line
เมื่อติดตั้งเสร็จแล้ว ให้เปิดโปรแกรม Terminal หรือ cmd แล้วมาเริ่มกันที่การใช้คำสั่ง Docker กันเลยครับ

หลังจากติดตั้ง docker แล้ว ลองตรวจสอบเลขเวอร์ชั่นกันก่อนเลย ด้วยคำสั่งนี้

docker --version
หรือ
docker -v

เริ่มจากการ Pull Docker Image

ก่อนจะทำการสร้างและรัน Docker container ลองค้นหาในDocker Hub ก่อนครับว่ามีอะไรให้เราใช้บ้าง

เมื่อเจอ Docker image ที่ต้องการ สามารถโหลด Docker image ที่ต้องการด้วยคำสั่งด้านล่างนี้

docker pull

ตัวอย่าง : ในที่นี้จะโหลด Docker image ที่ชื่อว่า nginx ให้ใช้คำสั่ง

docker pull nginxหรือ docker pull nginx:stable
หรือ
docker pull nginx:1.10

เราสามารถเลือกเวอร์ชั่นของ image ได้ด้วยการระบุ tag ลงไป หากไม่ระบุ tag ก็จะเป็นการเลือกใช้เวอร์ชั่นล่าสุด เช่น nginx ก็จะมี Docker Image ให้เลือกหลายๆเวอร์ชั่น nginx:stable, nginx:1.10

การสร้าง Container

มาถึงขั้นตอนสำคัญ ก็คือการสร้าง Container โดยใช้คำสั่ง docker run เพื่อสร้าง Docker Container

docker run --name demo -d -p 8080:80 -v /home/me:/home/docker image

ตัวอย่าง

docker run --name myweb -p 8080:80 -v /myweb:/var/www/html -d nginx

คำสั่งอาจจะดูยาวหน่อย เพราะคำสั่ง docker run จะต้องมีการใส่ option เข้าไปด้วย

--name demo คือ การตั้งชื่อให้กับ container โดยเมื่อเราใช้คำสั่ง start stop หรือ rm สามารถสั่งงาน container ได้จากชื่อ container ได้เช่นกัน-d เป็นการสั่ง contianer ให้รันแบบ background-v /home/me:/home/docker คือการ mount volume หรือเป็นการแชร์ไฟล์ระหว่าง container กับเครื่องเราให้สามารถเรียกใช้ไฟล์ร่วมกันได้-p 8080:80 เป็นการ map port ระหว่างเครื่อง และ container เช่น อย่าง container ของ nginx จะใช้ port 80 เป็น default หากต้องการให้เครื่องใช้ port 8080 เราก็กำหนดให้เป็น -p 8080:80image ชื่อของ Docker image ที่เราต้องการเรียกใช้ (จากตัวอย่างจะใช้ nginx เป็น image)

เมื่อมีการสั่ง docker run จะมีตรวจสอบว่ามี image นั้นอยู่ในเครื่องหรือไม่ ถ้าหากไม่พบ Docker ก็จะทำการ Pull Image นั้นๆจาก Docker Hub ลงมาให้

การใส่ Option ต่างๆสำหรับแต่ละ Image จะไม่เหมือนกัน มีการ map port หรือ mount volume ต่างกัน โดยเราสามารถดูได้จากคำอธิบายของแต่ละ Image ได้ในเว็บ hub.docker.com

Port ที่เรากำหนดด้วย -p สามารถเข้าถึงได้จาก IP Address ของเครื่อง (localhost, 127.0.o.1 หรือ IP ในวงแลน) ตามด้วย Port ที่เรากำหนดไว้ ในที่นี้คือ http://localhost:8080/ (ถ้าใช้ Docker Toolbox จะเป็น IP : 192.168.99.100 โดย default)
โดย Container ที่เราลองรันอยู่เป็น Web Server เพราะฉะนั้นจะต้องมาลองเปิดดูใน browser พบว่าสามารถใช้งานได้แล้ว

ตรวจสอบสถานะ Container

เมื่อใช้คำสั่ง docker run เพื่อสร้างและรัน docker แล้ว
ลองตรวจสอบว่ามี Container ตัวไหนรันอยู่บ้าง

docker ps
ตัวอย่างการใช้คำสั่ง docker ps

จะสังเกตได้ว่ามี Container ที่ชื่อว่า myweb กำลังทำงานอยู่ โดยทุกๆ Container ก็จะมี Container ID เป็นของตัวเอง และเราสามารถสั่งงาน start, stop, rm ได้ด้วยการเรียกผ่าน Container ID

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

docker ps -a

หยุด Container
เมื่อต้องการให้ container หยุดทำงานจะต้องใช้คำสั่ง docker stop ตามด้วย Container ID หรือ Name ที่ใช้อ้างอิง Container

docker stop a715

ในที่นี้จะใช้ Container ID ในการอ้างอิงเพื่อสั่งหยุด contianer ที่ต้องการ
(การเรียกใช้ Container ID ไม่จำเป็นต้องใส่ให้ครบทุกตัวอักษรก็ได้)

ลบ Container
เมื่อไม่ใช้งาน Container นั้นแล้ว ไม่อยากจะใช้ต่อสามารถลบ Container ได้ด้วยคำสั่ง

docker rm a715

จะใช้คำสั่งนี้ได้ก็ต่อเมื่อ Container นั้นหยุดทำงานไปแล้ว

ดู Docker Image ทั้งหมด

docker images
การแสดงผลหลังจากใช้งานคำสั่ง docker images

คำสั่งลบ Image
เมื่อต้องการลบ image จะต้องแน่ใจก่อนว่ามี container ไหนเรียกใช้ image นี้อยู่รึเปล่าถ้าไม่มีการเรียกใช้งานก็สามารถสั่งลบ image ด้วยคำสั่ง docker rmi ตามด้วย Image หรือ Image name ที่อ้างอิงกับ Image นั้นๆ

docker rmi c07e
หรือ
docker rmi
nginx:stable-alpine

สำหรับคำสั่ง Docker เบื้องต้นที่ใช้กันอยู่บ่อยๆก็มีประมาณนี้ยังเหลือคำสั่งอีกมากมาย ซึ่งอาจจะพูดถึงในตอนต่อไปๆ ขอให้สนุกกับการใช้งาน Docker ครับ