Docker là gì?

Ở bài trước mình có giới thiệu về khái niệm Docker các bạn đọc lại tại đây nhé : http://hoclaptrinh.vn/posts/docker-la-gi

So sánh Docker với Virtual machine

Virtual machine Docker
tim-hieu-co-ban-ve-docker-tim-hieu-co-ban-ve-docker-01 tim-hieu-co-ban-ve-docker-tim-hieu-co-ban-ve-docker-02

Điểm khác biệt chính là các containers sử dụng chung kernel với Host OS nên các thao tác bật, tắt rất nhẹ nhàng, nhanh chóng.

  • Ưu điểm : nhanh, nhẹ, có thể chia sẻ dễ dàng qua DockerHub.
  • Nhược điểm : docker vẫn còn mới, cập nhật thay đổi thường xuyên.

Tóm lại, docker:

  • Docker rất tốt tại việc xây dựng và chia sẻ Disk Image qua hệ thống Docker Index.

  • Docker là một phần mềm quản lý cơ sở hạ tầng.

  • Docker làm việc tuyệt vời với các công cụ quản lý file config (vd: Chef, Puppet).

  • Docker sử dụng btrfs để giảm sát các file hệ thống và có thể được chia sẻ với user khác. (Như cách hoạt động của Git).

  • Docker có một bộ kho trung tâm của các Disk Images (có thể được public hoặc private), điều này cho phép bạn dễ dàng chạy trên nhiều hệ điều hành khác nhau (Ubuntu, Centos, Fedora, Gentoo).

Khi nào thì sử dụng Docker

  • Docker là một công cụ đơn giản, như Git hay Java, mà cho phép bạn kết hợp chặt chẽ tới công việc phát triển hay điều hành hàng ngày của bạn.

  • Sử dụng Docker như là một phần mềm quản lý phiên bản (version control system) cho toàn hệ điều hành của bạn.

  • Sử dụng Docker khi bạn muốn đóng góp hay hợp tác hệ điều hành của bạn với một nhóm nào đó.

  • Sử dụng Docker để chạy những dòng code trên laptop của bạn trong môi trường giống hệt như trên server của bạn.

  • Sử dụng Docker khi app của bạn cần trải qua nhiều giai đoạn khác nhau của quá trình phát triển.

Một số lệnh cơ bản

Pull một image từ Docker Hub

docker pull <image name> 

Tạo một container từ image có sẵn

docker run -v <thư mục trên máy tính>:<thư mục trong container> -it <image name> /bin/bash

Lệnh trên tạo container, liên kết một thư mục trên máy tính vào bên trong container, và mở bash trong máy đó.

Khi cần phải map cổng đó từ container ra máy tính ngoài, khi đó chúng ta dùng thêm tham số -p như sau:

docker run -v /abc:/abc -p 8080:8080 -it ubuntu /bin/bash

Lệnh trên map cổng 8080 của container ra cổng 8080 của máy tính hiện tại.

Liệt kê các images hiện có

docker images

Trong kết quả trả về của lệnh này, chúng ta lưu ý các thông số:

  • TAG: là tên của image, ví dụ duyetdev/docker-spark
  • IMAGE ID: là ID của image lưu trong hệ thống, ví dụ 91e54dfb1179

Liệt kê các container đang chạy

docker ps
docker ps -a # liệt kê các container đã tắt
  • CONTAINER ID: Là ID của container đó, ví dụ 4cc671941ee3
  • NAME: Là tên riêng của container, được tạo ra một cách ngẫu nhiên hoặc có thể tự đặt, ví dụ stupefied_blackwell

Khởi động và truy cập lại vào một container đã tắt

Nếu một container đã tắt (không xuất hiện khi dùng lệnh docker ps nữa, chúng ta có thể chạy lệnh docker ps -a để lấy ID hoặc NAME của nó, sau đó dùng lệnh sau để khởi động và truy cập lại vào đó)

docker start <ID hoặc NAME>
docker exec -it <ID hoặc NAME> /bin/bash 

Xoá một container

Nếu một container đã hết giá trị lợi dụng, dù nó đã tắt nhưng nó vẫn chiếm một phần dung lượng trên máy tính, để xoá nó đi, chúng ta dùng lệnh

docker rm <ID hoặc NAME>

Nếu container đang chạy, bạn cũng có thể xoá nhưng phải thêm tham số -f vào sau rm để force remove:

docker rm -f <ID hoặc NAME>

Xoá một image

Cũng như container, nếu bạn đã ko còn nhu cầu sử dụng một image nào đó nữa, thì nên xoá nó đi. Dùng lệnh rmi

docker rmi <ID hoặc NAME>
# or
docker rmi -f <ID hoặc NAME>

Viết câu trả lời

Drop Images