Tại sao docker báo cáo việc sử dụng đĩa 100% trên một hình ảnh Ubuntu mới?


15

Tôi không còn có thể sử dụng docker hoặc chạy hình ảnh mới một cách hiệu quả - đó là báo cáo rằng tôi có mức sử dụng đĩa 100%. Ở đây, bạn có thể thấy tôi đang khởi chạy một bản sao nguyên sơ của Ubuntu, và nó đang nói với tôi rằng tôi không còn dung lượng đĩa:

$ docker run -t -i ubuntu /bin/bash
root@3838b70bd76e:/# df -h 
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G   18G     0 100% /
none             19G   18G     0 100% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G   18G     0 100% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Một cách riêng biệt, tôi đang cố gắng để bắt đầu một cá thể mysql và nó đang đưa ra các thông báo lỗi mà tôi tin là có liên quan đến thực tế là tôi không có đĩa có sẵn. Khi tôi cố gắng chạy Orchardup ​​/ mysql, tôi nhận được:

ERROR: 1030  Got error 28 from storage engine

Có nghĩa là nó đã hết dung lượng lưu trữ.

Với điều này, tôi nên diễn giải báo cáo df -h ở trên như thế nào và làm cách nào để xác định những gì đang tiêu thụ 100% đĩa của tôi? Tôi đang chạy docker 1.3, chạy trên OSX 10.9.4, sử dụng boot2docker.

Cảm ơn.


Chỉnh sửa: Như một cách giải quyết, tôi đã chạy boot2docker delete, và sau đó boot2docker init, và dường như nó đã dọn sạch tất cả các hình ảnh của tôi (may mắn thay tôi có thể xây dựng lại chúng bằng dockerfiles của mình ). Bây giờ, khi tôi bắt đầu một hình ảnh Ubuntu mới:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  373M   17G   3% /
none             19G  373M   17G   3% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  373M   17G   3% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Tốt hơn rất nhiều. Nhưng, tôi vẫn còn bối rối, phải có một số loại đĩa chung được chia sẻ trên tất cả các hình ảnh được lưu trữ bởi boot2docker mà trước đó đã được lấp đầy?


Chỉnh sửa 2: Tôi vừa tải xuống một loạt các hình ảnh, và bây giờ đây là những gì tôi thấy khi tôi chạy hình ảnh Ubuntu và kiểm tra dung lượng đĩa trống:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  2.7G   15G  16% /
none             19G  2.7G   15G  16% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  2.7G   15G  16% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Từ 3% đến 16% tiêu thụ! Rõ ràng có một số loại đĩa được chia sẻ giữa tất cả các hình ảnh của tôi mà tôi không hiểu ...


Bạn đang sử dụng các container Docker như thế nào và người dùng / nhóm phân tán như thế nào (nhiều hơn với các lỗi mysql) Ngoài ra, đối với docker họ có chia sẻ bất cứ điều gì trên máy chủ hay chúng hoàn toàn khép kín?
linuxdev2013

Câu trả lời:


1

Trên các máy chủ windows, boot2docker hoạt động bằng cách tạo một máy ảo bằng hộp ảo. Khi bạn chạy init2docker init, nó sẽ tạo một máy ảo và theo mặc định, gán 20G cho đĩa gốc. máy ảo này chạy HĐH Linux tối thiểu, lần lượt chạy trình nền docker thực tế (trình nền của docker không chạy tự nhiên trên windows - chưa).

đĩa được gắn vào máy ảo cung cấp lưu trữ cho hình ảnh docker. vì vậy bạn có thể xem các tùy chọn bổ sung cho lệnh init2docker để tăng kích thước đĩa ban đầu. điều này sẽ tăng kích thước đĩa có sẵn để sử dụng trong máy ảo, nhưng như Queasy đã chỉ ra, bạn cần thêm các tùy chọn bổ sung vào trình nền docker để tăng dung lượng lưu trữ có sẵn cho hình ảnh.

khi bạn chạy "df -h" trong vùng chứa, tổng kích thước đĩa được báo cáo là không gian đĩa được phân bổ cho docker daemon bằng tùy chọn "dm.baseize".

lưu ý: boot2docker hiện không được hỗ trợ cho Docker Toolbox. bạn có thể muốn nâng cấp lên phiên bản đó, trong trường hợp đó bạn sẽ sử dụng "docker-machine created" thay vì "boot2docker init". tôi đã chuyển sang docker-toolbox để không thể kiểm tra các tùy chọn lệnh cần thiết cho init2docker init


0

Sửa đổi cấu hình docker trong / etc / sysconfig / docker-Storage và thêm dòng:

DOCKER_STORAGE_OPTIONS= --storage-opt dm.basesize=30G

Hãy nhớ sao lưu docker của bạn trước khi tiếp tục nhiệm vụ này bởi vì nó sẽ xóa dữ liệu của bạn sau khi khởi tạo.


--storage-optkhông được hỗ trợ trên OSX
Quanlong

0

Xem xét rằng các ổ đĩa có thể là xấu. Hitachi (Drive Fitness Test), Seagate (Seatools) và Western Digital (Western Digital Data Lifguard) đều cung cấp phần mềm chẩn đoán miễn phí để giúp bạn xác định điều này.

Như một ví dụ về cách một ổ đĩa xấu có thể vặn với dung lượng ổ đĩa, tôi đã sao lưu các ổ đĩa 1TB báo cáo với Windows rằng chúng vẫn còn dữ liệu PETABYTES để truyền.

Trong trường hợp ổ đĩa của bạn ổn, hãy sử dụng du (Sử dụng đĩa) để xem thư mục nào là thư mục lớn. du -h /usr/bin, du -h /varHoặc du -h /home/[username]/Downloadsđể giúp pinpoint nó.

Chỉnh sửa: Tôi thấy bạn đang sử dụng OS X: Bạn sẽ cần sử dụng các công cụ HDD được đề cập ở trên làm tùy chọn khởi động của chúng hoặc trong một cái gì đó như Windows PE miễn phí, sau đó bạn có thể khởi động và chạy các công cụ này.


0

Devicemapper là công cụ lưu trữ mặc định của docker. Nó cố gắng phân bổ 100Gb theo mặc định trong / var / lib / docker. Không phải tất cả không gian này thực sự được sử dụng và bạn có thể định cấu hình nó trong các tùy chọn. Docker tài liệu

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.