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 有一个选项 --linkexec是否有类似的选项?

为了解决这个问题,有 3 个容器:

我想在我的 db_backup 脚本中使用位于 db 中的 pg 命令。

1) 使用 sudo docker run -ti db /bin/bash

转到 db shell

2) 键入 which pg_dumplocate pg_dump 如果第一个失败

3) 在命令中使用完整路径 sudo docker exec db /full_path_to/pg_dump

运行 db 容器内的 3)

注意:在我的 Fedora 上,pg_dump 指向 /usr/bin/pg_dump

docker exec 没有 --link 选项。如果要使用特殊脚本备份:

  1. 从 postgresql 镜像(db 容器使用的镜像)开始创建一个新镜像 db_backup,将备份脚本添加到某个文件夹。
  2. docker run --volumes-from db db_backup your_backup_script.sh.