다음과 같은거울 튜토리얼dockerhub에서는 원격 Linux 서비스에서 docker 웹 애플리케이션을 실행할 수 있었습니다. 여기서 호스트는 브라우저 주소 "http://localhost:8888/index.html"을 통해 액세스할 수 있는 원격 우분투 서버입니다. 같은 방법으로 다음 명령어를 사용하여 컨테이너를 구축했습니다.
docker run -it --rm -p 8888:8888 --shm-size=512M mathworks/matlab:r2022b -browser
그러나 문제는 애플리케이션이 호스트 컴퓨터의 브라우저에서만 액세스할 수 있고 내 로컬 컴퓨터나 동일한 LAN의 다른 컴퓨터에서는 액세스할 수 없다는 것입니다. 웹에서 검색해서 해결 방법을 찾는데 어려움을 겪고 있으며, 다음 URL 주소를 지정하여 접속해 보려고 하는데 아무 소용이 없습니다.
"http://localhost:8888/index.html"
"http://<linux_ip_id>:8888/index.html"
"http://<windows_ip_id>:8888/index.html"
"http://<container_ip_id>:8888/index.html"
또한 나는다른 소스호스트와 로컬 컴퓨터 사이를 연결하기 위한 네트워크 방법을 설정해야 했고 이에 대한 솔루션은 VM VirtualBox Manager 설정이었습니다. 하지만 내 상황은 다릅니다. 호스트는 원격 독립 우분투 서버입니다. 도커 컨테이너는 기본적으로 브리지로 호스트와 통신하는데, 지정된 네트워크 연결로 도커 컨테이너를 빌드하여 도커 컨테이너를 실행해 보았는데, --network=host
위의 액세스 주소가 여전히 작동하지 않습니다!
참고: 내 로컬 컴퓨터는 Windows 10 시스템이며 원격 Linux 시스템과 동일한 LAN에 있습니다. 정상적으로 서버 IP 주소를 핑하거나 SSH를 통해 연결할 수 있습니다.
답변1
나는 비슷한 상황에 처해있었습니다. Docker는 Linux 서버 가상 머신에서 실행됩니다. 다른 네트워크의 다른 컴퓨터에서 원격으로 Docker 컨테이너에 액세스해 보십시오. 해결책은 Linux 서버에서 iptables를 수정하는 것입니다.
iptables -I DOCKER-USER -i ensXX -s 0.0.0.0/0 -j ACCEPT
이 명령은 모든 네트워크에서의 연결을 허용합니다. ensXX - 내 Linux 서버 네트워크 인터페이스입니다(ifconfig 참조).
이 명령을 실행하면 원격으로 Docker 컨테이너에 연결할 수 있습니다.
docker 및 iptables에 대한 추가 정보:https://docs.docker.com/network/iptables/
답변2
ssh
다행히 명령어를 사용하여 문제를 해결할 수 있었습니다 . 로컬 Windows 시스템에서 사용되는 참조 명령은 ssh
다음과 같습니다.
ssh -L 8888:<remote_linux_ip>:8888 <my_name>@<remote_linux_ip>