将 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