Docker中的Docker在主机上运行脚本 - 组成

时间:2017-04-04 13:41:27

标签: bash docker docker-compose dockerfile docker-machine

感谢您收看此问题。

所以我的问题涉及如何在docker-compose up指令上运行脚本的最佳实践。

目前,我在主机和容器之间共享卷,以允许脚本更改对主机和容器都可见。 与观看脚本轮询配置文件更改类似。

脚本必须根据预定义的规则对主机进行更改。

所以我的问题是:

我怎样才能在docker-compose up指令上启动这个脚本,甚至从服务的dockerfile启动这个脚本,这样每当容器启动时,"观察者"可以找到正在进行的任何更改并写入。

有问题的容器将始终运行在debian / ubuntu操作系统上,并且应该独立于架构,这意味着它也应该能够在ARM上运行。

提前致谢

我也想知道,为什么这个问题只是因为有些人不理解而被贬低。

我希望在主机上运行脚本,而不是在容器内运行..我需要主机更改其网络接口配置以轻松适应任何环境主机需要更改我重复..这应该是无缝的用户,并且可以在运行Inside a CONTAINER的Web界面上轻松编辑,以适应新环境。

我目前使用基于crontab的主机上运行的脚本执行此操作。我只想知道如何从INSIDE a CONTAINER在HOST上运行脚本的最佳实践和示例,以便安装操作员可以轻松地部署docker-compose。

谢谢

3 个答案:

答案 0 :(得分:1)

  

我只想了解如何从INSIDE a CONTAINER在HOST上运行脚本的最佳实践和示例,以便安装操作员可以轻松地部署docker-compose up

似乎没有可以应用于您的案例的最佳做法。这里提出了一种解决方法:How to run shell script on host from docker container?是使用client/server技巧。

  1. 主机应运行一个小型服务器(选择一个端口并指定您应该等待的请求类型)
  2. 容器启动后应将此请求发送到该服务器
  3. 然后主机应该运行脚本/触发您想要的更改
  4. 这可能存在严重的安全问题,因此使用风险自负。

答案 1 :(得分:0)

脚本需要在前台连续运行。

在Dockerfile中使用CMD指令并将脚本定义为参数。

使用cli时,请使用docker run -d IMAGE SCRIPT

答案 2 :(得分:0)

您可以为docker-compose up创建别名。在~/.bash_aliases(在Ubuntu中)中添加这样的内容:

alias up="docker-compose up; ~/your_script.sh"

我不确定是否可以从容器上运行主机上的脚本,但如果可能,则存在严重的安全漏洞。容器应该是隔离的,这是使用容器的重点。