Docker image là bất biến. Sau khi được build, chúng không thay đổi. Điều này đảm bảo tính nhất quán, khả năng dự đoán và tính ổn định. Mọi container được tạo từ cùng một image đều hoạt động giống hệt nhau, giúp việc quản lý phiên bản trở nên an toàn và dễ dàng.
Nhưng điều gì sẽ xảy ra nếu bạn cần điều chỉnh thứ gì đó bên trong một container đang chạy, chẳng hạn như cài đặt một gói hoặc cập nhật cấu hình? Đó là lúc lệnh `docker commit` phát huy tác dụng. Nó cho phép bạn ghi lại các thay đổi trong một container đang chạy và tạo một image mới mà không cần chạm vào image gốc. Điều này rất tuyệt vời để kiểm tra các bản sửa lỗi, lặp lại nhanh chóng và triển khai những image tùy chỉnh mà không cần build lại từ đầu.
Tại sao Docker image không thay đổi?
Docker image bao gồm nhiều lớp chỉ đọc. Khi bạn chạy một container, Docker sẽ thêm một lớp ghi mỏng ở trên cùng được gọi là lớp container. Bất kỳ thay đổi nào bạn thực hiện chỉ xảy ra trong lớp trên cùng này. Sau khi container bị xóa, tất cả các thay đổi trong lớp đó sẽ biến mất, giữ nguyên image gốc.
- Thiết kế này đảm bảo một số lợi ích:
- Mọi container từ cùng một image đều hoạt động giống nhau, đảm bảo tính nhất quán.
- Các thay đổi trong một container không image hưởng đến những container khác, mang lại khả năng dự đoán.
Bạn có thể gắn thẻ các phiên bản image cụ thể một cách an toàn mà không gặp rủi ro. Thiết kế này cung cấp độ ổn định tuyệt vời, nhưng lại hạn chế bạn khi muốn thực hiện các thay đổi nhanh chóng đối với một container đang chạy. Đó là lúc lệnh `docker commit` phát huy tác dụng.
Tạo image mới từ container đang chạy
Khi bạn chạy lệnh `docker commit`, Docker sẽ ghi lại trạng thái hiện tại của một container đang chạy và tạo một image mới từ đó. Nó chụp nhanh hệ thống file của container, lưu lại bất kỳ thay đổi nào bạn đã thực hiện, chẳng hạn như các gói đã cài đặt, cấu hình được cập nhật hoặc những file đã sửa đổi, dưới dạng một lớp image mới. Bằng cách này, image gốc vẫn không bị image hưởng, cho phép bạn thử nghiệm và lặp lại nhanh chóng.

Điều này làm cho nó lý tưởng để lưu thiết lập cơ bản tùy chỉnh để sử dụng lại trong tương lai, áp dụng các bản sửa lỗi nhỏ hoặc thay đổi cấu hình trong quá trình thử nghiệm hoặc chia sẻ image đã cập nhật với nhóm của bạn mà không cần phải build lại Dockerfile từ đầu.
Bạn có thể sử dụng lệnh `docker commit` với cú pháp sau để tạo một image mới từ một container đang chạy:
docker commit [OPTIONS] CONTAINER_ID NEW_IMAGE_NAME[:TAG]Ở đây, `CONTAINER_ID` là ID hoặc tên của container bạn muốn chụp, `NEW_IMAGE_NAME` là tên bạn muốn đặt cho image mới, và `TAG` là tùy chọn, mặc định là `latest`.
Lưu ý: `docker commit` là một alias cũ cho `docker container commit`; cả hai đều giống nhau.
Lệnh `docker commit` cung cấp một số tùy chọn cho phép bạn thêm siêu dữ liệu, áp dụng các thay đổi cấu hình và kiểm soát cách thức hoạt động của quá trình cam kết. Bảng dưới đây tóm tắt tất cả các tùy chọn được hỗ trợ:
| Tùy chọn | Dạng dài | Mô tả | Ví dụ |
| -a | -author | Thêm tên tác giả vào siêu dữ liệu của image mới | docker commit -a "Anees" my-container my-image |
| -c | -change | Áp dụng các chỉ thị trong Dockerfile như ENV, LABEL hoặc CMD cho Docker image mới | docker commit -c "ENV APP_ENV=prod" my-container my-image |
| -m | -message | Thêm một thông báo ngắn mô tả những thay đổi đã được thực hiện trên image | docker commit -m "Installed curl" my-container my-image |
| -p | -pause | Tạm dừng quá trình commit trong container để đảm bảo tính nhất quán (mặc định: true) | docker commit --pause=false my-container my-image |
Học IT 













Công nghệ
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Hướng dẫn
Ô tô, Xe máy