Trong những năm gần đây, thì Docker (hay container) được nhắc đến khá nhiều, vậy nó cái gì vậy, có ngon như cơm gà xối mỡ không mà hot quá vậy. Ở bài ngày hôm nay mình sẽ cùng các bạn tìm hiểu về Docker
Tại sao cần Docker
Vào một ngày đẹp trời, bạn lên mạng thấy có Framework tên là PHP Laravel, bạn đọc hướng dẫn của nó thì thấy cài một nùi thứ nào là Apache, My SQL, … và còn nhiều nữa, bạn cài nhưng bị lỗi, bạn nản lòng, vậy là thế giới lại mất đi một dev PHP rồi.
Lại một ngày đẹp trời khác nữa, khi bạn code Spring Boot (1 Framework của Java) chạy test các kiểu ngon lành, nhưng đến lúc gửi sang cho thằng bạn thì lại bị lỗi, bạn bị thằng bạn chửi vì code không cẩn thận. Nhưng mà rồi bạn phát hiện ra là thư viện bạn cài thì chỉ hỗ trợ JDK 8 còn thằng bạn của bạn chơi lớn tận JDK 13 mà nó còn sài MacOS nữa mới chết chứ.
Đến lúc bạn code xong, bạn cần deloy (triển khai) lên server, bạn cùng phải cài một loạt các chương trình, công cụ hỗ trợ để chạy được ứng dụng của bạn, trời ơi quá trình này thật gian khổ là bao, nào là phiên bản của mỗi ứng dụng, các OS không tương thích nhau, bạn đau khổ, bạn tuyệt vọng.
À thật ra mấy câu chuyện trên là vui thôi, chứ thật ra đó là những gì mình đã được gặp trong quá trình làm việc của mình. Vậy ở đây chúng ta có hai thứ cần giải quyết đó là việc cần phải làm là setup đơn giản hơn vì đây là việc lặp đi lặp lại và phải thiết lập các môi trường cần thiết sao cho việc code, test và deloy ứng dụng được trơn tru nhất. Vậy là Docker ra đời.
Docker nó có gì hay vậy ?
Docker giúp cho việc setup hoặc deloy một ứng dụng lên một hoặc nhiều môi trường (có thể là máy tính hoặc server), cài đặc các biến môi trường, các thư viện, ứng dụng phụ thuộc một cách nhanh chóng. Giúp cho việc của chúng ta trở nên đơn giản hơn bằng công nghệ ảo hoá được gọi là container.
Nghe container quen quen ha, mấy cái thùng có mấy chiếc xe dài dài hay chạy đấy.
Container là một bước ngoặt lớn của ngành logistics, container giúp cho việc đóng gói hàng, vận chuyển và lưu trữ hàng hoá trở nên đơn giản vì có quy ước chung từ kích thước, chất liệu và những thứ khác, bạn có thể để tôm, cua, cá, bánh kẹo, cả ô tô trong container. Việc vận chuyển đi toàn thế giới đơn giản hơn, đến đâu cũng có các cần cẩu sẵng sàng hoạt động.
Về cơ bản thì Docker cũng như vậy, nó đóng gói toàn bộ nhưng thứ cần thiết vào trong một container để chạy, từ đó bạn có thể di chuyển nó dễ dàng từ máy nhà lên máy server, đang từ AWS (Amazon Web Services ) buồn quá chuyển sang GGP (Google Cloud Platform), mọi việc nó trở nên đơn giản như chưa bao giờ hết.
Docker có gì khác với các công nghệ ảo hoá hiện tại không
Mình nghĩ chắc bạn nào cũng đã nghe qua về máy ảo rồi, Docker cũng là một dạng như vậy, nó chạy trên OS gốc, vậy điều gì làm nên sự ảo diệu của Docker.
Ở hình ảnh trên chúng ta có thể thấy được sự cồng kềnh của VM (Virtual Machines), mỗi OS phải được cài độc lập với nhau và được phân chia một phần cứng thật nhất định, dẫn đến việc tài nguyên không được tối ưu, trong khi dùng Docker thì mọi chuyện sẽ đơn giản hơn nhiều.
Ai nên dùng Docker
Theo như mình nghĩ, mọi developer đều nên dùng Docker, Docker nên là một quy chuẩn để phát triển phần mềm. Để việc code, test và deloy trở nên đơn giản và trơn tru hơn bao giờ hết. Từ Docker ta có thể phát triển tiếp là CI/ CD (tích hợp liên tục và phân phối tự động), hay Kubernetes (để quản lý hàng trăm container) hay đơn giản là Docker Compose. Từ từ rãnh mình sẽ viết nha.
Vậy ở bài ngày hôm nay, mình đã giới thiệu qua về Docker là gì và những lợi ích của nó khi phát triển phần mềm, ở những bài tiếp theo mình sẽ hướng dẫn cài đặt và chạy những ứng dụng trên Docker.