将 docker 输出保存到主机

将 docker 输出保存到主机

将 docker 输出保存到主机

docker run centos cat /etc/hosts > asdf

asdf 保存在我的主机 linux 中

将 docker 输出保存到容器

docker run centos sh -c 'cat /etc/hosts > /tmp/asdf '
docker run centos cat /tmp/asdf
cat: /tmp/asdf: No such file or directory

这不起作用,我该怎么办?

< 在容器中:

docker run centos sh -c 'cat < /etc/hosts'
127.0.0.1       localhost

好的

< 主机文件

docker run centos cat < /etc/hosts

什么都没有发生,我怎样才能在容器中捕获主机文件?

答案1

docker run centos sh -c 'cat /etc/hosts > /tmp/asdf '
docker run centos cat /tmp/asdf
cat: /tmp/asdf: No such file or directory

这不起作用,我该怎么办?

重定向确实有效,但成功后cat /etc/hosts > /tmp/asdf容器停止。然后您运行第二个单独的容器,该容器无权访问/tmp/asdf第一个容器中创建的文件。

这两个容器唯一的共同点是它们从同一个镜像运行centos,但具有不同的 ID 和不同的命名空间。

您需要运行容器并防止其主进程停止(-d),然后引用其名称在容器内执行命令:

docker run -d -it --name mycentos centos /bin/sh
docker exec mycentos sh -c 'cat /etc/hosts > /tmp/asdf'
docker exec mycentos cat /tmp/asdf

或者,更类似于现实场景的是,您应该将文件保存到数据卷。然后临时容器将访问公共数据。


docker run centos cat < /etc/hosts

什么都没有发生,我怎样才能在容器中捕获主机文件?

(docker run -i centos cat) < /etc/hosts
cat /etc/hosts | docker run -i centos cat

相关内容