我想运行一个Docker容器中的aweb服务器,它侦听一个Unix套接字,而不是一个端口。 我在共享Docker套接字时发现了很多结果,但我不认为这就是我想要的。
我希望主机系统能够连接到容器内正在监听的Unix套接字。
我正在使用docker-compose,所以使用-v的常用方式不起作用。
我的ngix网站configuration:
server { listen 80; listen [::]:80; server_name foo.com www.foo.com; location / { proxy_pass http://unix:/var/lib/docker/volumes/app_shared/_data/app.https.sock:; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; }
泊坞窗,compose.yml
version: '3' services: web: build: . volumes: - shared:/var/app command: "npm start" volumes: shared:
然而它说我不能连接到套接字,即使它存在于主机上的这个位置。
您可以使用相同的套接字来沟通主机甚至两个容器。 在两个容器的情况下,你应该从主机上启动两个共享一个应该在主机中创build的卷的docker。
docker run --name "containerA" -v /var/run/common_socket_dir:/var/run/common_socket_dir... docker run --name "containerB" -v /var/run/common_socket_dir:/var/run/common_socket_dir...
containerA和containerB都可以使用socket作为/ var / run / common_socket_dir / socketX来互连。 当然,主机可以使用本卷中的插槽与容器进行通信