我正在尝试使用一些 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)
当我去检查
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
portainer
容器开始正常。
非常感谢, 米格尔
确保两侧(主机内部和容器内部)都存在文件。
如果其中之一不存在则docker创建一个目录而不是文件
- '/home/miguel/docker/transmission-rss/transmission-rss.conf/:/etc/transmission-rss.conf/'
请删除尾部斜杠(有 2 个!)并确保
transmission-rss.conf
是 file,而不是主机源上的 dir。
更全面一点:
sudo
与 docker-compose 一起使用:https://docs.docker.com/install/linux/linux-postinstall(这不是问题的原因,但它是烦人的是必须在每个命令前面加上 sudo,基本上只需将您的用户添加到 docker 组)。docker-compose.yml
,删除 transmission-rss.conf
的源和目标中的尾部斜杠。docker volume ls
+ docker volume rm volume_name
)。docker-compose
命令的机器)上,确保 文件存在,并且不是目录docker-compose down
docker-compose build
docker-compose up
在撰写本文时(Docker v4.34.3)如果运行 Docker 的主机上不存在该文件,则会创建一个目录。
运行之前必须确保该文件存在于本地
docker compose up
。或者编写一个脚本以确保该文件存在,然后启动您的环境:
echo "" >> /home/miguel/docker/transmission-rss/transmission-rss.conf
docker compose up
注意:这应该适用于 Linux/Mac/Windows Powershell。
您还应该修改 compose.yml 文件以删除尾部斜杠。
# version: '3' this is no longer needed today.
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