linux - 从 docker 容器在主机上创建/触摸文件

标签 linux docker shell docker-compose filesystems

我想将一些配置文件压缩成 tar 并将其保存在主机上的 /root/ 路径中。

目前,我在容器内运行的代码正在容器内创建 tar,然后将其复制到服务器。

有没有一种方法可以让我从容器内部直接在主机上创建 tar。一个带有触摸命令的简单示例也会有所帮助。

最佳答案

是的,您可以mound主机目录,然后运行所需的命令,

下面将创建 tar 文件并退出。从所需的目录运行以下命令。

.
└── config
    └── default.conf

创建 tar

docker run -it --rm --workdir=/app -v $PWD/:/app alpine sh -c "tar -czvf file.tar.gz config"

执行后的树

├── config
│   └── default.conf
└── file.tar.gz

从容器到主机

docker run -it --rm --workdir=/app -v $PWD/:/app alpine sh -c "mkdir myfiles; cd myfiles; touch hello.txt; cd ..; tar -czvf file.tar.gz myfiles"
  • 它创建 myfiles/hello.txt 或者它也可以是现有目录
  • 在主机挂载位置创建 tar

对于容器中现有的目录

docker run -it --rm --workdir=/app -v $PWD/:/app alpine sh -c "cd parent_directory; tar -czvf file.tar.gz myfiles; cp parent_directory/file.tar.gz /app"

将 tar 文件写入主机

 docker run -it --rm  alpine sh -c "cd path_to_tar ; tar -czf - ." >filename.tar.gz

关于linux - 从 docker 容器在主机上创建/触摸文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62947253/

相关文章:

linux - 使用 zsh 时如何自动启 Action 业

linux - Xcode 如何删除默认 SDK,不要使用 SDK,使用自己的 header

linux - 为什么查找内存使用峰值会得到不同的结果?

windows - 桌面快捷方式的位置存储在哪里?

linux - 如何在Linux(Fedora)上调试ELF加载过程?

docker - Docker Compose YAML版本1和版本2有什么区别?

init - 为什么docker不以lxc的身份执行init

带有环境变量的 Jenkins /docker

linux - 如何将命令输出存储在一个变量中而不是一行?

bash - 无法通过 shellscript 激活 virtualenv