Предположим, у меня на Windows работает сервер с портом 8000.Как мой контейнер Docker может получить к нему доступ через 127.0.0.1:8000?Я также не могу изменить имя хоста, поскольку приложение в контейнере не находится под моим контролем.
Я читал это предыдущее обсуждение то же самое, но внутри VB при использовании "--network =host "для контейнера, чтобы получить доступ к сети хост-машины, или использовать другой IP-адрес для localhost.Однако я работаю в Windows, и Docker работает в подсистеме Windows для Linux (Ubuntu из хранилища Windows), поэтому localhost из контейнера Docker с параметром --network = "host" не понимает этого правильно.Изнутри подсистемы Windows для Linux я могу без проблем получить доступ к 127.0.0.1:8000.
Например, имея некоторый bash-файл, выполняющий следующие действия
#!/bin/bash
set -x
# we get some file from the localhost
curl 127.0.0.1:22334/some_file.txt
# we build docker image
docker build --tag dockername --network=host dockerfiles/imagename
, и некоторый докер-файл, подобный этому
# This is a Dockerfile
FROM ubuntu:16.04 as installer
RUN apt-get update && apt-get install --no-install-recommends curl -y
RUN curl 127.0.0.1:22334/some_file.txt
Я получаю что-то вроде
+ curl 127.0.0.1:22334/some_file.txt
here_we_get_some_file_content
+ docker build --tag dockername --network=host dockerfiles/imagename
Sending build context to Docker daemon 18.43kB
Step 1/30 : FROM ubuntu:16.04 as installer
---> 4a689991aa24
Step 2/30 : RUN apt-get update && apt-get install --no-install-recommends curl -y
---> Running in 72378a1be045
...
Step 3/30 : RUN curl 127.0.0.1:22334/some_file.txt
---> Running in 41a4c470337b
curl: (3) <url> malformed
The command '/bin/sh -c curl 127.0.0.1:22334/some_file.txt' returned a non-zero code: 3