
가상 머신에서 Ubuntu 22.04.3 LTS를 실행하고 있습니다. 포트 80으로 Nginx를 설치했습니다.
http://localhost:80에 접속하면 Nginx가 일반 웹사이트를 보여줍니다.
그런 다음 도커와 두 개의 이미지를 설치했습니다. 포트 9000에서 이미지 API 액세스 권한을 부여했습니다.
그런데 http://localhost:9000에 접속하면 오류가 뜹니다. 우편 배달부에서 액세스하면 404가 반환됩니다.
Nginx에서 포트 9000을 연결하거나 허용하거나 docker에서 포트로 액세스를 연결해야 하는 것 같습니다.
Nginx에서 더 많은 포트를 허용하는 방법이나 포트 9000에 노출된 컨테이너를 연결하는 방법을 찾을 수 없습니다. 이것이 docker의 이미지에 대해 표시되는 방법입니다.
0.0.0.0:9000->9000/tcp, :::9000->9000/tcp
서버에 대해 다음 단계를 수행했습니다.
cd /etc/nginx/sites-enabled
sudo "${EDITOR:-vi}" docker
server {
listen 80;
listen [::]:80;
server_name example.ubuntu.com;
root /var/www/docker;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
postman: http://localhost:9000/kalum-management/v1/jornadas에서 GET을 실행하면 데이터가 반환되어야 합니다. 어떤 이유로 Docker 및 Nginx와의 혼동이 모두 뒤섞여 Docker를 포트 9000에 노출하는 방법을 확신하지 못했습니다.
답변1
Docker는 자체 네트워크와 네트워크 어댑터를 만듭니다. 컨테이너를 실행할 때 network_mode 호스트 옵션을 사용하면 호스트 운영 체제에서 컨테이너가 연결된 Docker 네트워크에 연결할 수 있습니다. 나는 docker compose를 사용하는 것을 추천하고 더 많은 포트를 게시하기 위한 docker-compose 예제도 보여드리겠습니다.
version: '3'
services:
your_service_name:
container_name: your_container_name
image: your_image_name
network_mode: host
volumes:
- /path/on/host:/mnt
공용 포트와 네트워크 모드 호스트를 함께 사용할 수 없다는 점에 유의하세요.
이 파일을 docker-compose.yml 디렉터리에 저장한 다음 다음을 사용하여 실행하세요.docker-compose up -d
옵션 2
또는 다음 명령을 사용하여 컨테이너의 IP 주소를 알아냅니다.
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name_or_id>
그런 다음 http://localhost:9000 대신 localhost를 컨테이너의 IP로 바꿉니다. 도커 네트워크(컨테이너 시작 시 자동으로 생성됨)가 호스트에서 도달할 수 없기 때문에 작동하지 않을 수 있습니다(틀렸다면 수정해 주세요. 그러나 기본적으로 호스트 운영 체제의 기본 네트워크와 도커 사이에는 라우팅이 없습니다). 컨테이너가 연결된 네트워크)