Да, вы можете установить соединение между контейнерами, если они находятся в одной сети Docker. Однако, проблема с вашим кодом может быть связана с тем, что вы используете `0.0.0.0` в качестве адреса для подключения, что не является корректным IP-адресом для подключения в этом контексте.
Вот несколько шагов для устранения проблемы:
1. **Использование имени контейнера или его IP-адреса**: Вместо `0.0.0.0`, вы должны использовать имя контейнера, который запускает сокет сервер, или его IP-адрес в локальной сети Docker. Например, если ваш контейнер называется `socket_server`, то вы должны использовать:
```php
stream_socket_client('socket_server:80', $errno, $errstr);
```
2. **Проверка сети**: Убедитесь, что оба контейнера находятся в одной сети. Вы можете проверить это с помощью команды:
```bash
docker network ls
```
И затем, для проверки конкретной сети:
```bash
docker network inspect <network_name>
```
3. **Проверка конфигурации сервера**: Убедитесь, что сервер действительно запущен и доступен. Вы можете выполнить команду для проверки состояния контейнера и его логов:
```bash
docker logs <socket_server_container_name>
```
4. **Проверка портов**: Вы правильно установили сокет сервер на `0.0.0.0:80`, что позволяет принимать подключения на порту 80 внутри контейнера. Внешний порт 1614 не имеет значения внутри контейнера. Вам нужно подключаться к порту 80.
5. **Firewall и настройки безопасности**: Если у вас есть дополнительные настройки безопасности или firewall в вашей системе, убедитесь, что они не блокируют соединение.
В целом, вам нужно использовать имя контейнера или его локальный IP в сети Docker для подключения к сокет-серверу. Если ваши контейнеры находятся в одной сети и правильно настроены, то соединение должно установиться без проблем.