Я использую контейнер Windows с помощью Docker на хосте Windows (Windows Server 2016). Я хочу привязать его к порту хоста 8000 и запустить контейнер следующим образом:
docker run -d -p 8000:8000 474614/my_repo:javaprogram
Версия докера:
PS C:\Users\Administrator> docker version
Client:
Version: 17.03.1-ee-3
API version: 1.27
Go version: go1.7.5
Git commit: 3fcee33
Built: Thu Mar 30 19:31:22 2017
OS/Arch: windows/amd64
Server:
Version: 17.03.1-ee-3
API version: 1.27 (minimum version 1.24)
Go version: go1.7.5
Git commit: 3fcee33
Built: Thu Mar 30 19:31:22 2017
OS/Arch: windows/amd64
Experimental: false
Насколько я понимаю, поскольку я запускаю докер «изначально» с сервера Windows с контейнером Windows, между ними нет промежуточной виртуальной машины (без докер-машины), поэтому «хост» — это фактический сервер Windows, на котором я запускаю докер.
Итак, мой вопрос: почему не работает привязка порта хоста? Почему я не могу связаться с хостом?
я попытался добавить прокси через командную строку, используя команду ниже
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress="MY_HOST_IP" connectport=8000
Что меня также сбивает с толку, так это то, что когда я запускаю netstat как на хосте, так и на контейнере, я получаю следующие результаты.
netstat на хосте
PS C:\Users\Administrator> netstat -ab | findstr ":80"
TCP 0.0.0.0:80 MYCOMPUTER:0 LISTENING
TCP 127.0.0.1:8000 MYCOMPUTER:0 LISTENING
TCP [::]:80 MYCOMPUTER:0 LISTENING
PS C:\Users\Administrator>
netstat для контейнера
PS C:\Users\Administrator> netstat -ab | findstr ":80"
TCP 0.0.0.0:80 MYCOMPUTER:0 LISTENING
TCP 127.0.0.1:8000 MYCOMPUTER:0 LISTENING
TCP [::]:80 MYCOMPUTER:0 LISTENING
PS C:\Users\Administrator>
но когда я пытаюсь получить доступ к localhost:8000 или 127.0.0.1:8000 с моего хост-компьютера, я получаю сообщение об ошибке ниже
This site can’t be reached
PS C:\Users\Administrator> docker run 474614/my_repo:javaprogram
Hello Java
когда я запускаю изображение, я получаю вышеуказанный результат. я пытаюсь просмотреть результат через браузер, и как мне это сделать? Можно ли назначить ip в файле докера при создании образа докера? если так, пожалуйста, помогите мне с образцом dockerfile или любой совет по этому поводу будет полезен. Заранее спасибо