/ Docker Series 2018

Series Docker căn bản - Lộ trình

Docker là một công cụ lý tưởng dành cho các developers và sysadmins, những công việc như develop, deploy, run trở lên đơn giản và chính xác khi kết hợp sử dụng Docker.

Nội dung

Vấn đề ở đây là gì?

Trước khi bắt đầu mỗi dự án, chúng ta cần phải cài đặt 2 loại môi trường:

  • Môi trường để phát triển ứng dụng (dev environment)
  • Môi trường để chạy ứng dụng (live environment)

Chúng ta cần đảm bảo 2 môi trường này giống hệt nhau để code chạy ở môi trường dev như thế nào thì lên môi trường live nó cũng phải như vậy, thậm chí có lỗi thì cũng phải lỗi giống nhau ở tất cả các máy.

Thông thường, để cài đặt các môi trường như thế này, chúng ta sẽ cần khá nhiều thời gian, công sức và còn gặp vô số các trở ngại, kiểu như đụng phải sự khác biệt giữa kiểu hệ điều hành (Windows/Linux/Mac), version của các hệ điều hành, version của các package dependencies, và đặc biệt, mỗi lần muốn tạo thêm máy dev hoặc máy live, chúng ta lại phải hì hục lặp đi lặp lại các thao tác cài đặt này từ đầu. Đối với môi trường đơn giản thì không thành vấn đề, nhưng đối với môi trường quá phức tạp chúng ta hoàn toàn có khả năng bỏ sót hoặc thực hiện sai một bước nào đó. Môi trường chạy sai ngay sau đó thì không sao, nó mà chạy đúng thì sẽ tiềm tàng rất nhiều rủi ro 😏

Docker có vai trò gì ở đây?

Docker giải quyết vấn đề trên bằng cách cho phép chúng ta viết ra những yêu cầu cài đặt vào một file gọi là Dockerfile, tiếp tục chúng ta sẽ yêu cầu Docker thực hiện cài đặt được định nghĩa trong file này và sau đó chúng ta chỉ việc đợi Docker tự động chạy một lúc là chúng ta sẽ có một môi trường phát triển như mong muốn. Mỗi khi muốn cài đặt lại môi trường này trên máy khác, chúng ta chỉ việc copy Dockerfile này sang máy đó, chạy lại các lệnh của Docker, và thế là xong.

Hầu hết các kiến thức của loạt bài viết sắp tới sẽ được chia sẻ ở mức độ hết sức cơ bản để đảm bảo hầu hết các bạn đều có thể hiểu được. Việc hiểu các kiến thức căn bản không chỉ cần thiết đối với những bạn thực sự muốn gắn bó lâu dài với Docker mà còn trong hầu hết các lĩnh vực khác trong đời lập trình. Bởi khi hiểu được căn bản, việc đi sâu vào các chức năng đặc thù khác sẽ không quá khó khăn và chắc chắn các bạn sẽ cảm thấy cực kỳ tự tin mỗi khi gõ một lệnh nào đó trên terminal.

Chuẩn bị môi trường thực hành

Ở các bài viết mở đầu, tôi sẽ chia sẻ với các bạn cách cài đặt được môi trường để chạy các bài thực hành liên quan tới Docker. Để đảm bảo tất cả các ví dụ trong series được thực hiện một cách thống nhất mà vẫn đảm bảo gần nhất với môi trường thực tế, tôi đã thêm một số bài viết hướng dẫn cài đặt và làm quen với hệ điều hành Linux, cụ thể là Ubuntu 18.04 trên phần mềm tạo máy ảo VirtualBox.

  1. Cài đặt máy ảo Ubuntu 18.04 trên Virtual Box
  2. Làm quen với một số công cụ trên Ubuntu
  3. Cài đặt Docker Community Edition (CE) trên Ubuntu

Docker là gì? Docker Container là gì?

Các bài tiếp theo sẽ hướng dẫn các bạn cách để chạy một container từ các Container Image có sẵn trên hub.docker.com. Sau khi đã có hiểu biết về các chức năng của container, các ban đã sẵn sàng để trả lời cho câu hỏi "Làm cách nào để tự tạo ra một Docker Image để đáp ứng chính xác nhu cầu mình cần?" Điều này sẽ tạo cho bạn một tiền đề cho bài học ở phần tiếp theo về Container Image, hay gọi tắt là Image.

  1. Làm quen với các khái niệm cốt lõi liên quan tới Docker
  2. Quản lý Containers <coming soon>
  3. Truy cập shell của Containers. <coming soon>
  4. Docker Networking <coming soon>
  5. Docker Container Best Practices <coming soon>

