Docker:使用套接字在2个容器之间进行通信

前端之家收集整理的这篇文章主要介绍了Docker:使用套接字在2个容器之间进行通信前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有2个Docker容器:App&网页.

App – 带有PHP应用程序代码的简单容器.它仅用于存储并将代码传递到远程Docker主机.

应用程序图像Dockerfile:

  1. FROM debian:jessie
  2. COPY . /var/www/app/
  3. VOLUME ["/var/www/app"]
  4. CMD ["true"]

Web – Web服务容器,由PHP-FPM Nginx组成.

Web镜像Dockerfile:

  1. FROM Nginx
  2. # Remove default Nginx configs.
  3. RUN rm -f /etc/Nginx/conf.d/*
  4. # Install packages
  5. RUN apt-get update && apt-get install -my \
  6. supervisor \
  7. curl \
  8. wget \
  9. PHP5-cli \
  10. PHP5-curl \
  11. PHP5-fpm \
  12. PHP5-gd \
  13. PHP5-memcached \
  14. PHP5-MysqL \
  15. PHP5-mcrypt \
  16. PHP5-sqlite \
  17. PHP5-xdebug \
  18. PHP-apc
  19. # Ensure that PHP5 FPM is run as root.
  20. RUN sed -i "s/user = www-data/user = root/" /etc/PHP5/fpm/pool.d/www.conf
  21. RUN sed -i "s/group = www-data/group = root/" /etc/PHP5/fpm/pool.d/www.conf
  22. # Pass all docker environment
  23. RUN sed -i '/^;clear_env = no/s/^;//' /etc/PHP5/fpm/pool.d/www.conf
  24. # Add configuration files
  25. COPY config/Nginx.conf /etc/Nginx/
  26. COPY config/default.vhost /etc/Nginx/conf.d
  27. COPY config/supervisord.conf /etc/supervisor/conf.d/
  28. COPY config/PHP.ini /etc/PHP5/fpm/conf.d/40-custom.ini
  29. VOLUME ["/var/www","/var/log"]
  30. EXPOSE 80 443 9000
  31. ENTRYPOINT ["/usr/bin/supervisord"]

我的问题:是否可以通过套接链接Web容器和App容器?

主要原因是 – 使用App容器将更新的代码部署到远程Docker主机.
在容器之间使用卷/命名卷来共享代码不是一个好主意.但套接字可以提供帮助.

非常感谢您的帮助和支持

最佳答案
如果两个容器都在同一主机上运行,​​则可以在两者之间共享套接字,因为它们是普通文件.

您可以create a local docker volume并在两个容器上安装该卷.然后配置程序以使用该路径.

  1. docker volume create --name=PHPfpm
  2. docker run PHPfpm:/var/PHPfpm web
  3. docker run PHPfpm:/var/PHPfpm app

如果可以在主机上生成套接字,则可以将文件装入两个容器中.这是用于使docker容器控制主机docker的方法.

  1. docker run -v /var/container/some.sock:/var/run/some.sock web
  2. docker run -v /var/container/some.sock:/var/run/some.sock app

猜你在找的Docker相关文章