Невозможно отобразить том на docker - PullRequest
0 голосов
/ 07 января 2020

Я изучаю 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; и s sh в нем, я все еще не вижу сопоставленный том "/ 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

1 Ответ

3 голосов
/ 07 января 2020

Вы запускаете docker контейнер с docker run и не docker -compose. Тома монтируются во время выполнения, и вы не предоставляете конфигурацию тома при выполнении docker run. Вы можете запустить docker-compose up или up -d, чтобы запустить его в фоновом режиме

Вы также можете смонтировать том с помощью docker команда запуска --mount source=myvol2,target=/app Для справки: https://docs.docker.com/storage/volumes/

Если у вас есть docker составьте конфигурацию в имени файла docker-compose.yml, вам не нужно указывать ее с помощью -f. Docker -compose выполнит его по умолчанию. Вы будете использовать -f, когда yml-файл будет называться как угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...