将文件管道化为docker run

use*_*388 33 pipe docker

作为run命令的一部分,我需要将文件或一些数据传输(注入)到docker中,并将其作为启动的一部分写入容器内的文件.有最佳实践方法吗?

我试过这个.

cat data.txt |  docker run -a stdin -a stdout -i -t ubuntu /bin/bash -c 'cat >/data.txt'
Run Code Online (Sandbox Code Playgroud)

但似乎无法让它发挥作用.

jam*_*mie 59

cat setup.json |  docker run -i  ubuntu /bin/bash -c 'cat'
Run Code Online (Sandbox Code Playgroud)

这对我有用.删除-t.不需要-a's.

  • 注意,docker-compose会自动分配TTY.因此,使用docker撰写`cat setup.json | docker-compose exec -T myservice sh -c"echo"`其中`-T`禁用自动TTY分配. (4认同)
  • 由于默认入口点,`cat setup.json | docker run -i ubuntu cat`在很多情况下都会起作用 (3认同)

And*_*sun -10

更好的解决方案是让 docker 容器可以访问(挂载)主机文件夹。例如这样

docker run -v /Users/<path>:/<container path> ... 
Run Code Online (Sandbox Code Playgroud)

这是/Users/<path>您主机上的一个文件夹<container path>容器内的安装路径。

另请参阅管理容器中的数据手册页。

更新另一个从 Docker 容器访问外部文件的示例。