Docker Basic Commands
Pull image
เราจะ pull Nginx image มารันบนเครื่องของเรากัน
ไปค้นหา image ได้ที่
ตัวอย่าง
ใช้คำสั่งนี้
docker pull nginx
List images
list docker image ออกมาดูว่าเรามี images อะไรบ้าง
docker image ls
หรือจะใช้คำสั่งนี้ก็ได้
docker images
Delete image
ลบ image ก็สั่ง
docker image rm <image id | image name>:<tag>
docker image rm nginx:latest
หรือจะใช้คำสั่งนี้ก็ได้
docker rmi <image id | image name>:<tag>
Create container from image
สร้าง container จาก image ที่ pull มา
docker run <Image Id | image name>:<tag>
NOTE
ถ้าเราสั่ง run container แต่ยังไม่ได้ pull image มันก็จะพยายาม pull ให้เองเลย
เช่น
docker run nginx:latest
List containers
ดูว่าตอนนี้มี container อะไรทำงานอยู่บ้าง ตอนนี้ให้เปิด Terminal อีกหน้านึงแล้วสั่ง
docker container ls
หรือจะเป็นอีกคำสั่งคือ
docker ps
จะเห็นว่าคำสั่งที่เราใช้ docker run
จะทำให้ terminal มันรัน docker container อยู่ และเราไม่สามารถทำอะไรกับมันได้ ถ้าเรากด ctrl + c
เพื่อหยุดการทำงานของ container ตัว container นั้นก็จะหยุดการทำงานไปเลย
ทีนี้ลองเช็ค container ที่ทำงานอยู่อีกรอบ
docker container ls
จะเห็นว่าไม่มี container อยู่แล้ว
แต่จริงๆแล้ว container มันไม่ได้หายไปไหน มันแค่หยุดการทำงานไป เราสามารถ list container ทั้งหมดออกมาได้ โดยจะได้ container ที่กำลังทำงานอยู่และที่หยุดทำงานไปแล้ว ด้วยคำสั่ง
สามารถดูได้ด้วยคำสั่งนี้
docker container ls -a
detach
ถ้าไม่อยากให้ terminal มันค้างไป เราต้องใช้ detach
docker run -d nginx:latest
Start the stopped container
docker start <container id | container name>
Naming the container
จะเห็นว่า container ที่ได้มานั้นมันมีชื่ออยู่ แต่ชื่อที่จะได้จะเป็นชื่อแบบสุ่ม ซึ่งถ้าเราไม่ระบุมันก็จะสุ่มมาให้แหละ
docker run -d --names <new name> <Image ID | Image Name>:<tag>
เช่น
docker run -d --name my-nginx nginx
Stop container
หยุด container ที่ทำงานอยู่
docker stop <Container Name | Container ID>
docker stop my-nginx
Delete the stopped container
ลบ container ที่หยุดทำงานไปแล้วด้วยคำสั่งนี้
docker rm <Container Name | Container ID>
เช่น
docker rm my-nginx
Delete the running container
ถ้าสั่ง docker rm
มันจะไม่ยอมลบให้ เพราะ container มันทำงานอยู่
ถ้าเรามั่นใจว่าลบได้ ก็ให้ใช้ -f
ได้เลย
docker rm -f <Container Name | Container ID>
เช่น
docker rm --force <Container Name | Container ID>
Exposing port
เนื่องจากว่า container ก็เป็นเหมือน computer เครื่องหนึ่ง ถ้ามี service อะไรสักอย่างทำงานอยู่ แล้วเราอยากเข้าถึง ก็จะต้องเข้าถึงผ่าน port ซึ่ง port นั้นจะต้องเปิดอยู่ด้วย เช่น Nginx นั้นเปิด port 80 ให้เราเข้าถึงได้
เราจะเปิด port ที่ container แล้วส่งข้อมูลมาที่เครื่อง host ผ่าน port ของเครื่อง host อีกที เรียกว่าการ binding port ด้วยคำสั่งนี้
docker run -d --name my-nginx -p <host-port>:<container port> <Image Name>:<tag>
docker run -d --name my-nginx -p 8080:80 nginx
ลองเปิด browser ดูที่ port 8080
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ae54dc5459b nginx "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp my-nginx
เมื่อ docker ps
ดูก็จะเห็นว่ามี port แสดงให้ดูด้วย
Exposing Multiport
สามารถเปิด binding ports หลายๆ ports ได้ด้วยนะ
docker run -d --name my-nginx -p 3000:80 -p 8080:80 nginx
Docker Execute then container
เราสามารถ remote เข้าไปใน container ได้วย เผื่อว่าอยากจะเข้าไปดูหรือใช้คำสั่งอะไร เราสามารถ sh เข้าไปใน container ได้ด้วยคำสั่ง
docker exec -it <container name | container id> bash
docker exec -it <container name | container id> /bin/sh
Inspect container
เราสามารถดูรายละเอียดของ container ได้ด้วยคำสั่ง
docker container inspect <container name | container id>
docker container inspect my-nginx