我有docker-compose.yml
这样的人:
db:
image: mongo:latest
ports:
- "27017:27017"
server:
image: artificial/docker-sails:stable-pm2
command: sails lift
volumes:
- server/:/server
ports:
- "1337:1337"
links:
- db
server/
相对于docker-compose.yml
文件的文件夹。但是,当我docker exec -it CONTAINERID /bin/bash
并检查/server
时,它是空的。
我做错了什么?
答案 0 :(得分:13)
尝试使用:
volumes:
- ./server:/server
而不是 server/
- 在某些情况下,Docker不喜欢尾部斜杠。
答案 1 :(得分:6)
根据docker volume文档,
https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-host-directory-as-a-data-volume
host-dir可以是绝对路径或名称值。如果你 提供host-dir的绝对路径,Docker绑定挂载到 您指定的路径。如果提供名称,Docker将创建一个命名卷 以那个名字
答案 2 :(得分:6)
除了这里的答案,它可能与Docker Setting中的驱动器共享有关。在Windows上,我发现需要启用驱动器共享。
如果已启用并且您最近更改了PC的密码,则需要禁用驱动器共享(并单击“应用”),然后再次启用它(然后单击“应用”) 。在此过程中,系统将提示您输入PC的新密码。完成此过程后,再次运行您的docker命令(运行或撰写)
答案 3 :(得分:0)
当我想从命令行挂载目录时,我遇到了类似的问题:
docker run -tid -p 5080:80 -v /d/my_project:/var/www/html/my_project nimmis/apache-php5
容器已成功启动,但装入的目录为空。
原因是挂载的目录必须位于用户的主目录下。因此,我在c:\Users\<username>
下创建了一个符号链接,该符号链接安装到我的项目文件夹d:\my_project
中并安装了该链接:
docker run -tid -p 5080:80 -v /c/Users/<username>/my_project/:/var/www/html/my_project nimmis/apache-php5
答案 4 :(得分:0)
我不知道其他人是否犯了同样的错误,但主机目录路径必须从 /home 开始
所以我的 msitake 是在我的 docker-compose 中我错误地指定了以下内容:
services:
myservice:
build: .
ports:
- 8888:8888
volumes:
- /Desktop/subfolder/subfolder2:/app/subfolder
当主机路径应该是 /home 的完整路径时。就像是:
services:
myservice:
build: .
ports:
- 8888:8888
volumes:
- home/myuser/Desktop/subfolder/subfolder2:/app/subfolder