将内容管道化为泊坞窗图像

时间:2017-02-14 08:46:11

标签: docker

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

启动服务器实例

docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server

从本机客户端连接到它

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镜像?

2 个答案:

答案 0 :(得分:1)

您可以像在主机上运行的程序一样将数据发送到容器中运行的程序:

echo "hello" | docker run -i --rm ubuntu cat

(输出hello并存在)

在您的情况下,这应该有效:

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"

答案 1 :(得分:0)

这是一种方式,虽然它有些笨拙......

docker exec <container-name> bash -c "echo \"$(cat <local-file>)\" | <app-in-container>"

这假设您的容器图片中有/bin/bash

所以在你的情况下:

docker exec some-clickhouse-client bash -c "echo \"$(cat qv_stock_20160620035119.csv)\" | clickhouse-client --query="INSERT INTO stock FORMAT CSV";"

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