Docker là phần mềm cho phép bạn xây dựng, chạy thử, kiểm thử và triển khai ứng dụng một cách nhanh chóng. Nó đóng gói các dữ liệu, phần mềm vào các đơn vị tiêu chuẩn được gọi là container. Trong container này, có đầy đủ mọi thứ cần thiết để phầm mềm/app đó có thể dùng để chạy, thực thi các tác vụ cần thiết.

Mỗi lần chạy ứng dụng, việc phải cài đặt các công cụ, môi trường cần thiết cho application. Cũng như không đồng nhất giữa các môi trường trên nhiều server khác nhau sẽ mất rất nhiều thời gian. Việc này cứ lặp đi lặp lại. Do đó, để giải quyết vấn đề này, Docker đã giải quyết bài toán này với các container. Người dùng, quản trị hệ thống không cần cài thêm mà vẫn có thể nhanh chóng triển khai, thay đổi quy mô ứng dụng trên các môi trường khác nhau.
Danh mục
Docker là gì
Hiểu đơn giản, Docker là một mã nguồn mở, nền tảng cho các nhà quản trị hệ thống, developers…thực hiện các deploy, chạy các ứng dụng, kiểm thử với các container.
Container trong Docker là gì
Các containers cho phép lập trình viên đóng gói một ứng dụng với tất cả các phần tử cần thiết: Như thư viện code, các package cần thiết để chạy được ứng dụng.. Tất cả sẽ được đóng gói trong 1 container. Giống với các container trong vận tải hàng hóa. Như vậy, ứng dụng đó có thể chạy trên các môi trường khác nhau từ linux hoặc windows khác nhau. Nếu container đó được đóng gói một cách đầy đủ.

Nó khá giống virtual machine (VM). Việc sử dụng các container hiện nay được sử dụng phổ biến. Có phải chỉ mỗi Docker quản lý được các container hay không?
Trả lời: Không. Như đã nói ở trên, Đây là một nền tảng để thực hiện quản lý containers. Bên cạnh đó cũng có các đối thủ khác. Tuy nhiên, Docker lại phát triển, phổ biến và nhanh chóng hơn hết. Lý do chi tiết như bên dưới:
- Dễ ứng dụng: rất dễ cho mọi người sử dụng. Từ lập trình viên, quản trị hệ thống, cho tới các endusers… nó tận dụng lợi thế của container để build, test nhanh chóng.
- Tốc độ: Docker container rất nhẹ và nhanh. Có thể tạo và chạy trong vài giây. Việc tạo, chạy, xóa một container nhanh chóng, dễ hơn rất nhiều so với một VM.
- Môi trường chạy và khả năng mở rộng: Bạn có thể chia nhỏ những chức năng của ứng dụng thành các container riêng lẻ. Các container có thể liên kếtvới nhau để tạo thành một ứng dụng. Dể quản lý, để upgrade hệ thống khi cần thiết.
- Cộng đồng: Đây là một mã nguồn mở. Được cộng đồng hỗ trợ và phát triển rộng và chuyên biệt từng ứng dụng.
Các khái niệm cơ bản của Docker
Có các components cơ bản như hình sau.
Các khái niệm cơ bản trong docker:
- Docker Engine: Đây là một công cụ để đóng gói ứng dụng. Là một thành phần chính của docker.
- Images: Được hiểu đơn giản là một “khuôn mẫu” để tạo ra containers. Bởi vì có cộng động rộng lớn, nên đã có rất nhiều Images được tùy chỉnh chi tiết, bao quát các ứng dụng phổ biến hiện nay. Nên đôi khi ta chỉ cần Pull về từ Docker Hub và sử dụng. Hoăc tự tạo Private Images.
- Docker Hub: Nó có hàng ngàn các images được cộng đồng tạo và public. Rất dễ dàng để “tải về” (Pull) và configure lại theo ý của người dùng.
- Container: Là một instance của một image. Có thể create, start, stop, move or delete container dựa trên API, CLI.
- Docker file: là một tập tin bao gồm các chỉ dẫn để build một image .
- Volumes: là phần dữ liệu được tạo ra khi container được khởi tạo.
- Docker Registry: Là nơi lưu trữ các Image. Tức là khi bạn tạo các Image và muốn chia sẻ cho ai đó hoặc cộng đồng. Nói cách khác cho việc này là upload lên Docker Registry.
- Docker Desktop: Là một công cụ dành cho máy MacOS và Windows để xây dựng và chia sẻ các ứng dụng và dịch vụ được đóng gói.
- Trên đây là những khái niệm cơ bản mang tính Level 0 khi bắt đầu đọc về docker. Bên cạnh đó, có những khái niệm mang tính level 1: Client, Daemon, Compose, Swarm…
Quy trình thực thi của Docker
Docker workflows được tóm tắt trong 3 bước: Build --> Push --> Pull and Run. Chi tiết như hình sau:
Build
Cần một Docker-File, trong này chính là code mang tính chỉ dẫn tạo một Image. Dockerfile này sẽ được Build tại một máy tính đã cài đặt Docker Engine. Sau khi build ta sẽ có được Container, trong Container này chứa ứng dụng kèm bộ thư viện cần thiết.
Push
Sau khi có được Container, thực hiện việc push Container này lên một nơi public và lưu tại đó.
Pull and Run
Nếu một máy tính khác muốn sử dụng Container chúng ta thì bắt buộc máy phải thực hiện việc Pull container này về máy. Máy này cũng yêu cầu cài Docker Engine. Sau đó thực hiện Run Container này. Và chúng ta có application đã được deploy, start, running một cách nhanh chóng.
Lợi ích
Hiện nay nó sử dụng rất nhiều tại rất nhiều dự án công nghệ thông tin, điện tử truyền thông trong việc phát triển sản phẩm. Lợi ích sử dụng Docker là gì?
- Không như máy ảo. Việc start và stop các container chỉ trong vài giây.
- Container có thể build và delete nhanh hơn máy ảo.
- Bạn có thể khởi chạy container trên mỗi hệ thống độc lập.
- Dễ dàng thiết lập môi trường làm việc. Chỉ cần config 1 lần duy nhất và không bao giờ phải cài đặt lại các dependencies.
- Có thể chia sẻ, sử dụng lại một container cho những người sử dụng khác nhau với một lần build.
- Nó giữ cho word-space sạch sẽ, độc lập, không bị ảnh hướng tới các phần khác khi xóa bỏ container.
Xem thêm:
Tới đây, đã kết thúc phầm lý thuyết cơ bản về Docker cũng như Container. Để thực hiện việc cài đặt và một số lệnh cơ bản, các bạn vui lòng truy cập bài viết tại đây