Thay đổi thư mục dữ liệu của Docker


8

Làm cách nào tôi có thể thay đổi thư mục dữ liệu của Docker nơi docker lưu container (hoặc nơi lxc lưu container)? Tôi có trong máy chủ của mình một ssd và một ổ đĩa cứng Tôi muốn rằng container sẽ được lưu trên ổ cứng. Cảm ơn

Câu trả lời:


11

Tôi tin rằng trong hướng dẫn này, bạn sẽ có một lời giải thích tốt.

Bạn có thể thay đổi thư mục cơ sở lưu trữ của Docker (nơi chứa container và hình ảnh) bằng cách sử dụng tùy chọn -g khi khởi động trình nền Docker.

Ubuntu / Debian: chỉnh sửa /etc/default/dockertệp của bạn với -gtùy chọn:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

Fedora / Centos: chỉnh sửa /etc/sysconfig/dockervà thêm -gtùy chọn trong biến other_args: ex. other_args="-g /var/lib/testdir". Nếu có nhiều hơn một tùy chọn, hãy đảm bảo bạn gửi chúng vào "". Sau khi khởi động lại, (docker dịch vụ khởi động lại) Docker nên sử dụng thư mục mới.

Sử dụng symlink là một phương pháp khác để thay đổi lưu trữ hình ảnh.

Thận trọng - Các bước này phụ thuộc vào / var / lib / docker hiện tại của bạn là một thư mục thực tế (không phải là một liên kết tượng trưng đến một vị trí khác).

1) Dừng docker : service docker stop. Xác minh không có quá trình docker đang chạy ps giả

2) Docker kiểm tra kép thực sự không chạy. Hãy xem thư mục docker hiện tại: ls/var/lib/docker/

2b) Tạo bản sao lưu - tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

3) Di chuyển /var/lib/dockerthư mục đến phân vùng mới của bạn:mv /var/lib/docker /mnt/pd0/docker

4) Tạo liên kết tượng trưng: ln -s /mnt/pd0/docker /var/lib/docker

5) Hãy xem qua cấu trúc thư mục để chắc chắn rằng nó trông giống như trước mv: ls /var/lib/docker/(lưu ý dấu gạch chéo vào

6) Bắt đầu sao lưu docker service docker start

7) khởi động lại container của bạn để giải quyết liên kết tượng trưng)


lý do cho 4) là gì? Có cần thiết không? Trong trường hợp của tôi, tôi muốn có các tệp docker nằm trên RAID được gắn chứ không phải trên phân vùng khởi động.
Roman Mik

9

Trong các phiên bản Docker gần đây hơn trên Ubuntu, bạn sẽ chỉnh sửa /etc/default/daemon.json như vậy:

{
    "data-root": "/new/location"
}

2

Để thay đổi datathư mục trong dockernó cần phải được chạy với tùy chọn -g /my/data. Trong tôi /etc/default/dockerđặt:

DOCKER_OPTS="-g /srv/docker"

Xem thêm ghi chú của tôi ở đây .

Để thay đổi datathư mục trong lxctôi đặt vào /etc/lxc/lxc.conf:

lxc.lxcpath = /srv/lxc


1

Nâng cấp lên Docker 1.13.0.

Từ ghi chú phát hành:

- New
The storage location of the Linux volume can now be moved

1

Để mở rộng câu trả lời của @ MattK:

Các tài liệu Docker vào việc kiểm soát các daemon Docker cho thấy rằng nền tảng độc lập cách để làm điều này là:

chỉnh sửa tệp /etc/docker/daemon.json để chứa dòng

{
    "data-root": "/mnt/docker-data",
    (...)
}

nơi /mnt/docker-datathư mục mà bạn muốn các hình ảnh docker và container sống.

Sau đó

sudo systemctl restart docker

Bạn có thể kiểm tra xem nó có hoạt động không bằng cách chạy

docker info

và tìm nội dung của dòng bắt đầu bằng Docker Root Dir:.

Xem thêm https://stackoverflow.com/a/50217666/2209313https://unix.stackexchange.com/q/452368/36043 .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.