Я хочу проанализировать данные с помощью QIIME2 в контейнере Docker. Обратите внимание, что я впервые в Docker.
Я создал изображение, а затем контейнер и начал успешно анализировать небольшую часть данных.
Однако один шаг конвейера систематически завершается сбоем со следующим сообщением об ошибке с жалобой на оставшееся свободное место:
Plugin error from feature-classifier:
[Errno 28] No space left on device
Debug info has been saved to /tmp_mount/qiime2-q2cli-err-8hbv6l2e.log
Файл журнала не говорит мне больше ничего:
Traceback (most recent call last):
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/q2cli/commands.py", line 274, in __call__
results = action(**arguments)
File "<decorator-gen-326>", line 2, in classify_sklearn
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/qiime2/sdk/action.py", line 231, in bound_callable
output_types, provenance)
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/qiime2/sdk/action.py", line 362, in _callable_executor_
output_views = self._callable(**view_args)
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/q2_feature_classifier/classifier.py", line 215, in classify_sklearn
confidence=confidence)
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/q2_feature_classifier/_skl.py", line 45, in predict
for chunk in _chunks(reads, chunk_size)) for m in c)
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 789, in __call__
self.retrieve()
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/parallel.py", line 699, in retrieve
self._output.extend(job.get(timeout=self.timeout))
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/multiprocessing/pool.py", line 644, in get
raise self._value
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/multiprocessing/pool.py", line 424, in _handle_tasks
put(task)
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/pool.py", line 371, in send
CustomizablePickler(buffer, self._reducers).dump(obj)
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/pool.py", line 240, in __call__
for dumped_filename in dump(a, filename):
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 484, in dump
NumpyPickler(f, protocol=protocol).dump(value)
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/pickle.py", line 408, in dump
self.save(obj)
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 278, in save
wrapper.write_array(obj, self)
File "/opt/conda/envs/qiime2-2018.8/lib/python3.5/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 93, in write_array
pickler.file_handle.write(chunk.tostring('C'))
OSError: [Errno 28] No space left on device
Но места осталось много ...
Мое изображение не большое (6G), иноды тоже в порядке. Входной файл, который я хочу проанализировать, небольшой, это всего лишь тест.
Я нашел некоторые другие темы с той же проблемой, но все, что я мог попробовать, провалилось.
Я пытался:
- удалить все вышедшие контейнеры и свисающие изображения
- Обновление Docker
- установить переменную окружения TMPDIR в / custom_tmp / Я создал себя внутри контейнера. Я попробовал несколько способов: в среде QIIME2, в контейнере, но не в среде QIIME2, добавив ENV TMPDIR = "/ cutom_tmp" / в Dockerfile, а затем восстановив образ.
- установить переменную окружения TMPDIR в / tmp_mount /, созданную на хост-сервере, а затем смонтировать контейнер с томом
Та же проблема возникает в каждом случае. Я предполагаю, что, возможно, Docker хочет записать в свой собственный каталог tmp, может быть, один из тех «tmpfs» с оставшимися только 64M (см. Результаты команды ниже), и, возможно, я не могу решить эту проблему с помощью переменной TMPDIR, но я застрял есть ... * * 1023
Большое спасибо за ваше внимание и предложения.
ОС: Ubuntu 14.04.
df -h
Filesystem Size Used Avail Use% Mounted on
none 197G 57G 131G 31% /
tmpfs 64M 0 64M 0% /dev
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda1 939G 772G 120G 87% /tmp_mount
/dev/dm-0 197G 57G 131G 31% /data
shm 64M 0 64M 0% /dev/shm
tmpfs 32G 0 32G 0% /proc/acpi
tmpfs 32G 0 32G 0% /proc/scsi
tmpfs 32G 0 32G 0% /sys/firmware
версия докера
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:58 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:24 2018
OS/Arch: linux/amd64
Experimental: false
окр
CONDA_SHLVL=1
LC_ALL=C.UTF-8
CONDA_EXE=/opt/conda/bin/conda
XDG_CONFIG_HOME=/home/qiime2
LANG=C.UTF-8
CONDA_PREFIX=/opt/conda/envs/qiime2-2018.8
R_LIBS_USER=/opt/conda/envs/qiime2-2018.8/lib/R/library/
TINI_VERSION=v0.16.1
PYTHONNOUSERSITE=/opt/conda/envs/qiime2-2018.8/lib/python*/site-packages/
PWD=/
HOME=/home/qiime2
CONDA_PYTHON_EXE=/opt/conda/bin/python
DEBIAN_FRONTEND=noninteractive
TMPDIR=/tmp_mount/
CONDA_PROMPT_MODIFIER=(qiime2-2018.8)
TERM=xterm
MPLBACKEND=Agg
SHLVL=1
PATH=/opt/conda/envs/qiime2-2018.8/bin:~/miniconda3/bin:/opt/conda/envs/qiime2-2018.8/bin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CONDA_DEFAULT_ENV=qiime2-2018.8
_=/usr/bin/env
OLDPWD=/data