Docker: 运行 来自多个容器的命令
Docker: Run commands from multiple containers
我想执行一个使用来自多个容器的命令的命令。
例如,我想执行一个使用 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
- db
- db_backup
我想在我的 db_backup
脚本中使用位于 db
中的 pg 命令。
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
运行 db
容器内的 3)
注意:在我的 Fedora 上,pg_dump
指向 /usr/bin/pg_dump
docker exec
没有 --link
选项。如果要使用特殊脚本备份:
- 从 postgresql 镜像(
db
容器使用的镜像)开始创建一个新镜像 db_backup
,将备份脚本添加到某个文件夹。
- 做
docker run --volumes-from db db_backup your_backup_script.sh
.
我想执行一个使用来自多个容器的命令的命令。
例如,我想执行一个使用 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
- db
- db_backup
我想在我的 db_backup
脚本中使用位于 db
中的 pg 命令。
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
运行 db
容器内的 3)
注意:在我的 Fedora 上,pg_dump
指向 /usr/bin/pg_dump
docker exec
没有 --link
选项。如果要使用特殊脚本备份:
- 从 postgresql 镜像(
db
容器使用的镜像)开始创建一个新镜像db_backup
,将备份脚本添加到某个文件夹。 - 做
docker run --volumes-from db db_backup your_backup_script.sh
.