Docker 致命:无法写入锁定文件“postmaster.pid”:设备上没有剩余空间

Posted

技术标签:

【中文标题】Docker 致命:无法写入锁定文件“postmaster.pid”:设备上没有剩余空间【英文标题】:Docker FATAL: could not write lock file "postmaster.pid": No space left on device 【发布时间】:2017-09-07 08:42:56 【问题描述】:

postgres:9.5

我尝试重新启动,

docker-compose build --no-cache

删除镜像和容器并重新构建

我有很多项目,任何人都开始,保持相同的配置...... Mac osx 塞拉利昂


显然容器没有被很好地删除,我尝试了这个,重建后工作正常。

# Delete all containers
docker rm $(docker ps -a -q)
# Delete all images
docker rmi $(docker images -q)

docker-compose.yml

version: '2'
services:
  web:
    build: .
    image: imagename
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "3000:3000"
      - "8000:8000"
    volumes:
      - .:/code
    depends_on:
      - migration
      - redis
      - db
  redis:
    image: redis:3.2.3
  db:
    image: postgres:9.5
    volumes:
      - .:/tmp/data/
  npm:
    image: imagename
    command: npm install
    volumes:
      - .:/code
  migration:
    image: imagename
    command: python manage.py migrate --noinput
    volumes:
      - .:/code
    depends_on:
      - db

Dockerfile:

FROM python:3.5.2
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

RUN mkdir /code
WORKDIR /code

RUN easy_install -U pip

ADD requirements.txt /code/requirements.txt
RUN pip install -r requirements.txt`

【问题讨论】:

听起来卷处于只读模式。您可以添加 docker-compose.yml 内容和设置此环境的任何其他脚本吗? 当然,现在就在这里 安装/tmp/data 的驱动器上肯定有空间吗? (并且运行 Docker 守护进程的用户是否具有写入权限?) 您从哪个目录运行docker-compose 命令,您在/user、/User(情况很重要)、/projects 等中吗? 为什么需要设置 /tmp/data/ 卷?通过分析Dockerfile for Postgres:9.5 link,您会看到它定义了一个托管卷/var/lib/postgresql/data。注意:卷 .:/tmp/data/ 意味着您声明了一个绑定挂载卷 - 将主机上的位置映射到容器上的位置,而不是托管卷。这可能还需要设置 USER 映射。 【参考方案1】:

如果您没有任何关键数据,您可以删除 docker 卷。

docker volume ls

docker volume rm your_volume

【讨论】:

【参考方案2】:

如果您从 Google 来到这里并发现多个容器都在抱怨磁盘空间问题,则问题可能是您的本地 Docker 安装已达到其磁盘映像大小的最大值。这可以在 Docker for Mac 中进行配置。 Here are the instructions to change that disk image size。

【讨论】:

这真的很有帮助。我用完 88GB 并允许 120GB,但仍然出现此错误。删除一些未使用的卷和映像,增加允许的空间后,它恢复正常。【参考方案3】:

您可以通过docker volume prune 删除所有未使用的本地卷。

【讨论】:

【参考方案4】:

我的情况,转到 docker Dashboard -> 设置并创建 Disk Image size 然后重新启动

【讨论】:

以上是关于Docker 致命:无法写入锁定文件“postmaster.pid”:设备上没有剩余空间的主要内容,如果未能解决你的问题,请参考以下文章

visual C++ 6.0 问题:链接:致命错误LNK1104:无法打开文件“调试/ d.exe“ 执行link.exe时出错。

GIT 致命:无法写入 new_index 文件

Git 和讨厌的“错误:无法锁定现有信息/引用致命”

致命错误 LNK1168:无法打开 filename.mexw64 进行写入

冻结 Ruby on Rails 时无法写入锁定文件

如何在写入期间锁定文件以使其在打开时无法读取?