Docker Basic Commands

Docker basic commands: pull and delete images, create, start, stop and inspect containers, expose ports.

Pull image

เราจะ pull Nginx image มารันบนเครื่องของเรากัน

ไปค้นหา image ได้ที่

docker hub

ตัวอย่าง

nginx in dockerhub

ใช้คำสั่งนี้

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>

เช่น

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 ให้เราเข้าถึงได้

exposing port

เราจะเปิด 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

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