当前位置: 首页 > 知识库问答 >
问题:

将主机输出重定向到docker容器

燕凯旋
2023-03-14

我有一个在 docker 容器中运行的 mysql 容器,该容器故意无法通过任何端口访问,但可供其他 Docker 容器访问。

例如,考虑以下mysql容器

docker run --name test_db mysql

现在我想在我的主机上存在的mysql中运行一个转储文件。

cat mydumpfile.sql | docker exec -it test_db mysql --password=${MY_MYSQL_PASSWORD}

但是我得到了回应

the input device is not a TTY

如何将我的主机输出到docker容器?

请注意一件事,它不是关于错误的,通过删除-it或-i,我没有收到错误,但我无法通过管道输出到docker容器。

问题是如何将任何输出从主机传输到docker容器。

错误“输入设备不是TTY” - 这不能解决问题。

共有1个答案

越涵衍
2023-03-14

这是一个工作示例:

script.sql

CREATE DATABASE test;

use test;

create table test (
    id varchar(64) not null,
    name varchar(64) not null default ""
);

创建容器:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=test -d mysql

运行sql脚本:

docker exec -i mysql mysql -uroot -ptest < script.sql

登录并检查新数据库是否已创建:

docker exec -ti mysql \
  mysql -uroot -ptest -e"show databases; use test; show tables; desc test;"

清理

docker container rm -f mysql
 类似资料:
  • 问题内容: 我正在尝试从主机系统调用docker的mysqldump,以从golang保存mysql dump。它可以与主机mysqldump正常工作,但不能与docker的mysqldump一起工作。 } 我只有非空数据库的 空mysql dump 问题答案: 解决方案是: } 没有“> dbname.sql”

  • 我想从一个服务器设置服务多个站点: 到目前为止,我只发现docker在使用静态IPS时进行端口重定向。 是否可以通过主机名使用docker进行端口重定向? 我使用一个免费的亚马逊EC2 Insance。 谢谢博

  • 为了使项目的开发更容易,我在docker容器中放置了它所依赖的几个服务。这使得项目配置中的“localhost”在传递给其中一个容器时具有不同的含义。 编辑 清楚地说,我试图将容器的一个端口转发到主机,因此当容器中运行的进程试图访问localhost:5432时,它将连接到主机的端口5432。 结束 我目前正在使用 将目标为“本地主机”的任何内容重定向到容器的主机。它在这种情况下有效,但我更愿意找

  • 问题内容: 我想从Groovy程序中执行foo.bat,并将生成的进程的输出重定向到stdout。Java或Groovy代码示例都可以。 foo.bat可能需要花费几分钟才能运行并生成大量输出,因此我希望在生成后立即查看输出,而不是必须等到该过程完成之后才能立即查看所有输出。 问题答案: 它使用一个类读取执行的程序生成的所有输出,并将其显示在其自己的stdout中。

  • 问题内容: 我正在AIX 6上工作,在KIX Shell上运行Java命令,并且正在尝试调试类加载问题。我放了-verbose:class来打印加载的类,然后>> / home / user / log.log将控制台放到一个文件中。已创建log.log文件,但其大小为零。文件不包含任何信息,所有详细信息都在一闪而过。 问题答案: 也尝试重定向: 您的Java代码可能正在编写您的命令未重定向的信息

  • 我想让我的程序记录给定对象的XML使用: 目前,我使用stdout作为输出流。但是stdout没有打印在log4j日志文件中。 如何将此方法的输出重定向到log4j日志文件? 谢啦