如何从主机到mysql docker容器执行mysqldump命令

如何从主机到mysql docker容器执行mysqldump命令,mysql,docker,fedora,Mysql,Docker,Fedora,我想为docker容器中运行的数据库创建mysql转储。但是,我不想进入容器并执行命令,而是从主机执行。有办法吗。我尝试了一些事情,但可能是我的命令错了 docker exec-d mysql sh mysqldump-uroot-pSomePassword DBName>/dumps/MyNewDump.sql docker exec-d mysql sh$(mysqldump-uroot-pSomePassword DBName>/dumps/MyNewDump.sql) docker ex

我想为docker容器中运行的数据库创建mysql转储。但是,我不想进入容器并执行命令,而是从主机执行。有办法吗。我尝试了一些事情,但可能是我的命令错了

docker exec-d mysql sh mysqldump-uroot-pSomePassword DBName>/dumps/MyNewDump.sql

docker exec-d mysql sh$(mysqldump-uroot-pSomePassword DBName>/dumps/MyNewDump.sql)

docker exec-d mysql mysqldump-uroot-pSomePassword DBName>/dumps/MyNewDump.sql

dumps
目录已绑定到主机

这些命令似乎不是正确的方法,或者根本不是正确的方法。这些问题总是以错误告终:

bash:/dumps/MyNewDump.sql:没有这样的文件或目录

但是如果我只是在容器中运行
mysqldump-uroot-pSomePassword DBName>/dumps/MyNewDump.sql
,它就可以正常工作。

这对我来说很有效(只需替换容器ID):

使用常用的MySQL CLI选项连接到在其他地方运行的服务器。这意味着您可以直接从主机运行它,而不需要
docker exec
(管理员)权限

mysqldump -h127.0.0.1 -uroot -pSomePassword DBName > MyNewDump.sql

与docker exec表单不同,这会在主机上创建转储文件,但这可能是您想要的。

如何从另一个容器执行mysqldump,有什么想法或方法吗?例如,当有一个包自动执行备份,但它假定mysqldump位于同一主机中时。您可以使用正常的容器间通信(例如,如中所述),但在
mysqldump-h
hostname选项中使用另一个容器的名称。一般来说,如果您在应用程序代码中硬编码了
localhost
127.0.0.1
或任何其他主机名,则在Docker或其他非开发人员设置的环境中运行它时会遇到问题。您有没有从其他容器执行mysqldump的想法或方法?例如,当有一个包自动执行备份,但它假定mysqldump位于同一主机中时。
mysqldump -h127.0.0.1 -uroot -pSomePassword DBName > MyNewDump.sql