Khái niệm
Docker – là một công cụ tạo môi trường được đóng gói (Container) mà không làm tác động tới môi trường hiện tại của máy, môi trường trong Docker sẽ chạy độc lập, được gọi là container. Mỗi containers chứa ứng dụng gồm chứa các thư viện riêng, nhưng kernel được chia sẻ với các containers khác. Mỗi kernel được chạy trong các môi trường độc lập với nhau. Docker chạy được trên mọi máy tính, đám mây hay bất cứ nền tảng nào. Vì vậy bạn có thể đẩy ứng dụng đến bất cứ đâu mà không cần phải quan tâm đến môi trường đích như thế nào …
Image
Image chỉ đơn giản là một file thông thường, trong file này có chứa sẵn các chương trình cần thiết để khởi tạo một môi trường nào đó. Ví dụ Image apache thì trong đó đã có sẵn apache kèm theo một số chương trình tiện ích để thao tác với apache. Image php đã chứa sẵn php kèm theo một số chương trình tiện ích… Chiếu theo các đặc điểm này, chúng ta có thể coi Image là một cái khuôn. Và khuôn này được dùng để “đúc” ra các Container. Nói cách khác, Image được sử dụng để khởi tạo ra một hay nhiều Container. Sau đó, các Container này được cấu hình như thế nào cũng không làm ảnh hưởng tới Image ban đầu.
Nếu so sánh với ảo hoả, thì một image có thể tương đương với một file ISO, container tương đương với VM
Container
Có rất nhiều process được thực thi trong một HĐH, các process này đều dùng chung một nguồn tài nguyên từ OS và các process này đều có thể truy cập được vào dữ liệu của các process khác. Trong trường hợp chúng ta muốn chạy một hay nhiều process trên một môi trường tách biệt hoàn toàn với HĐH, chúng ta cần phải khởi tạo một loại môi trường gọi là sandbox environment. Sandbox environment chỉ đơn giản là khái niệm chỉ một loại môi trường quản lý các process hoàn toàn tách biệt với môi trường máy Host. Sandbox cho phép chúng ta giới hạn quyền truy cập và tài nguyên sử dụng của các process.
Container chính là một ví dụ cụ thể của sandbox environment. Về cơ bản Container gom các tiến trình bên trong nó và thực thi tách biệt với các process của Host OS. Docker sử dụng cơ chế namespaces và control groups để tạo ra cơ chế quản lý Container.
Registry
Registry là một thư viện lưu trữ các Images được build sẵn từ các nhà phát triển. Docker cung cấp cho chúng ta một Registry có địa chỉ tại https://hub.docker.com.