Есть много способов сделать это, самый простой — использовать встроенную сеть Docker.
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
6ef2c6836690 bridge bridge local
db24b1e2be58 host host local
edf606d533a5 none null local
По умолчанию ваш контейнер входит в сеть bridge
, если вы не укажете иное во время docker run...
.
$ docker run -P -d -p 12345:80 nginxdemos/hello
Как только вы сделаете это, любой хост в локальной сети сможет связаться с ним, используя IP-адрес хоста Docker + порт:
$ curl -I http://192.168.56.101:12345/
HTTP/1.1 200 OK
Server: nginx/1.13.8
Date: Fri, 27 Jul 2018 08:26:02 GMT
Content-Type: text/html
Connection: keep-alive
Expires: Fri, 27 Jul 2018 08:26:01 GMT
Cache-Control: no-cache
Имейте в виду, что ваш брандмауэр хоста Docker может быть причиной того, что трафик не входит/не выходит в/из контейнера Docker. В некоторых ситуациях вам может потребоваться добавить порт (12345 хоста Docker в моем примере выше )в список разрешений, чтобы хосты за пределами хоста Docker могли получить доступ к этому порту.
Однако еще не проверял, поскольку вместо ответа Стивена(exe-thumbnailer
предлагается wine
пакет ), можно создать ярлык.desktop со свойством значка, экспортировать с помощью пакета icoutils
и, например. ручной префикс.
$ wrestool -x -t 14 app.exe > "$HOME/.icons/app.ico"
$ cat > ~/app.desktop << EOF
[Desktop Entry]
Name=An App
Exec=env WINEPREFIX="$HOME/.wine" wine-stable 'C:\Program Files (x86)\...\app.exe'
Type=Application
StartupNotify=true
Path="$HOME/.wine/dosdevices/c:/Program Files (x86)/..."
Icon="$HOME/.icons/app.ico"
StartupWMClass=app.exe
EOF
$ chmod +x ~/app.desktop