Я знаю, что существует много дискуссий по этому поводу, но ни одно из предложенных решений не сработало для меня, поэтому мне нужно будет знать, по крайней мере, что я делаю что-то не так или наложил ограничение.
Шаг 1. Я создал проект веб-API .NET Core 2.0 по умолчанию из Visual Studio, здесь ничего особенного, тип вывода установлен на Консольное приложение, запущен OK из сообщества Visual Stuido 2017.
Шаг 2. Я установил последнюю версию DockerПанель инструментов, так как я использую Windows 10 Home Edition, которая также установила Virtual Box.
Шаг 3. Я добавил следующий файл Docker рядом с sln:
FROM microsoft/aspnetcore-build:2.0
WORKDIR /app
EXPOSE 80
COPY . .
RUN dotnet restore
RUN dotnet build
WORKDIR /app/DockerSample
ENTRYPOINT dotnet run
Шаг 4. Я успешно собрал образ с помощью команды, подобной 'docker build -t sample1.'
Шаг 5. Контейнер успешно начал работать, он был запущенследующая команда 'docker run -d -p 8080: 80 sample1'
Шаг 6. Извлечь информацию о контейнере с помощью команды docker logs c6
Была показана следующая информация:
![enter image description here](https://i.stack.imgur.com/o10cf.png)
Интересным является адрес, по которому служба прослушивает, похоже, он совпадает с адресом, который я получал при запуске службы непосредственно из Visual Studio.
Это служебный адрес виртуальной машины, которая работает внутри Virtual Box?Почему порт не 8080 или 80, как я упоминал в команде «run»?
Контейнер выглядит нормально, что-то вроде:
![enter image description here](https://i.stack.imgur.com/dHTBQ.png)
Шаг 7.
Теперь начинается забавная попытка запустить службу с компьютера с Windows 10, это было невозможно при использовании вызовов типа http://localhost:8080/values/api Я также пытался использовать вызовы типа http://192.168.99.100:8080/values/api, где 192.168.99.100 - это адрес док-машины по умолчанию.
Я также попробовал что-то вроде 'http://172.17.0.2:8080/values/api', где IP-адрес был получен после вызова типа' docker inspect a2 ', изменение порта на 80 не помогло :).Попытка изменить номер порта на 80 или 58954, тот, который показан красным как прослушивание, не помог.Также был остановлен брандмауэр Windows или любые другие брандмауэры.
Я попытался перенести порт с VirtualBox, имея что-то вроде
Попытка изменитьпорты 80 и 8080 между ними для хоста и гостя также не работали.
По сути, ни одно из предложенных мной решений не дало мне возможности подключиться к сервису с моего компьютера с Windows.
В основном я следовал этому уроку https://www.stevejgordon.co.uk/docker-for-dotnet-developers-part-2, который довольно хорошо объясняетЧто нужно сделать только для того, чтобы в какой-то момент использовать Docker Desktop для Windows, чтобы Docker Toolbox остался позади.
Знаете ли вы, что мне следует сделать, чтобы я мог запустить службу из контейнера Docker?