Docker:从多个容器运行命令
我想执行一个使用来自多个容器的命令的命令。
例如,我想执行一个使用psql和pg_dump命令的备份脚本。
docker exec db_backup pg_dump failed to exec: exec: "pg_dump": executable file not found in $PATH
docker run
有一个选项 – --link
。 exec
有类似的选项吗?
要解决这个问题,有3个容器:
- my_app应用
- D b
- 在db_backup
我想从db_backup
脚本中使用位于db
pg命令。
--link
docker exec
没有--link
选项。 如果你想使用特殊的脚本进行备份:
- 从postgresql(
db
容器使用的那个)开始创build一个新的映像db_backup
,将备份脚本添加到某个文件夹。 -
docker run --volumes-from db db_backup your_backup_script.sh
。
1)使用sudo docker run -ti db /bin/bash
进入db
shell
2)键入which pg_dump
或者如果第一次失败, locate pg_dump
3)在命令sudo docker exec db /full_path_to/pg_dump
使用完整path
在你的db
容器里运行3)
注意:在我的Fedora上, pg_dump
指向/usr/bin/pg_dump