我正在学习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 up
或up -d
在后台运行它
您还可以通过docker run命令--mount source=myvol2,target=/app
挂载卷
供引用:https://docs.docker.com/storage/volumes/
如果您在文件名docker-compose.yml
中具有docker compose配置,则无需使用-f
进行指定。 Docker-compose将默认执行它。当yml文件被命名为其他名称时,您将使用-f
。