Linux를 실행하는 베어본 서버가 있지만 그래픽 인터페이스가 설치되어 있지 않습니다. 이는 명령줄에서만 작동하며 우리는 이를 변경하고 싶지 않습니다.
이 서버의 IP 주소는192.168.1.6
이 기계에서 우리는 실행합니다루스트어바웃여러 컨테이너를 사용하세요. 컨테이너 중 하나는 포트를 통해 액세스할 수 있는 웹 애플리케이션입니다 80
.
베어본 Linux를 사용 하면 curl localhost
웹페이지의 원시 데이터가 있습니다. 동일한 LAN에 있는 모든 컴퓨터의 네트워크 응용 프로그램을 보고 싶습니다. 예를 들어, 내 컴퓨터에서 192.168.1.7
브라우저에 192.168.1.6
웹 애플리케이션을 입력하고 보고 싶습니다.
우선 이게 가능한가요? 그렇다면 안내를 좀 해주실 수 있나요?
답변1
이를 수행하는 방법에는 여러 가지가 있으며, 가장 간단한 방법은 Docker에 내장된 네트워킹을 사용하는 것입니다.
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
6ef2c6836690 bridge bridge local
db24b1e2be58 host host local
edf606d533a5 none null local
기본적으로 컨테이너는 bridge
NET에 있지 않는 한 네트워크 로 이동합니다 docker run...
.
$ docker run -P -d -p 12345:80 nginxdemos/hello
이렇게 하면 LAN의 모든 호스트는 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 컨테이너에 들어가고 나가는 것이 차단될 수 있다는 점에 유의하세요. 경우에 따라 Docker 호스트 외부의 호스트가 이 포트에 액세스할 수 있도록 허용 목록에 Docker 호스트의 포트(위 예에서는 12345)를 추가해야 할 수도 있습니다.