docker build -t app:1.0 .docker tag app:1.0 org/app:1.0 → docker push org/app:1.0docker pull org/app:1.0docker run -d --name app -p 8080:80 org/app:1.0| Command | Description |
|---|---|
docker build -t <image:tag> . |
สร้าง image จาก Dockerfile |
docker image ls |
ดูรายการ image |
docker image inspect <image> |
ดู metadata, layers |
docker image tag <src> <target> |
เปลี่ยนชื่อ/แท็ก image |
docker push <image> |
อัปโหลด image ไป registry |
docker pull <image> |
ดึง image จาก registry |
docker image rm <image> |
ลบ image |
docker image prune |
ลบ image ที่ไม่ใช้งาน |
| Command | Description |
|---|---|
docker run -d --name <name> <image> |
รัน container แบบ background |
docker ps / docker ps -a |
ดู container ที่รันอยู่ / ทั้งหมด |
docker logs -f <name> |
ดู log ต่อเนื่องจาก stdout/stderr |
docker exec -it <name> sh |
เข้า shell ใน container |
docker stop <name> |
หยุด container |
docker rm <name> |
ลบ container |
docker container prune |
ลบ container ที่หยุดแล้วทั้งหมด |
| Command | Description |
|---|---|
docker volume create <vol> |
สร้าง volume |
docker volume ls |
ดูรายการ volume |
docker volume inspect <vol> |
ดูข้อมูล volume |
docker volume rm <vol> |
ลบ volume |
docker volume prune |
ลบ volume ที่ไม่ถูกใช้งาน |
Mount ตัวอย่าง
# named volume
$ docker run -d --name db -v db_data:/var/lib/mysql mysql:8.0
# bind mount โฟลเดอร์บนโฮสต์
$ docker run -d --name web -v $(pwd)/html:/usr/share/nginx/html -p 8080:80 nginx:alpine
Docker network driver หลัก ๆ ที่ใช้กันบ่อย:
| Driver | Description | Use Case |
|---|---|---|
| bridge (default) | NAT ออก internet ผ่าน host | ใช้บนเครื่อง local, container สื่อสารกันภายใน bridge |
| host | ใช้ network stack ของ host ตรง ๆ | performance สูง, ใช้กับ service ที่ต้องการ port จริงของ host |
| none | ไม่มี network เลย | ใช้กับ job ที่ไม่ต้องการ network |
| overlay | เชื่อมหลาย host ผ่าน VXLAN (Docker Swarm/K8s) | ใช้ใน multi-host cluster |
| macvlan | ให้ container มี MAC/IP ของตัวเอง | ใช้เมื่อ container ต้องอยู่ใน LAN จริง |
bridgeตรวจสอบ Network
docker network ls # ดู network ที่มีอยู่
docker network inspect bridge # ดูรายละเอียด network
สร้าง network bridge แบบ custom เพื่อกำหนด subnet เอง:
docker network create --driver bridge --subnet 172.18.0.0/16 mynet
เชื่อม container เข้ากับ network นี้:
docker run -d --name web --network mynet nginx:alpine
docker run -it --rm --network mynet alpine ping web
สามารถสร้าง network ภายนอกก่อน แล้วให้ docker-compose.yml ใช้ได้เลย:
networks:
mynet:
external: true
สร้าง network ก่อน:
docker network create mynet
| Command | Description |
|---|---|
docker network create <net> |
สร้าง network ใหม่ |
docker network ls |
ดู network ที่มีอยู่ |
docker network inspect <net> |
ดูรายละเอียด network |
docker network rm <net> |
ลบ network |
docker network prune |
ลบ network ที่ไม่ได้ใช้งาน |