加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Docker中的链接容器上执行二进制文件

发布时间:2020-12-16 03:24:47 所属栏目:安全 来源:网络整理
导读:我有3个Docker容器,其中一个运行nginx,另一个运行php,一个运行hashicorp的农奴. 我想使用php exec函数调用农奴制二进制文件来触发农奴制事件 在我的Docker撰写中,我写了 version: '2'services: web: restart: always image: `alias`/nginx-pagespeed:1.11.4

我有3个Docker容器,其中一个运行nginx,另一个运行php,一个运行hashicorp的农奴.

我想使用php exec函数调用农奴制二进制文件来触发农奴制事件

在我的Docker撰写中,我写了

version: '2'
services:
  web:
    restart: always
    image: `alias`/nginx-pagespeed:1.11.4
    ports:
      - 80
    volumes:
      - ./web:/var/www/html
      - ./conf/nginx/default.conf:/etc/nginx/conf.d/default.conf
    links:
      - php
    environment:
      - SERVICE_NAME=${DOMAIN}
      - SERVICE_TAGS=web
  php:
    restart: always
    image: `alias`/php-fpm:7.0.11
    links:
      - serf
    external_links:
      - mysql
    expose:
      - "9000"
    volumes:
      - ./web:/var/www/html
      - ./projects:/var/www/projects
      - ./conf/php:/usr/local/etc/php/conf.d
  serf:
    restart: always
    dns: 172.17.0.1
    image: `alias`/serf
    container_name: serf
    ports:
      - 7496:7496
      - 7496:7496/udp
      command: agent -node=${SERF_NODE} -advertise=${PRIVATE_IP}:7496 -bind=0.0.0.0:7496

我在想,我会在php exec(‘serf serf event“ test”’)中做些类似的事情,其中??serf是容器的主机名.

或者,也许有人可以提出如何使用替代方法进行类似设置的想法?

最佳答案
“链接的”容器允许容器之间的网络级发现.对于docker网络,现在已将链接功能视为旧功能,不再推荐使用.要在另一个容器中运行命令,您需要在目标容器上打开网络API功能(例如,对目标容器的基于REST的http请求),或者需要将主机公开给源容器可以针对目标容器运行docker exec.

后者要求您在源容器中安装docker客户端,然后使用主机上的开放端口或在容器中安装/var/run/docker.sock公开服务器.由于这允许容器在主机上具有root用户访问权限,因此不建议您对管理容器以外的其他方式进行操作,否则您将信任直接在主机上运行的代码.

我能想到的唯一其他选择是删除具有共享卷的容器之间的隔离.

理想的解决方案是使用消息队列服务,该服务允许多个工作人员按自己的节奏启动和处理请求.源容器将请求发送到队列,目标容器在运行时将侦听请求.这也使系统即使在工人当前停工时也能继续运行,活动只是排队.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读