Cập nhật Image lưu Image ra file và nạp Image từ file trong Docker
Từ container cập nhật lại vào image với lệnh docker commit, cách lưu image ra file trên đĩa và nạp một file image vào Docker
Lưu Container thành Image
Như đã biết từ một Image
bạn có thể sinh ra các Container
, mỗi Container
là bản thực thi của Image, khi sử dụng Container bạn có thể cấu hình, cài đặt thêm vào nó các package, đưa thêm dữ liệu …
Đến một lúc, bạn muốn lưu những thay đổi này và ghi lại thành một Image để sau này bạn sinh ra các Container khác bản thân nó đã chữa những thay đổi bạn đã lưu. Giả sử bạn có một container có tên (hoặc id) là mycontainer
nếu muốn lưu thành image thực hiện lệnh:
docker commit mycontainer myimage:version
Trong đó myimage
và version
là tên và phiên bản do bạn đặt. Nếu lưu cùng tên với image tạo ra container này, coi như image cũ được cập nhật mới.
Sau lệnh này trong hệ thống docker của bạn có thêm image với tên bạn đặt. Thực hành ví dụ sau: (tạo một container hệ điều hành debian, cài đặt thêm vào nó gói net-tools, lưu container này lại thành image, tạo một container từ image mới có)
Tải hệ điều hành debian về nếu chưa có :
docker pull debian
Tạo / chạy một container đặt tên là mydebian
của debian :
docker run -it --name mydebian debian
Cài SSH Client vào container mydebian
Do debian cung cấp ở image trên không kèm theo net-tools, nên muốn chạy net-tools thì sẽ cài thêm. Giờ đang ở lệnh bash của container gõ lệnh sau để cài:
apt install net-tools
Sau khi cài đặt bạn đã có thể sử dụng lệnh netstat -nltp
trên container này của bạn!
Lưu container lại thành image: trước tiên nếu container đang chạy thì cho dừng lại :
docker stop mycontainer
Gõ lệnh lưu container mycontainer
thành image đặt tên là debian-net-tools:v1
docker commit mydebian debian-net-tools:v1
Như vậy bạn đã có một image mới, nó chính là debian có cài thêm net-tools
Bạn có thể xóa đi container cũ và tạo ra container mới sinh ra từ image mới :
#xóa container cũ
docker container rm mydebian
Tạo mới từ image debian-net-tools:v1
docker run --name myde -it debian-net-tools:v1
Khi container mới tạo ra (newcontainer
), chạy nó đã có sẵn net-tools
Lưu Image ra file, Nạp image từ file
Nếu muốn chia copy image ra máy khác ngoài cách đưa lên repository có thể lưu ra file, lệnh sau lưu image có tên myimage
rà file
#lưu ra file, có thể chỉ ra đường dẫn đầy đủ nơi lưu file
docker save --output myimage.tar myimage
File này có thể lưu trữ, copy đến máy khác và nạp vào docker, để nạp vào docker
docker load -i myimage.tar
Đổi tên một Image đang có :
docker tag image_id imagename:version
Chúc các bạn thành công !