首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过管道将内容传送到docker图像

通过管道将内容传送到docker图像
EN

Stack Overflow用户
提问于 2017-02-14 16:46:11
回答 2查看 514关注 0票数 2

我可以启动服务器并使用客户端,如下所示...

启动服务器实例

代码语言:javascript
复制
docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server

从本地客户端连接到它

代码语言:javascript
复制
docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server

如果我不使用docker,导入csv数据就像这样简单…

cat qv_stock_20160620035119.csv | clickhouse-client --query="INSERT INTO stock FORMAT CSV";

如何通过管道将cat内容传送到docker image?

EN

回答 2

Stack Overflow用户

发布于 2017-02-14 17:28:50

您可以向容器中运行的程序发送数据,就像向主机上运行的程序发送数据一样:

代码语言:javascript
复制
echo "hello" | docker run -i --rm ubuntu cat

(输出hello和exists)

在您的情况下,这应该是可行的:

代码语言:javascript
复制
cat host-local_file.csv | docker run -i --rm \
  --link some-clickhouse-server:clickhouse-server \
  yandex/clickhouse-client \
  clickhouse-client --host clickhouse-server \
    --query="INSERT INTO stock FORMAT CSV"
票数 2
EN

Stack Overflow用户

发布于 2017-02-14 17:19:56

这里有一种方法,虽然有点笨拙...

代码语言:javascript
复制
docker exec <container-name> bash -c "echo \"$(cat <local-file>)\" | <app-in-container>"

这里假设您的容器镜像中有/bin/bash

所以在你的例子中:

代码语言:javascript
复制
docker exec some-clickhouse-client bash -c "echo \"$(cat qv_stock_20160620035119.csv)\" | clickhouse-client --query="INSERT INTO stock FORMAT CSV";"

假设您已经启动了客户端容器并将其命名为some-clickhouse-client

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42221464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档