Sơ Lược Về Docker Và Cài Đặt Docker Trên Window

        Docker là 1 khái niệm không còn mới mẻ nhưng vẫn đang rất hot. Với 1 dev server như mình cũng không thể thoát khỏi tính tò mò từ nó. Với Docker và Vagrant khả năng DevOps của bạn sẽ được nâng cao lên đáng kể cũng như giúp ta thiết lập được việc tách và phát triển môi trường thuận lợi hơn rất nhiều. Việc sử dụng docker sẽ là tốt hơn hết khi bạn sử dụng trên HĐH  Linux tuy nhiên ở bài hướng dẫn này máy mình đang sử dụng window 10 lên mình sẽ hướng dẫn các bạn sử dụng và cài đặt trên windows 10. Tại bài viết này mình sẽ cùng các bạn sơ lược qua đôi chút về Docker. Bài viết sẽ đề cập qua các mục chính dưới đây
  1. Một số khái niệm cơ bản
  2. Cài đặt và cấu hình docker ban đầu
  3. Một số công cụ hữu ích

1. Một số khái niệm cơ bản

        Mình sẽ ko mất thời gian để đi vào 1 số khải niệm chi tiết giữa 1 rừng bài viết đày đủ và thú vị từ các bloger dày dặn kinh nghiệm. Tại đây mình sẽ liệt kê 1 số vấn đề chính mà bạn cần lưu ý luôn.
Docker engine: là công cụ biên dịch giúp ta build và chạy các docker container
  • Docker hub: là nơi lưu trữ, upload các image của bạn và của cộng đồng. Bạn có thể tải lên chia sẻ cho người khác hoặc pull xuống dùng lại từ người khác
  • Volume: là nơi thiết lập liên kết, lưu trữ độc lập với container. Nó giống như là cơ chế share file mà các bạn hay dùng vậy
  • Docker network: cung cấp 1 private network chỉ tồn tại giữa container và host. Hiện tại đã support tạo multi-host
  • Docker image: Là các môi trường được thiết lập sẵn phù hợp với từng tính chất phát triển. Các image thường được chia sẻ lên các docker hub. Develop sẽ pull các image này về để sử dụng  (Ví dụ image ubuntu được cài sẵn ubuntu hay image mongodb cài sẵn ubuntu và mongodb … )
  • Docker container: Chính là môi trường con được tạo ra. Có điều điểm khác biệt mà nó mang lại và hơn hẳn so với máy ảo là
    • Tất cả các container đều dùng chung nhân kernel của máy mẹ (host OS) như Ram, Cpu ... (Còn với máy ảo thì là 1 hđh riêng biệt, cô lập với môi trường xung quanh => tổn ổ cứng, tốn Ram, .. nặng, lãng phí tài nguyên, vố số các gói cài đặt dư thừa ko cần thiết).
    • Sử dụng hệ thống file cắt lớp (layer file system) => tối ưu tài nguyên tốt hơn
Có thể hiểu mỗi 1 máy con (container) được tạo ra sẽ được sử dụng từ 1 file ảnh (image ). File ảnh là file chỉ được phép đọc (read only), trong khi mỗi máy con (container) là 1 lớp bọc có thể ghi được => Từ 1 image có thể tạo vô số container mà tận hưởng các đặc điểm từ image. Đừng lo bạn hãy nhìn hình dưới đây và xem mình giải thích để được biết rõ hơn nhé
               P: Hey tôi cần tạo 3 project A, B, C chạy Nodejs và có dùng nginx. Tôi thấy anh trai Docker hub của anh có imageA có cả NodeJS, nginx
               D: Ok tôi tạo cho anh 3 container A, B, C
               P: Oh project A của tôi ko vấn đề, nhưng không ổn rồi, tôi cần thiết lập riêng biết cho
                      B: thêm golang, nginx
                      C: tôi muốn thêm apache, python cơ
              D: Oke bạn hay cài những gì bạn muốn trên Container B và cả C cũng như vậy. Mình đã cung cấp layer file system, hãy thiết lập các thay đổi mà bạn muốn. Đương                   nhiên cốt lõi ImageA của mình bạn chỉ có thể đọc chứ ko thay đổi vì ImageA của mình đang dùng chung cho cả các anh container khác nữa cơ mà 😎
  • Docker compose: là công cụ định nghĩa, khởi chạy nhiều máy ảo (container) trong 1 ứng dụng Docker (multiple container Docker application)
      => Vậy câu hỏi đặt ra là khi nào dùng docker. Câu trả lời là: với 1 developer server thì docker là điều luôn cần thiết
   + Trong khi bạn muốn test sự ổn định trên server mà không có chi phí mua server
   + Trải nghiệm test ứng dụng trên các hệ điều hành khác mà ko cần cài đặt phức tạp mất thời gian => Docker
   + Thiết lập môi trường server và test (Load balancing, cache … vv )=> nghĩ ngay tới docker
   … vv và rất nhiều các lý do khác, chung quy lại với 1 dev server thì docker là 1 điều cần thiết
