我正在尝试使用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
目录中看不到任何文件?
答案 0 :(得分:0)
按以下所示更改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
容器卷/数据目录中。使用此功能,您可以在多个容器之间共享相同的数据。
但是,如果要在主机上某个特定文件夹内查看数据,则必须使用主机绑定/挂载卷,如我在上面的撰写文件中所建议的那样。