docker-compose 创建目录而不是文件

MAn*_*nes 12 docker docker-compose ubuntu-18.04

我正在尝试使用一些 docker 容器和 docker-compose 设置我的家庭服务器(Ubuntu 18.04 LTS)。在尝试设置“transmission-rss”时,出现以下错误:

/usr/local/lib/ruby/2.6.0/psych.rb:577:in `initialize': Is a directory @ io_fillbuf - fd:5 /etc/transmission-rss.conf (Errno::EISDIR)
Run Code Online (Sandbox Code Playgroud)

当我检查transmission-rss.conf文件是否已创建时,在其位置创建了一个同名的目录。

我必须docker-compose up使用运行命令sudo,所以我不知道这是否与权限有关。

这是我当前的 docker-compose.yml 文件:

version: '3'
services:
  portainer:
    container_name: portainer
    image: portainer/portainer
    volumes:
      - '/home/miguel/docker/portainer/data/:/data'
      - '/home/miguel/docker/portainer/socket/:/var/run/docker.sock'
    ports:
      - "9000:9000"
    restart: always
  transmission-rss:
    container_name: transmission-rss
    image: nning2/transmission-rss:latest
    volumes:
      - '/home/miguel/docker/transmission-rss/transmission-rss.conf/:/etc/transmission-rss.conf/'
    restart: unless-stopped
Run Code Online (Sandbox Code Playgroud)

容器portainer启动正常。

非常感谢你,米格尔

Ehs*_*har 10

确保文件存在于两侧(主机内部和容器内部)。

如果其中之一不存在,则 docker创建一个目录而不是文件


mik*_*key 5

- '/home/miguel/docker/transmission-rss/transmission-rss.conf/:/etc/transmission-rss.conf/'

请删除尾部斜杠(有 2 个!)并确保transmission-rss.conf是一个文件,而不是目录主机源上的

稍微全面一点:

  1. 按照此操作以避免必须使用sudodocker-compose:https://docs.docker.com/install/linux/linux-postinstall这不是问题的原因,但必须在每个命令前面加上sudo,基本上只需要将您的用户添加到 docker 组)。
  2. 更新docker-compose.yml,从源和目标中删除尾部斜杠transmission-rss.conf
  3. 如果需要,请在备份数据后删除现有卷 ( docker volume ls+ )。docker volume rm volume_name
  4. 在您的主机(您运行docker-compose命令的机器)上,确保该文件存在,并且不是目录
  5. docker-compose down
  6. docker-compose build
  7. docker-compose up

  • 只是补充一下;特别是“确保文件存在”部分,请仔细检查本地(主机)路径是否正确。有时,即使是我们中最优秀的人,也可能会漏掉拼写错误、多余的子文件夹等。 (2认同)