Tham khảo:

2. Cài đặt docker trên window

Cài đặt cơ bản khởi tạo
  • Tải về và cài đặt docker tại: https://docs.docker.com/engine/installation/#supported-platforms . Gói này đã bao gồm cả docker compose (là 1 tiện ích quản lý Dockerfile giúp việc host nhiều container dễ dàng hơn)
  • Tải về và cài đặt docker toolbox tại: https://www.docker.com/products/docker-toolbox . Là 1 tiện ích quản lý ui rất tốt mặc định đến từ docker
  • Sau khi cài đật phải đảm bảo 4 điều kiện sau
    • Hyper-V ảo hóa phải được bật trên windows: Nếu chưa được bật vui lòng xem cách bật trên các nguồn khác
    • Virtualization: trình ảo hóa phải được bật (enable): Nếu chưa được bật bạn vui lòng khởi động lại máy và vào bios chọn phần ... Virtualization và enable nó lên
  • Cho phép các ổ đĩa được chia sẻ tài nguyên với các container: Xem hướng dẫn tại đây
             https://github.com/docker/for-win/issues/125
  • Cho phép mở các cổng TCP, UDP trên windows.
    • Truy cập Control Panel\All Control Panel Items\Windows Firewall.  Vào tab Advanced settings chọn mở 2 giao thức này
Nếu bạn đã đảm bảo hoàn thành các bước trên vậy thì oke bạn đã cài đặt thành công docker trên windows 10.

3. Tổng hợp các công cụ hữu dụng tiện ích cho Docker

  • Portainer: quản lý ui docker rất tiện ích hữu dụng. Nó thực chất là 1 webserver giải lập trên local bằng cách pull về 1 image và tạo 1 container cho docker. Xem thêm tại đây
  • Rancher: giống như portainer, nhưng rancher còn toàn diện và đa năng hơn, nhiều hơn những gì mà nó phục vụ cho docker vì nó còn hỗ trợ nhiều hơn vậy. Tuy nhiên trong phạm vi docker ta chỉ cần sử dụng Portainer là đủ J. Xem thêm tại đây
  • Wharfee: Hỗ trợ snipet, auto complete gợi ý mã làm việc với docker => rất tiện lợi không phải nhớ. Xem thêm tại đây
Link tham khảo:
https://viblo.asia/Chym/posts/jOxGdqrXRdm
https://kipalog.com/posts/Toi-da-dung-Docker-nhu-the-nao

3 coment�rios

Click here for coment�rios
Unknown
admin
lúc 14:05 20 tháng 6, 2017 ×

admin viết 1 bài chi tiết về rancher được không ạ ?

Reply
avatar
Manh Nguyen
admin
lúc 11:59 25 tháng 6, 2017 ×

Hi Bạn! Nhất định mình sẽ viết một bài về rancher. Thời gian gần đây mình chưa có nhiều thời gian lên chưa đầu tư được thêm về bài viết. Mình hầu như lôi lại những kiến thức mà mình viết lại trên doc ra để đăng lên! Cảm ơn bạn đã ủng hộ blog của mình nhé! Hẹn gặp lại bạn vào một bài viết rancher :) !

Reply
avatar
Nặc danh
admin
lúc 21:58 17 tháng 7, 2017 ×

Tác giải có thể giải thích rõ hơn về Docker file layer system được không ạ :D !

Reply
avatar