Docker là gì

Docker là gì

Gần đây Docker đang được thảo luận và gây được nhiều chú ý trong cộng đồng công nghệ trên thế giới, với nhiều hứa hẹn trong tương lai. Các hãng công nghệ lớn như Google, Amazon, Microsoft đã bắt đầu hỗ trợ Docker trên nền tảng của họ, và ở Sài gòn có luôn cộng đồng Docker nếu bạn thích có thể tham gia meetup tại đây  Vậy Docker là gì?

Docker là gì?

Định nghĩa docker

Nó là một công cụ tạo môi trường được “đóng gói” (còn gọi là Container) trên máy tính mà không làm tác động tới môi trường hiện tại của máy, môi trường trong Docker sẽ chạy độc lập.

Một số khái niệm

Docker images

Mỗi khi bạn muốn chạy ứng dụng Docker là thì bạn cần một cái image. Nôm na là Docker images; cái image này có thể là HĐH Centos hoặc Linux, đã cài sẵn các ứng dụng PHP, Nginx

Docker registries

Docker registries là kho chứa images. Người dùng có thể tạo ra các images của mình và tải lên bất kỳ đâu, miễn là người khác có thấy được, Hầu nết mình thường lên đây tham khảo https://hub.docker.com/

Docker container

Docker container hoạt động giống như một thư mục (directory), chứa tất cả những thứ cần thiết để một ứng dụng có thể chạy được. Mỗi một docker container được tạo ra từ một docker image.

Dockerfile

Dockerfile là một file chứa tập hợp các lệnh để Docker có thể đọc và thực hiện để đóng gói một image theo yêu cầu người dùng, chúng ta thường làm việc với tập tin này nhất

Khác biệt với máy ảo

Đ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. Do nó sử dụng chung nhân Linux nên rất có sự khác biệt so với dùng máy ảo Virtuhost

Các lệnh căn bản

  • Tạo một container từ image có sẵn:
  • Liệt kê các container đang chạy: docker ps

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

  • Xoá một container: docker rm <ID container>
  • Kéo và đẩy lên hub docker: docker pull <image>:<tag> và docker push <image>:<tag>

Trên đây là những lệnh chúng ta thường dùng, còn để hiểu rõ hơn chúng tôi nghĩ các bạn nên vào trang chủ Docker để hiểu rõ hơn

Chú ý

Ngay tại thời điểm này Docker dành cho client có vẻ làm việc tốt trên Linux, tôi đã sủ dụng nó trên Macos thì chỉ có một câu như SHIT, và window càng tệ hơn, huy vọng sẽ được cải tiến nhiều, đây là điểm trừ của nó so với Vagrant

Khi nào dùng Docker

Thực ra hiện tại nếu dự án của bạn không phải dạng micro service thì không nên dùng Docker,  việc tách ghép các dịch vụ PHP, Nginx đặc biệt là Mysql ra riêng đối với cá dự án tầm trung là không cần thiết, bản thân tôi thấy tất cả mọi thừ đều có thể tách app ra dùng chung Docker, nhưng riêng Mysql(cơ sở dữ liệu) thì không nên

Tôi vẫn có cảm giác một cái gì đó không an tâm cho lắm đặc biệt là Migration, backup, của cơ sở dữ liệu,  trên đây chỉ là cảm nhận của tôi khi làm việc Mysql với DockerNếu như công ty bạn có đội ngũ Devops thì OK, áp dụng thoả mái chứ các cty mà không có team đó cứ áp dụng là cũng có ngày ôm hận 🙂

Kết luận

Với Docker bạn không còn bận tâm setup môi trường dev nữa, chỉ cần một người làm xong thì cả nhóm có thể dùng nó, và quan trọng hơn là bạn cấu hình một lần là có thể deploy lên staging hay production một cách nhanh nhât, so với Vagrant thì Docker có vẻ chiếm ưu thế hơn, nhưng cá nhân mình vẫn thích dùng Vagrant, nếu bạn muốn tìm hiểu chạy ứng dụng PHP thông qua docker thì có thể xem bài viết hướng dẫn chạy ứng dụng php thông qua docker

Scroll to Top