容器内的装入量是空的

Hed*_*dge 13 docker docker-compose

我有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
Run Code Online (Sandbox Code Playgroud)

server/是相对于文件的docker-compose.yml文件夹.但是,当我docker exec -it CONTAINERID /bin/bash检查/server它是空的.

我究竟做错了什么?

pap*_*gee 21

除了此处的答案外,它可能与Docker Setting中的驱动器共享有关。在Windows上,我发现需要启用驱动器共享。

如果已经启用它,并且您最近更改了PC的密码,则需要禁用驱动器共享(然后单击“应用”),然后重新启用它(然后单击“应用”)。在此过程中,系统将提示您输入PC的新密码。完成此过程后,再次运行您的docker命令(运行或撰写) 在此处输入图片说明


ldg*_*ldg 13

尝试使用:

volumes:
  - ./server:/server
Run Code Online (Sandbox Code Playgroud)

而不是 server/ - 在某些情况下Docker不喜欢尾随斜杠.


atv*_*atv 8

根据docker卷文档,

https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-host-directory-as-a-data-volume

host-dir可以是绝对路径或名称值.如果为host-dir提供绝对路径,则Docker将绑定到您指定的路径.如果提供名称,Docker将按该名称创建命名卷

  • 好的补充,当尝试通过使用相对路径进入容器时这可能会让人感到困惑,比如这个`docker run -v myDir:/ containerdir ...`因为它会默默地创建一个docker卷(如答案所示) )命名myDir并绑定它,但它不会使容器中的myDir的内容可用.在这种情况下使用绝对路径工作,例如`docker run --volume $(pwd)/ myDir:/ containerdir ...` (4认同)

Cso*_*mai 8

当我想从命令行挂载目录时,我遇到了类似的问题:

docker run -tid -p 5080:80  -v /d/my_project:/var/www/html/my_project nimmis/apache-php5
Run Code Online (Sandbox Code Playgroud)

容器已成功启动,但挂载目录为空。

原因是挂载的目录必须在用户的主目录下。因此,我在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
Run Code Online (Sandbox Code Playgroud)