คำสั่ง Docker Command Line
Sirichai Teerapattarasakul / July 03, 2021
3 min read
บันทึกคำสั่ง Docker Commands และ Docker Compose ที่ควรรู้สำหรับในการใช้งาน รวมถึงบางคำสั่งเพื่อใช้จัดการกรณีมีปัญหารันไม่ขึ้นหรือมีการค้างระหว่างการใช้งาน ตามรายการดังนี้
คำสั่ง Docker
แสดงเวอร์ชั่น
docker -v
โหลด Docker image
docker pull <image_name>:<tag> // tag ถ้าไม่ระบุระบบจะเลือกเวอร์ชั่นล่าสุดมาให้
สร้าง container จาก image
ซึ่งถ้าไม่มี image ในเครื่อง มันก็จะโหลดลงมาให้เราอัตโนมัติ โดยจะมี options ดังนี้
- –name กำหนดชื่อ container name ถ้าไม่ระบุมันจะสุ่มตั้งชื่อมาให้เราเอง
- -d เป็นการสั่ง container ให้รันแบบ background
- -e กำหนด Environment ของ Container ต้องดูว่าแต่ล่ะ images มีอะไรให้เราเซ็ตบ้าง
- -p เป็นการ map port ระหว่าง container เพื่อใช้สื่อสารกัน เช่น container ของ nginx จะใช้ port 80 เป็น default หากต้องการให้ใช้ port 8080 เราก็กำหนดให้เป็น -p 8080:80
- -v คือการ mount volume เพื่อให้สามารถเรียกใช้ไฟล์ร่วมกันได้ ระหว่าง container กับเครื่องเรา อย่างเช่น /myweb:/var/www/html (ซ้ายคือ path ในเครื่องของเรา และด้านขวาคือ path ใน container)
- –network ระบุ network ที่ใช้ ถ้าไม่ระบุจะเป็น bridge
docker run [options] <image_name>:<tag> // tag ถ้าไม่ระบุระบบจะเลือกเวอร์ชั่นล่าสุดมาให้
// ตัวอย่าง
docker run --name myweb -p 8080:80 -v /myweb:/var/www/html -d nginx:latest
แสดงรายการ image ที่มีอยู่ในเครื่องเรา
docker images
ลบ image แบบระบุชื่อ image
docker rmi -f <image_name>
ลบ image ทั้งหมด
docker rmi -f $(docker images -a -q)
แสดงรายการ container
docker ps // แสดง container ที่ทำงานอยู่
docker ps -a // แสดงรายการ container ทั้งหมด ทั้งทำงานอยู่และหยุดทำงานไปแล้ว
ลบ container แบบระบุชื่อ container
docker rm -f <container_name>
ลบ container ทั้งหมด
docker rm $(docker ps -a -q)
ลบ container ทั้งหมดที่ไม่ทำงาน
docker rm $( docker ps -q -f status=exited)
หยุดการทำงาน container ทั้งหมด
docker stop $(docker ps -a -q)
เพื่อ Access เข้าไปใน container
docker exec -it <container_name> <command> // <command> คือคำสั่งที่ต้องการเข้าใช้ เช่น bash จะได้ในลักษณะนี้
docker exec -it <container_name> bash
ดู container ว่ามีการใช้ resource แค่ใหน เช่น CPU, Memory
docker stats // ทั้งหมด
docker stats <container_name> // ระบุชื่อ container ถ้าดูแบบหลายตัวให้เว้นวรรคชื่อ container
ดูรายละเอียด container
docker inspect <container_name>
ดู IP ของ container ทั้งหมด
ถ้าต้องการระบุชื่อ container ให้เว้นวรรคท้ายสุดคำสั่งแล้วตามด้วยชื่อ container ที่ต้องการ
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
แสดงรายการ network
docker network ls
สร้าง network
docker network create <network_name> // default เป็น bridge
ดูรายละเอียด network
docker network inspect <network_name or container_id>
ดู Log ของ container
docker logs <container_name or container_id>
คำสั่ง Docker Compose
ใช้ build /re-build container
docker-compose build // ทั้งหมด
docker-compose build <container_name> // ระบุชื่อ container
docker-compose -f <yml_name> build // ระบุไฟล์ YML
สั่งให้ container ทำงาน
docker-compose up
docker-compose up -d // -d คือการกำหนดว่าให้ทำงานแบบ background process
docker-compose up --build // สั่ง build และรันการทำงานพร้อมกัน
docker-compose up --force-recreate --build // กรณีเปลี่ยนค่า config ให้ rebuild ใหม่
docker-compose -f <yml_name> up // ระบุไฟล์ YML
หยุดการทำงาน container
docker-compose stop // ทั้งหมด
docker-compose stop <container_name> // ระบุชื่อ container
docker-compose -f <yml_name> stop // ระบุไฟล์ YML
สั่งให้กลับมาทำงานใหม่กรณีสั่งหยุดด้วยคำสั่ง stop ก่อนหน้านั้น
docker-compose start // ทั้งหมด
docker-compose start <container_name> // ระบุชื่อ container
docker-compose -f <yml_name> start // ระบุไฟล์ YML
สั่ง restart เพื่อให้ container ทำงานใหม่
docker-compose restart // ทั้งหมด
docker-compose restart <container_name> // ระบุชื่อ container
docker-compose -f <yml_name> restart // ระบุไฟล์ YML
หยุดการทำงานรวมถึงลบ containers
docker-compose down
docker-compose -f <yml_name> down // ระบุไฟล์ YML