คู่มืออิมเมจ Docker: วิธีการลบ Docker Images, Stop Containers และลบ Volumes ทั้งหมด

Docker ได้รับการยอมรับอย่างกว้างขวางและเป็นเครื่องมือที่ยอดเยี่ยมในการปรับใช้แอปพลิเคชันกับระบบคลาวด์ (หรือโครงสร้างพื้นฐานอื่น ๆ ที่รองรับ Docker) ยังเป็นประโยชน์ต่อการพัฒนาท้องถิ่น คุณสามารถเริ่มแอปพลิเคชันที่ซับซ้อนได้อย่างรวดเร็วพัฒนาแบบแยกส่วนและยังคงมีประสิทธิภาพที่ดีมาก

นี่คือคำสั่งที่สำคัญที่สุดในการใช้ Docker ในธุรกิจประจำวันของคุณอย่างมีประสิทธิภาพ

แสดงรายการรูปภาพ Docker ทั้งหมด

docker images 

ในกรณีของฉันฉันติดตั้งภาพ 3 ภาพ:

  • MySQL เวอร์ชัน 8.0.19 หนึ่งถูกแท็กเป็นเวอร์ชันล่าสุด
  • และคาสซานดราด้วยเวอร์ชันล่าสุด

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับรูปภาพคุณสามารถตรวจสอบได้:

docker inspect mysql:latest

การดำเนินการนี้จะแสดงรายการข้อมูล หรือคุณสามารถใช้รหัสรูปภาพเพื่อรับข้อมูล:

docker inspect 3a5e53f63281

ผลผลิตสามารถล้นหลาม ดังนั้นจึงมีตัวเลือกที่สะดวกในการกรองข้อมูลบางอย่าง:

docker inspect --format='{{.RepoTags}} {{.Config.Image}}' 3a5e53f63281

ลบ Docker Images

ภาพเดียวสามารถลบออกได้โดย:

docker rm mysql:latest

ในกรณีของภาพยังคงถูกติดแท็กด้วยMySQL: 8.0.19 ดังนั้นเพื่อลบทั้งหมดฉันต้องลบแท็กเวอร์ชันอื่นด้วย:

docker rm mysql:8.0.19

หากต้องการลบรูปภาพโดยตรงการลบรูปภาพโดยใช้รหัสรูปภาพทำได้ง่ายกว่า:

docker image rm 3a5e53f63281 -f

อ็อพชัน-fบังคับให้ดำเนินการเพราะมิฉะนั้นคุณจะได้รับข้อผิดพลาดหากรูปภาพถูกอ้างอิงโดยแท็กมากกว่า 1 แท็ก

เริ่ม Docker Image

สามารถเริ่มภาพเบื้องหน้าได้โดย:

docker run cassandra

หากไม่มีภาพนั้นจะถูกดาวน์โหลด คุณสามารถหยุดการทำงานโดยการกดCTRL + C คุณยังสามารถเรียกใช้ในพื้นหลังได้โดยเพิ่มตัวเลือก-d :

docker run -d mysql

หากคอนเทนเนอร์เริ่มทำงานในพื้นหลังคุณจะได้รับรหัสคอนเทนเนอร์

โดยค่าเริ่มต้นคอนเทนเนอร์จะทำงานแยกกัน ดังนั้นคุณจะไม่สามารถสื่อสารกับมันได้และไม่มีไฟล์ใดถูกเก็บไว้ในไดเร็กทอรีปัจจุบันของคุณ

ส่งต่อพอร์ตของคอนเทนเนอร์

คุณสามารถส่งต่อพอร์ตโดยใช้ตัวเลือก-pเพื่อตัวอย่างเช่นเพจที่เปิดเผยจากคอนเทนเนอร์ของคุณ:

docker run -p 8080:80 nginx

คอนเทนเนอร์ NGINX นี้แสดงเว็บเซิร์ฟเวอร์บนพอร์ต 80 โดยใช้ -p 8080: 80 พอร์ตโลคัล 8080 จะถูกส่งต่อไปยังพอร์ตคอนเทนเนอร์ 80

