我正在学习docker,试图在我的项目中进行设置。

我无法将本地目录映射到Docker的容器。
如何在Docker容器上获取​​本地目录作为卷?

参见下面的Dockerfile:

FROM centos:7

RUN pwd
RUN ls

就是这样。
我的docker-compose.yml包含:
version: '3'
services:
    first_demo:
        container_name: first_container
        image: first_image
        build:
            context: .
            dockerfile: Dockerfile
        volumes:
          - ./files:/data/files
        restart: always

我的目录包含2个文件和1个文件夹
docker-compose.yml (f)  Dockerfile (f)  files (d)

当我运行docker-compose -f ./docker-compose.yml build时,我得到以下输出:
Step 1/3 : FROM centos:7
 ---> 67fa590cfc1c
Step 2/3 : RUN pwd
 ---> Running in 0a89ef62ce9f
/
Removing intermediate container 0a89ef62ce9f
 ---> 48acbead537d
Step 3/3 : RUN ls
 ---> Running in c18f7f08b067
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
Removing intermediate container c18f7f08b067

然后,当我使用docker run -d first_image tail -f /dev/null;运行容器并ssh进入容器时,我仍然看不到映射的卷“/ data / files”
drwxr-xr-x   2 root root  4096 Apr 11  2018 srv
drwxr-xr-x   2 root root  4096 Apr 11  2018 opt
drwxr-xr-x   2 root root  4096 Apr 11  2018 mnt
drwxr-xr-x   2 root root  4096 Apr 11  2018 media
drwxr-xr-x   2 root root  4096 Apr 11  2018 home
drwxr-xr-x  13 root root  4096 Aug  1 01:09 usr
lrwxrwxrwx   1 root root     8 Aug  1 01:09 sbin -> usr/sbin
lrwxrwxrwx   1 root root     9 Aug  1 01:09 lib64 -> usr/lib64
lrwxrwxrwx   1 root root     7 Aug  1 01:09 lib -> usr/lib
lrwxrwxrwx   1 root root     7 Aug  1 01:09 bin -> usr/bin
drwxr-xr-x  18 root root  4096 Aug  1 01:09 var
drwxrwxrwt   7 root root  4096 Aug  1 01:10 tmp
drwxr-xr-x  11 root root  4096 Aug  1 01:10 run
dr-xr-x---   2 root root  4096 Aug  1 01:10 root
-rw-r--r--   1 root root 12090 Aug  1 01:10 anaconda-post.log
dr-xr-xr-x  13 root root     0 Jan  7 13:03 sys
drwxr-xr-x   1 root root  4096 Jan  7 13:39 etc
dr-xr-xr-x 467 root root     0 Jan  7 13:39 proc
drwxr-xr-x   5 root root   340 Jan  7 13:39 dev

最佳答案

您正在使用docker run而不是docker-compose启动Docker容器。卷在运行时挂载,并且在执行docker run时未提供卷配置。
您可以运行docker-compose upup -d在后台运行它

您还可以通过docker run命令--mount source=myvol2,target=/app挂载卷
供引用:https://docs.docker.com/storage/volumes/

如果您在文件名docker-compose.yml中具有docker compose配置,则无需使用-f进行指定。 Docker-compose将默认执行它。当yml文件被命名为其他名称时,您将使用-f

07-24 09:49
查看更多