| การ build |
|---|
| สร้าง image จาก Dockerfile | docker build -t app:1.0 . |
| สร้าง image ใหม่ตั้งแต่ต้น โดยไม่ใช้เลเยอร์ที่แคชไว้ | docker build --no-cache -t app:1.0 . |
| สร้างเฉพาะจนถึง stage ที่ระบุชื่อใน Dockerfile แบบหลาย stage | docker build --target deps -t app:deps . |
| สร้าง image ผ่านปลั๊กอิน buildx ซึ่งขับเคลื่อนด้วย BuildKit | docker buildx build -t app:1.0 . |
| สร้าง image เดียวสำหรับหลายสถาปัตยกรรม CPU | docker buildx build --platform linux/amd64,linux/arm64 -t app:1.0 --push . |
| Image |
|---|
| ดาวน์โหลด image จาก registry | docker pull node:20 |
| แสดงรายการ image ที่เก็บไว้ในเครื่อง | docker images |
| สร้าง tag ใหม่ที่ชี้ไปที่ image เดิม | docker tag app:1.0 app:latest |
| ลบ image ในเครื่องหนึ่งรายการขึ้นไป | docker rmi app:1.0 |
| วงจรชีวิตของ container |
|---|
| สร้างและเริ่ม container จาก image | docker run -p 8080:3000 app |
| สร้าง container โดยไม่เริ่มรัน | docker create --name web app |
| เริ่ม container ที่หยุดอยู่ | docker start web |
| หยุด container ที่กำลังรันอย่างสุภาพ (graceful) | docker stop web |
| หยุดแล้วเริ่ม container ใหม่ในขั้นตอนเดียว | docker restart web |
| บังคับหยุด container ทันที โดยไม่รอการปิดแบบสุภาพ | docker kill web |
| แช่แข็ง process ทั้งหมดภายใน container | docker pause web |
| คลายแช่แข็ง process ของ container ที่ถูก pause ไว้ | docker unpause web |
| บล็อกรอจนกว่า container จะหยุด แล้วพิมพ์รหัสออก (exit code) | docker wait web |
| แสดงรายการ container ที่กำลังรัน เพิ่ม -a เพื่อรวมตัวที่หยุดแล้ว | docker ps -a |
| ตั้งชื่อใหม่ให้ container ที่มีอยู่ | docker rename web web-old |
| แก้ไขขีดจำกัดทรัพยากรหรือนโยบาย restart ของ container | docker update --restart=unless-stopped web |
| ลบ container ที่หยุดแล้ว | docker rm web |
| แฟล็กของ docker run |
|---|
| รัน container ในเบื้องหลังและพิมพ์ ID ของมัน | docker run -d -p 8080:80 app |
| เผยแพร่พอร์ตของ container ไปยังพอร์ตของโฮสต์ | docker run -p 8080:80 app |
| เมานต์โฟลเดอร์ของโฮสต์หรือ named volume เข้าไปใน container | docker run -v app-data:/data app |
| ตั้งตัวแปรสภาพแวดล้อมภายใน container | docker run -e MODE=prod app |
| กำหนดชื่อคงที่ให้ container เพื่อใช้ในคำสั่งถัดไป | docker run --name web app |
| ลบ container เมื่อมันจบการทำงาน | docker run --rm app |
| เริ่ม container บนเครือข่ายที่ระบุ | docker run --network net app |
| บอก Docker ว่าให้ restart container เมื่อไหร่ | docker run --restart unless-stopped app |
| จัดสรรเทอร์มินัลและคง stdin เปิดไว้สำหรับเซสชันแบบโต้ตอบ | docker run -it alpine sh |
| แทนที่ entrypoint ของ image ด้วยคำสั่งของคุณเอง | docker run --entrypoint sh app |
| จำกัดหน่วยความจำหรือสัดส่วน CPU ที่ container ใช้ได้ | docker run --memory 512m --cpus 0.5 app |
| การตรวจดู |
|---|
| อ่าน stdout และ stderr ของ container; -f ติดตาม output ใหม่ที่มาถึง | docker logs -f web |
| แสดงค่า config และสถานะระดับต่ำของ container หรือ image | docker inspect web |
| ดึง field เดียวจาก inspect ด้วย Go template | docker inspect --format '{{.State.Status}}' web |
| แสดงรายการพอร์ตโฮสต์ที่ container เผยแพร่ | docker port web |
| แสดงไฟล์ที่ container เปลี่ยนแปลงเทียบกับ image ต้นทาง | docker diff web |
| CPU, หน่วยความจำ และเครือข่ายแบบเรียลไทม์ของ container ที่กำลังรัน | docker stats |
| แสดงรายการ process ที่รันอยู่ภายใน container | docker top web |
| สตรีมเหตุการณ์ Docker จาก daemon ตามที่เกิดขึ้น | docker events --filter type=container |
| แสดงพื้นที่ดิสก์ที่ image, container, volume และแคชใช้ | docker system df |
| แสดงการตั้งค่าและสถานะ Docker ทั้งระบบ | docker info |
| Exec และ attach |
|---|
| รันคำสั่งภายใน container ที่กำลังรัน | docker exec -it web sh |
| เชื่อมเทอร์มินัลของคุณเข้ากับ process หลักของ container | docker attach web |
| ไฟล์และ registry |
|---|
| คัดลอกไฟล์ระหว่าง container กับระบบไฟล์ในเครื่อง | docker cp web:/app/logs ./logs |
| ลงชื่อเข้าใช้ registry จาก CLI | docker login |
| ออกจากระบบ registry | docker logout |
| อัปโหลด image ในเครื่องไปยัง registry | docker push user/app:1.0 |
| เขียน image ลงไฟล์ tar | docker save -o app.tar app:1.0 |
| อ่าน image จากไฟล์ tar | docker load -i app.tar |
| เขียนระบบไฟล์ของ container ลงไฟล์ tar | docker export web > web.tar |
| สร้าง image จากระบบไฟล์แบบ tar | docker import web.tar web:snap |
| เปลี่ยนสถานะปัจจุบันของ container ให้เป็น image ใหม่ | docker commit web app:snap |
| Volume |
|---|
| สร้าง named volume สำหรับข้อมูลถาวร | docker volume create data |
| แสดงรายการ volume | docker volume ls |
| ลบ volume | docker volume rm data |
| เครือข่าย |
|---|
| แสดงรายการเครือข่าย | docker network ls |
| สร้างเครือข่ายเพื่อให้ container ติดต่อกันได้ | docker network create net |
| เชื่อมต่อ container ที่กำลังรันเข้ากับเครือข่าย | docker network connect net web |
| Compose |
|---|
| สร้าง, (สร้างใหม่) และเริ่ม service ใน compose.yaml; -d ทิ้งไว้ให้รันในเบื้องหลัง | docker compose up -d |
| เริ่ม service โดย rebuild image ก่อน | docker compose up --build -d |
| รันคำสั่งภายใน container ของ service ที่กำลังรัน | docker compose exec api sh |
| ดู log แบบต่อเนื่องของ service หนึ่งหรือหลาย service | docker compose logs -f api |
| แสดงรายการ container ของ service ที่ Compose จัดการ | docker compose ps |
| หยุด container ของ service โดยไม่ลบออก | docker compose stop |
| restart container ของ service | docker compose restart api |
| หยุดและลบ container กับเครือข่าย; -v ลบ named volume ด้วย | docker compose down |
| แสดง config สุดท้ายของ Compose หลังการ merge และแทนที่ตัวแปรสภาพแวดล้อม | docker compose config |
| การเก็บกวาด |
|---|
| ลบ container ที่หยุดแล้ว, image ที่ dangling และเครือข่ายที่ไม่ได้ใช้; -a --volumes ลบ image และ volume ที่ไม่ได้ใช้ด้วย | docker system prune -af |
| ลบ container ที่หยุดแล้วทั้งหมด | docker container prune |
| ลบ image ที่ไม่ได้ใช้หรือ dangling | docker image prune -a |
| ลบ volume ที่ไม่มี container ใช้ | docker volume prune |
| ลบเครือข่ายที่ไม่มี container ใช้ | docker network prune |
| ลบเลเยอร์บิลด์ที่แคชไว้ | docker builder prune |