Docker image và container khác nhau như thế nào?
Đáp án mẫu
Image là một template chỉ đọc chứa filesystem, ứng dụng và các dependency của nó, cùng metadata như lệnh mặc định. Container là một instance đang chạy và được cô lập của một image.
Có thể so sánh với class và object: một image khởi động được nhiều container.
Image được tạo từ các layer, mỗi layer xếp chồng lên layer trước và được chia sẻ giữa các image dùng chung base. Khi Docker khởi động container, nó thêm một writable layer mỏng lên trên cùng. File mà container tạo hoặc sửa nằm ở đó, và biến mất khi container bị xoá. Bản thân image không bao giờ thay đổi.
docker build -t myapp:1.0 . # produce an image
docker run -d --name a myapp:1.0 # first container
docker run -d --name b myapp:1.0 # second container, same image
docker images # list images
docker ps # list running containers
Việc cô lập đến từ namespace và cgroup của Linux, và container dùng chung kernel với host.
Build một lần thành image, rồi chạy bao nhiêu container tuỳ ý.
Ý chính
- Image là template chỉ đọc gồm nhiều layer
- Container là một instance đang chạy của image
- Container thêm một writable layer mỏng và mất khi bị xoá
- Một image khởi động được nhiều container
Câu hỏi nối tiếp thường gặp
- Điều gì xảy ra với file được ghi trong container khi bạn xoá nó?
Lỗi thường gặp
- Dùng hai từ image và container thay thế cho nhau
- Nghĩ rằng thay đổi trong container đang chạy sẽ sửa image