не проходит соединение с сокетом внутри Docker

пытаюсь запутстить gpsfake (из пакета python-gps) в контейнере.

Dockerfile:

FROM debian:9
    
WORKDIR /code

COPY kras-en.nmea kras-en.nmea

RUN apt-get update && \
    apt-get install -y \
      gpsd-clients  \
      wget \
      python2.7 \
      python-gps \
      net-tools
COPY . .

EXPOSE 2948

ENTRYPOINT ["python2", "/usr/bin/gpsfake", "-P", "2948", "-t", "-c 1", "-l", "-D4", "kras-en.nmea"]

docker-compose.yml:

version: '2'

services:
    gpsfake:
        build: .
        stdin_open: true # docker run -i
        tty: true        # docker run -t
        ports:
            - "127.0.0.1:2948:2948"

приложение стартует, лог отображает, что слушает порт 2948, и есть ещё какой-то порт внутри контейнера

Attaching to gpsfake_gpsfake_1
gpsfake_1  | Processing kras-en.nmea
gpsfake_1  | gpsd:PROG: control socket opened at /tmp/gpsfake-1.sock
gpsfake_1  | gpsd:INFO: launching (Version 3.16)
gpsfake_1  | gpsd:ERROR: can't bind to IPv6 port 2948, Cannot assign requested address
gpsfake_1  | gpsd:INFO: listening on port 2948
gpsfake_1  | gpsd:WARN: PPS: o=priority setting failed. Time accuracty will be degraded
gpsfake_1  | gpsd:PROG: NTP: shmat(0,0,0) succeeded, segment 0
gpsfake_1  | gpsd:PROG: NTP: shmat(1,0,0) succeeded, segment 1
gpsfake_1  | gpsd:PROG: NTP: shmat(2,0,0) succeeded, segment 2
gpsfake_1  | gpsd:PROG: NTP: shmat(3,0,0) succeeded, segment 3
gpsfake_1  | gpsd:PROG: NTP: shmat(4,0,0) succeeded, segment 4
gpsfake_1  | gpsd:PROG: NTP: shmat(5,0,0) succeeded, segment 5
gpsfake_1  | gpsd:PROG: NTP: shmat(6,0,0) succeeded, segment 6
gpsfake_1  | gpsd:PROG: NTP: shmat(7,0,0) succeeded, segment 7
gpsfake_1  | gpsd:ERROR: unable to connect to the DBUS system bus
gpsfake_1  | gpsd:PROG: shmget(0x47505344, 8936, 0666) for SHM export succeeded
gpsfake_1  | gpsd:PROG: shmat() for SHM export succeeded, segment 8
gpsfake_1  | gpsd:INFO: running with effective group ID 20
gpsfake_1  | gpsd:INFO: running with effective user ID 102
gpsfake_1  | gpsd:INFO: startup at 2020-10-13T08:46:07.000Z (1602578767)
gpsfake_1  | gpsd:INFO: control socket connect on fd 7
gpsfake_1  | gpsd:CLIENT: <= control(7): +tcp://127.0.0.1:49194\x0d\x0a
gpsfake_1  | gpsd:INFO: <= control(7): adding tcp://127.0.0.1:49194
gpsfake_1  | gpsd:INFO: stashing device tcp://127.0.0.1:49194 at slot 0
gpsfake_1  | gpsfake: log cycle of kras-en.nmea begins.
gpsfake_1  | gpsfake: line 1: $GPGGA,043641.376,5608.763,N,09257.736,E,1,12,1.0,0.0,M,0.0,M,,*6A

вот такой tcp://127.0.0.1:49194

из внешней хост машины подключится к процессу fakegps не получается

$ telnet localhost 2948
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

но при этом если запустить

docker-compose exec gpsfake bash

и внутри него уже gpsmon localhost:2948 но всё проходит успешно Успешная работа gpsmon

как отладить соединение? каких сокетов\портов ему не хватает для успешного соединения?. отдельно 49194 пробрасывал, таже пробовал диапазон портов, но нет. репозиторий со всем содержимым тут https://github.com/odmin4eg/gpsfake


Ответы (0 шт):