[英]Unable to mount host directory to docker container
我有一个 python 应用程序,它每天运行以下载图像并保存到指定的文件夹中,每天创建这样的文件夹/home/ubuntu/images/yyyymmdd
。
我已经在 ubuntu 20 上构建了我的 python 应用程序的 docker 容器。当我尝试通过挂载主机目录运行应用程序时,日志消息看不到 /home/ubuntu/创建的任何文件夹/home/ubuntu/images/20220123
我检查了 docker 文件夹/var/lib/docker
docker 并发现随机 hash是在文件夹containers
和overlay2
中创建的。 因此,我尝试使用以下两个目录进行挂载,但没有运气。
sudo docker run -t -i -v /home/ubuntu/images:/var/lib/docker/containers --network=host testapp/img-downloader:0.0.1
sudo docker run -t -i -v /home/ubuntu/images:/var/lib/docker/overlay2 --network=host testapp/img-downloader:0.0.1
我可以看到在图像文件夹中创建的日期文件夹和图像文件是这样保存的
/var/lib/docker/overlay2/d52bcf61cae2e563c3c8561bab53b4bb2dd2ea2d633a14d40c96d7992fffae28/diff/home/ubuntu/images/20220123
我在这里缺少什么,因此它不会将图像保存到/home/ubuntu/images/20220123
等主机目录而不是 docker 容器内。
我的 Dockerfile 如下 -
FROM alpine:3.14
ENV PYTHONUNBUFFERED=1
RUN apk add --update --no-cache python3-dev mariadb-dev gcc musl-dev g++ && ln -sf python3 /usr/bin/python
RUN python3 -m ensurepip
RUN pip3 install --no-cache --upgrade pip setuptools
COPY ./requirements.txt /requirements.txt
WORKDIR /
RUN pip3 install -r requirements.txt
COPY ./ /
ENTRYPOINT [ "python3" ]
CMD [ "./main.py" ]
请在这里帮忙。 谢谢
...What i am missing here so that its not saving images to host directory like /home/ubuntu/images/20220123 instead of inside docker container.
假设您的意思是要将图像保存到主机上的目录而不是容器内。 无需挂载/var/lib/docker/...
。 您需要确保您的程序将文件保存到绑定安装到主机的路径。 例子:
mkdir images
# 在主机上创建一个目录来保存图像
docker run -it --rm -v ~/images:/images alpine ash -c "mkdir /images/yesterday; mkdir /images/today; echo 'hello' > /images/today/msg.txt; echo 'done.'"
容器退出后,在主机上执行ls -ld images/*
会显示创建的 2 个目录; cat images/today/msg.txt
将打印您通过容器保存的内容(模拟您是否通过容器下载图像)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.