Docker là gì? Docker 001 Cho người mới

Nội dung

Nếu bạn đang theo dõi các xu hướng trong điện toán “đám mây”, thì có lẽ bạn đã nghe nói về Docker. Trong bài viết này dành cho bạn nếu bạn đang thắc mắc Docker là gì và tại sao bạn nên biết về công cụ này.

Theo định nghĩa của team Docker thì nó là “một dự án mã nguồn mở để đóng gói, vận chuyển và chạy bất kỳ ứng dụng nào”. Ý tưởng của nó là cung cấp một công cụ cho phép bạn “đóng gói” hoặc “đóng gói” bất kỳ ứng dụng nào chung với hệ điều hành và các thư viện nó cần. Sau khi “đóng gói”, bạn có một cái “gói” được gọi là “thùng Docker” (Docker container). Cái thùng này có thể được tải lên và vận hành bởi bất kỳ cơ sở hạ tầng nào. Việc sử dụng thùng chứa này giống như là bạn đi thư giãn mát xa và được tặng thêm bao cao su vậy. Rất tiện lợn.

Vậy các công nghệ cơ bản tạo nên Docker là gì?

  • Docker tận dụng LXC (thùng Linux), bao gồm các tính năng của hệ điều hành Linux như cgroups và namespaces để phân luồng chạy các phép tính toán và kiểm soát tài nguyên. Mặc dù Docker hiện đang tận dụng LXC, nhưng kiến trúc Docker không nhất thiết phải giới hạn ở LXC. Về lý thuyết, Docker có thể tận dụng KVM (một dạng máy ảo, virtual machine, hay dùng để giả lập các hệ điều hành) để làm những việc tương tự như hiện nay với LXC. (Cập nhật: giả lập HĐH chậm hơn nhiều)
  • Công nghệ chép-khi-ghi (Copy-on-write) cho phép Docker khởi tạo các thùng chứa rất nhanh, nó nhưng một hệ thống các con trỏ vào các tập tin của một HĐH. Ví dụ bạn có 2 thùng chứa: Ubuntu và SQL, vậy bạn có thể tạo thùng SQL dựa trên nền tảng có sẵn của thùng Ubuntu. Khi khởi động, thay vì phải khởi động cả hai thùng từ đầu, thì những tập tin mà thùng SQL cần đã được trỏ vào thùng Ubuntu. Tôi hy vọng bạn đủ ngầu để hiểu câu này, nếu không thì chỉ cần biết là nó nhanh hơn công nghệ giả lập HĐH

Dùng thử Docker

Trước tiên, nếu bạn chưa cài đặt Docker, hãy làm theo hướng dẫn trên trang chủ Docker để cài đặt Docker Desktop cho hệ điều hành của bạn.
Một khi nó đã cài đặt, bạn sẽ có sẵn lệnh docker trên dòng lệnh của mình. Bạn có thể chạy hình ảnh Docker cục bộ bằng lệnh docker run, có cú pháp sau:

ShellScript
docker run <IMAGE> [COMMAND]

là một tập tin miêu tả thùng Docker của bạn. Nói cách khác, thùng Docker là một khái niệm, ảnh Docker là tập tin của khái niệm đó.
[COMMAND] là một số tuỳ chọn bạn có thể thêm vào, khi bạn cần thì bạn sẽ tìm nó trên doc, ko cần quan tâm bây giờ.

Bạn có thể thử mệnh sau :

ShellScript
$ docker run -it ubuntu:20.04 bash
Unable to find image ‘ubuntu:20.04 locally
20.04: Pulling from library/ubuntu
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb83 (...)
Status: Downloaded newer image for ubuntu:20.04
root@d96ad3779966:/#

Nếu bạn có kinh nghiệm nhiều năm như tôi, bạn sẽ hết hồn khi thấy một máy Linux khởi động nhanh như vậy.

Bạn có thể thử mệnh sau :

ShellScript
root@d96ad3779966:/# ls -al

Đó là lệnh để hiển thị các tập tin trong hệ thống và bạn sẽ thấy một thế thông tập tin khác với máy của bạn. Đó là bởi vì ảnh Docker chạy trong các thùng được phân chia theo người dùng: khi bạn ở trong một cái thùng Docker, bạn chỉ có thể thấy hệ thống tệp, bộ nhớ, mạng, v.v. trong đó. Bạn không thể truy cập bất kỳ dữ liệu nào trong các vùng chứa khác hoặc trên hệ điều hành chủ (HĐH đang chạy Docker). Đây điểm mạnh khi dùng ảnh Docker để chạy ứng dụng: tính tự lập.

Các ảnh Docker chạy như nhau cho dù bạn chạy chúng ở đâu và nó không quan tâm máy chủ đang làm cái gì, được tuỳ chỉnh như thế nào.

Kết luận

Bây giờ bạn đã hiểu tại sao dùng Docker là ngầu. Công cụ này hoạt động tốt khi bạn chạy vài thùng Docker trên máy tính cá nhân. Khi chạy vùng chứa Docker trong Production có thể cần có nhiều thùng trên nhiều máy chủ, khi đó bạn sẽ muốn sử dụng công cụ điều phối (chọn máy chủ nào chạy việc nào),tự động sửa chữa (tự động triển khai lại các thùng chứa bị lỗi khởi động), tự động thay đổi quy mô (tăng và giảm số lượng thùng), cân bằng tải (phân phối lưu lượng theo các thùng)…Công cụ thông dụng nhất hiện nay là Kubernetes.

Bài viết liên quan

SQL trong Data Analysis: Procedure và Function – 2 công cụ không thể thiếu

Xin chào các bạn đã quay trở lại chuỗi bài SQL trong Data Analysis...

Tự học Data Analyst: Tổng hợp chuỗi bài SQL 101 trong Data Analysis

Trong bài viết này, chúng ta sẽ tổng hợp các bài viết thành một...

SQL trong Data Analysis: Hiểu rõ và ứng dụng đệ quy (Recursive trong PostgreSQL)

Trong thế giới của cơ sở dữ liệu quan hệ, các truy vấn đệ...

[Phân Tích Dữ Liệu Với Python] Tập 1: Làm Quen Với Pandas

Trong thời đại tiến bộ của khoa học dữ liệu, khả năng phân tích...
spot_img