เข้าสู่ระบบคอนเทนเนอร์

บางครั้งการล็อกอินเข้าสู่คอนเทนเนอร์ก็เป็นประโยชน์ สิ่งนี้จะเกิดขึ้นได้ก็ต่อเมื่อคอนเทนเนอร์นั้นติดตั้งเชลล์ไว้ คุณจะได้รับข้อผิดพลาดหากไม่ใช่กรณีนี้

ขั้นแรกให้เริ่มตู้คอนเทนเนอร์ที่แยกออกและตั้งชื่อ:

docker run -d --name my_container nginx

สิ่งนี้จะส่งคืน ID คอนเทนเนอร์ ตอนนี้คุณสามารถรันเชลล์ในคอนเทนเนอร์และแนบอินพุตและเอาต์พุตของคุณเข้ากับมันได้โดยใช้อ็อพชัน-iและ-t :

docker exec -it my_container bash

แทนชื่อคอนเทนเนอร์คุณยังสามารถใช้ ID คอนเทนเนอร์ที่ส่งคืนสำหรับการดำเนินการทั้งหมดต่อไปนี้ บางครั้ง bash ไม่สามารถใช้ได้ ดังนั้นคุณสามารถลองเปิดเชลล์พื้นฐาน:

docker exec -it my_container sh

แสดงรายการคอนเทนเนอร์ที่กำลังทำงานอยู่

หลังจากที่คุณเริ่มใช้งานคอนเทนเนอร์คุณจะเห็นคอนเทนเนอร์ที่รันอยู่ทั้งหมดที่กำลังดำเนินการ:

docker ps

เมื่อต่อท้าย-aคอนเทนเนอร์ที่ออกแล้วจะแสดงรายการด้วย:

docker ps -a

แชร์โฟลเดอร์ในเครื่องกับคอนเทนเนอร์

Sometimes it is useful to sync files between the container and the local filesystem. You can do it by running a container and using the -v option. On Linux and macOS, you can share a local temporary folder with a container by:

docker run --name=my_container -d -v $(pwd)/tmp:/var/log/nginx -p 8080:80 nginx

On windows you can run:

docker run --name=my_container -d -v %cd%/tmp:/var/log/nginx -p 8080:80 nginx

Stop running containers

It is possible to stop a running container by:

docker stop my_container

Stopping a container stops all processes but keeps changes within the filesystem.

Start a stopped container

A stopped container can be started by:

docker start my_container

Remove a container

To remove a stopped container, you can execute:

docker rm my_container

To stop and remove the container in one command, you can add the force option -f.

docker rm -f my_container

Create a volume and share it with multiple containers

An independent volume named SharedData can be created by:

docker volume create --name SharedData docker run --name=my_container -d -v SharedData:/var/log/nginx -p 8080:80 nginx docker run --name=my_container_2 -d -v SharedData:/var/log/nginx -p 8080:80 nginx

Both containers will have a shared folder, and files will be synced between both containers.

Remove a volume

To remove a volume, all containers that use the volume need to be removed.

docker rm -f my_container docker rm -f my_container_2 docker volume rm SharedData

Remove stopped containers and unused images

A safe tidy-up command is:

docker system prune -a

Remove all unused volumes

All unmounted volumes can be removed by:

docker volume prune

Conclusion

Creating containers, logging into containers, forwarding ports, and sharing volumes are the most important commands of your Docker command line interface. They build the foundation of systems like Kubernetes and enable us to create and run applications in isolation.

I hope you enjoyed the article. If you like it and feel the need for a round of applause, follow me on Twitter.

I am a co-founder of our revolutionary journey platform called Explore The World. We are a young startup located in Dresden, Germany and will target the German market first. Reach out to me if you have feedback and questions about any topic.

Happy Docker exploring :)

References

  • Docker command line documentation

    //docs.docker.com/engine/reference/commandline/docker/