2016-11-18 21 views
8

Tôi có một vùng chứa docker đang chạy. Tôi đã thực hiện một số thay đổi cấu hình, giả sử đã thêm một số thông tin máy chủ lưu trữ trong/etc/hosts bên trong vùng chứa. Làm cách nào để giữ các thay đổi được lưu, vì vậy lần sau khi tôi mở một trình bao tương tác vào vùng chứa, tôi không phải thực hiện lại các tác vụ tương tự? Bây giờ tôi đã tạo ra một kịch bản nhỏ như addhosts.sh như bên dưới thùng chứa và phải chạy nó mỗi lần.Kịch bản khởi động cho một hộp chứa docker

echo "1.2.3.4 server1.example.com gluster1" >> /etc/hosts 
echo "5.6.7.8 server2.example.com gluster2" >> /etc/hosts 

Đây là một trong các trường hợp. Tương tự như vậy, tôi cần tất cả các cấu hình của tôi là nguyên vẹn. Xin vui lòng không đề nghị cho dockerfile như tôi không tạo ra một hình ảnh thay vì tôi chỉ nhận được vào container.

Trả lời

8

Bạn có thể cam kết những thay đổi bạn đã thực hiện bằng cách:

ngắn chỉ huy tham khảo:

docker commit <container id or name> <repository name>/<your image name>:<tage aka version> 

Ví dụ:

docker commit c3f279d17e0a svendowideit/testimage:version3 

Full tham khảo:

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 

Create a new image from a container's changes 

Options: 
    -a, --author string Author (e.g., "John Hannibal Smith <[email protected]>") 
    -c, --change value  Apply Dockerfile instruction to the created image (default []) 
     --help    Print usage 
    -m, --message string Commit message 
    -p, --pause   Pause container during commit (default true) 

Sau đó, bạn có thể sử dụng docker images để xem Hình ảnh mới của mình sau khi cam kết.

Để chạy một container từ hình ảnh mới của bạn:

docker run -d svendowideit/testimage:version3 <optional startup command>

Một cách khác sẽ được tạo hình ảnh của riêng bạn qua: dockerfile, tôi Chỉ cần đặt nó ở đây chỉ trong trường hợp chúng ta có thể giúp đỡ người khác.

+0

Cảm ơn trả lời nhắc nhở của bạn. Nó cũng có thể áp dụng cho các thùng chứa đã thoát không? Coz container của tôi đã thoát. Tôi đã docker cam kết cho container và sau đó thoát, bắt đầu và đính kèm nó. Nhưng tôi không thấy cấu hình của tôi còn nguyên vẹn. –

+0

Làm cách nào để bạn bắt đầu vùng chứa của mình? Bạn nên bao gồm phiên bản đã tạo.Đối với ví dụ 'docker run svendowideit/testimage: version3' –

+1

Bằng cách chạy bên dưới: ' docker start 44372579f2ea' 'docker attach 44372579f2ea' –

2

Sử dụng docker commit để chụp nhanh vùng chứa của bạn.

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 

Create a new image from a container's changes 

Options: 
    -a, --author string Author (e.g., "John Hannibal Smith <[email protected]>") 
    -c, --change value  Apply Dockerfile instruction to the created image (default []) 
     --help    Print usage 
    -m, --message string Commit message 
    -p, --pause   Pause container during commit (default true) 

Example: docker commit c3f279d17e0a svendowideit/testimage:version3

Có nhìn vào https://docs.docker.com/engine/reference/commandline/commit/

Để chạy một bản chụp của một container Docker thêm phiên bản chạy lệnh. Như ví dụ như chạy

docker run svendowideit/testimage:version3

4

Giả sử bạn không muốn lưu các thay đổi thành một hình ảnh mới:

docker exec -it container_id echo "1.2.3.4 server1.example.com gluster1" >> /etc/hosts 
docker exec -it container_id echo "5.6.7.8 server2.example.com gluster2" >> /etc/hosts 

Điều đó sẽ kết nối với container, chạy lệnh và thoát ra mà không giết chết các container.

Chú ý sự khác biệt giữa những điều sau đây:

docker exec -it container_id ... = does not kill the container. 
docker run -it container_id ...= kills the container 
Các vấn đề liên quan