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

我有2个Docker容器:App&Web。

App – 简单容器与PHP应用程序代码。 它仅用于存储并将代码交付给远程Docker主机。

应用图片Dockerfile:

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

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

Web图像Dockerfile:

 FROM nginx # Remove default nginx configs. RUN rm -f /etc/nginx/conf.d/* # Install packages RUN apt-get update && apt-get install -my \ supervisor \ curl \ wget \ php5-cli \ php5-curl \ php5-fpm \ php5-gd \ php5-memcached \ php5-mysql \ php5-mcrypt \ php5-sqlite \ php5-xdebug \ php-apc # Ensure that PHP5 FPM is run as root. RUN sed -i "s/user = www-data/user = root/" /etc/php5/fpm/pool.d/www.conf RUN sed -i "s/group = www-data/group = root/" /etc/php5/fpm/pool.d/www.conf # Pass all docker environment RUN sed -i '/^;clear_env = no/s/^;//' /etc/php5/fpm/pool.d/www.conf # Add configuration files COPY config/nginx.conf /etc/nginx/ COPY config/default.vhost /etc/nginx/conf.d COPY config/supervisord.conf /etc/supervisor/conf.d/ COPY config/php.ini /etc/php5/fpm/conf.d/40-custom.ini VOLUME ["/var/www", "/var/log"] EXPOSE 80 443 9000 ENTRYPOINT ["/usr/bin/supervisord"] 

我的问题:是否有可能通过套接字链接Web容器和应用程序容器?

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

非常感谢您的帮助和支持!

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

您可以创build本地泊坞窗卷并在两个容器上安装该卷。 然后configuration你的程序使用该path。

 docker volume create --name=phpfpm docker run phpfpm:/var/phpfpm web docker run phpfpm:/var/phpfpm app 

如果可以在主机上生成套接字,则可以将该文件挂载到两个容器中。 这是用来获得docker容器来控制主机泊坞窗的方法。

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