我正在尝试使用Docker构建一个带有debmirror的本地Ubuntu存储库。我希望将下载的文件存储在主机上名为./repo的目录中
容器能够将文件下载到容器中,我可以用docker exec <container_id>...确认这一点,但是这些文件不会反映在主机上的./repo目录中。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2338e107050e 21b98483ec19 "/bin/sh -c '/bin/..." 15 minutes ago Up 15 minutes admiring_kirch
$ docker exec 2338e107050e ls -lF /repo
total 12
-r--r--r-- 1 root root 15 Aug 17 08:13 Archive-Update-in-Progress-f502fa9e2b7d
drwxr-xr-x 5 root root 4096 Aug 17 08:15 dists/
drwxr-xr-x 3 root root 4096 Aug 17 08:23 pool/
$ ls -lF ./repo/
total 0这些是我的docker-compose.yml配置。
$ cat docker-compose.yml
version: '2'
services:
debmirror:
build: ./app
container_name: "debmirror"
volumes:
- repo:/repo
stdin_open: true
tty: true
volumes:
repo:这些是我的Dockerfile配置。
$ cat app/Dockerfile
FROM ubuntu:16.04
ENV http_proxy "http://proxy.example.com:80/"
ENV https_proxy "http://proxy.example.com:80/"
RUN mkdir -p /app/mirrorkeyring \
&& chown -R root:www-data /app \
&& chmod -R 755 /app
RUN mkdir /repo \
&& chown -R root:www-data /repo \
&& chmod -R 571 /repo
VOLUME /repo
RUN apt update && apt install -y debmirror xz-utils
COPY mirrorbuild.sh /app/mirrorbuild.sh
RUN chmod +x /app/mirrorbuild.sh
RUN gpg --no-default-keyring --keyring /app/mirrorkeyring/pubring.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg
RUN gpg --no-default-keyring --keyring /app/mirrorkeyring/trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg
RUN /bin/bash -c /app/mirrorbuild.sh你知道为什么我在主机上的./repo目录中看不到任何文件吗?
发布于 2018-08-17 17:06:28
更改您的docker组合,如下所示,使其在主机的./repo上可用-
version: '2'
services:
debmirror:
build: ./app
container_name: "debmirror"
volumes:
- ${PWD}/repo:/repo
stdin_open: true
tty: true基本上,当您在组成文件中定义一个卷时,它会创建一个命名卷,您可以通过执行docker volume ls命令看到,卷数据保留在主机/var/lib/docker容器卷/数据目录中。使用它,您可以在多个容器之间共享相同的数据。
但是,如果您想查看主机上某个特定文件夹中的数据,您必须使用主机绑定/挂载卷,就像我上面在撰写文件中建议的那样。
https://stackoverflow.com/questions/51891769
复制相似问题