Доступ к контейнеру Docker с другого компьютера во внутренней сети

Во многих приложениях устройства хранения будут периодически заняты чтением данных. Если система всегда может отложить запись до того момента, когда запоминающее устройство не будет занято чтением данных, то с точки зрения приложения для завершения записи потребуется нулевое время. Единственные ситуации, в которых запись не будет мгновенной, это когда:

  1. Буферы записи заполняются до такой степени, что запросы отложенной записи больше не могут быть приняты до фактического завершения записи.

  2. Необходимо выключить или удалить устройство, для которого ожидаются записи.

  3. Приложение специально запрашивает подтверждение того, что запись действительно завершена.

Действительно, только из-за вышеперечисленных требований запись вообще должна иметь место. С другой стороны, обычно нет причин не выполнять какие-либо ожидающие записи в то время, когда устройство в противном случае было бы бездействующим, поэтому многие системы выполняют их тогда.

1
06.02.2018, 22:06
1 ответ

Un par de comentarios primero

  • en Dockerfile, "EXPOSE 80" es utilizado por "docker run -P", "publicar todo"
  • no sirve de nada publicar un puerto que la ventana acoplable no está atendiendo (p. " -p 8000 :80" cuando un servicio se ejecuta en el puerto 5000

Los puertos de escucha son informados por "puerto docker", pero no garantizan que serán reparados.

# docker run --name radiusnet -p 8001-8009:5000/tcp  radiusnet
Hosting environment: Production
Content root path: /app
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

# docker port radiusnet
5000/tcp -> 0.0.0.0:8001

La prueba del pudín...

# wget -O /tmp/test.html  http://localhost:8001/
--2018-02-08 16:22:46--  http://localhost:8001/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8001... connected.
HTTP request sent, awaiting response... 

Si esto falla, se han publicado los puertos incorrectos.

Cuando se inicia con "--host de red", el "puerto de la ventana acoplable" puede no informar nada, mientras que la ventana acoplable funciona correctamente. "lsof" puede ayudar.

# docker run --name radiusnet --network host  radiusnet
Hosting environment: Production
Content root path: /app
Now listening on: http://localhost:5000

# docker port radiusnet 

# ps -ef | grep dotnet
root       540 27973  0 16:46 pts/2    00:00:00 grep dotnet
root     32452 32437  7 16:37 ?        00:00:43 dotnet RadiusNet.Web.dll

# lsof -Pn -p 32452 | grep LISTEN
dotnet  32452 root  368u     IPv4     106845      0t0    TCP 127.0.0.1:5000 (LISTEN)
dotnet  32452 root  383u     IPv6     106854      0t0    TCP [::1]:5000 (LISTEN)

# wget -O /tmp/test.html  http://localhost:5000/       
--2018-02-08 16:56:27--  http://localhost:5000/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:5000... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘/tmp/test.html’

Bien está lo que bien acaba.

1
27.01.2020, 23:32

Теги

Похожие вопросы