Căn bản về Docker Images

Ở loạt bài trước, tôi đã chia sẻ về cách thức sử dụng các Container Image có sẵn từ hub.docker.com và có chạy qua một số các ví dụ cơ bản trên Container đó. Trong loạt bài viết sau, tôi sẽ chia sẻ kỹ hơn về việc quản lý Container Image hay còn gọi tắt là Image. Sau loạt 4 bài này, các bạn sẽ có khả năng tự tạo một Image với các cấu hình phù hợp với các dự án đặc thù hơn. Cách đưa Image vừa được tạo lên trên https://hub.docker.com.

  1. Cách Download và sử dụng Docker Images từ https://hub.docker.com <coming soon>
  2. Cách cấu hình chạy Docker Image sử dụng Dockerfiles <coming soon>
  3. Cách đưa các Docker Image "tự chế" lên trên Docker Hub <coming soon>
  4. Cách build một Images <coming soon>

Docker Persistent Data

Phần này có nội dung chính liên quan tới việc quản lý data của ứng dụng. Data là một thành phần vô cùng quan trọng của hầu hết các ứng dụng hiện nay, các bạn cần biết cách cấu hình làm sao để đảm bảo data được toàn vẹn mỗi khi tiến hành cập nhật một thành phần nào đó của hệ thống.

  1. Container Lifetime (Vòng đời của 1 Container) <coming soon>
  2. Docker Volumes <coming soon>
  3. Cấu hình Bind Mount để hỗ trợ việc develop trên máy tính cá nhân. Bind Mount là một tính năng cho phép chia sẻ một thư mục của máy host với container. Thư mục này có thể là thư mục chứa file config, code hoặc data mà container cần dùng đến, bạn sẽ cần tới tính năng này khi đang trong quá trình phát triển ứng dụng. <coming soon>

Docker Compose

Sau khi đã làm quen được 3 thành phần cơ bản của Docker: Container, Image, Volume, các bạn đã sẵn sàng để học cách sử dụng docker-compose, một tiện ích của Docker có chức năng giúp chúng ta cấu hình kết hợp nhiều container để chúng cùng phục vụ cho một ứng dụng.

  1. docker-compose là gì? Khi nào nên dùng docker-compose? <coming soon>
  2. Cách tạo ra file docker-compose.yml <coming soon>
  3. Cách sử dụng docker-compose <coming soon>

Docker Swarm

Đây có thể coi là phần khoai nhất của toàn bộ series. Sau khi đã biết được cách kết hợp các container, volume để phục vụ cho 1 ứng dụng, chúng ta cần học thêm cách mở rộng hệ thống thành nhiều cụm máy chủ, nâng cao hiệu suất tính toán, phục vụ được nhiều user hơn.

  1. Cách build một Cluster <coming soon>
  2. Multiple Host Networking <coming soon>
  3. Routing Mesh <coming soon>
  4. Swarm Services <coming soon>
  5. Stack <coming soon>
  6. Cách trao đổi các file config một cách bảo mật giữa các swarm <coming soon>

Docker workflow

Tới phần này, tôi sẽ chia sẻ về một flow hoàn chỉnh trong việc sử dụng Docker từ lúc develop, cho tới lúc deploy trên hệ thống thông qua một số ví dụ. <coming soon>

  1. Cài đặt và deploy server Ghost
  2. Cài đặt và deploy server Laravel
  3. Cài đặt và deploy server Wordpress

Lời kết

Lộ trình của series được tham khảo rất nhiều từ khóa học Docker Mastery: The Complete Toolset From a Docker Captain trên Udemy. Đây là khóa học rất tuyệt vời và đầy đủ về Docker. Các bạn có nhiều thời gian có thể lên Udemy mua về học. Những kiến thức của khóa học thực sự rất có giá trị thực tế.

Series này sẽ là một lộ trình dài đối với cả tôi và các bạn. Tôi dự định sẽ đăng bài đều đặn mỗi tuần, vì vậy nếu bạn muốn nhận thông báo, hãy đăng ký ở link bên dưới hoặc like page Hung TUT nhé. Cám ơn các bạn.

Series Docker căn bản - Lộ trình
Share this

Subscribe to HungTUT.com