>  기사  >  운영 및 유지보수  >  외부 네트워크에서 Docker의 서비스에 액세스하는 방법

외부 네트워크에서 Docker의 서비스에 액세스하는 방법

PHPz
PHPz원래의
2023-04-19 14:12:445741검색

컨테이너 기술의 인기와 발전으로 Docker는 컨테이너화 기술의 리더이자 많은 개발자와 운영 및 유지 관리 담당자에게 없어서는 안될 도구가 되었습니다. 실제 애플리케이션에서는 액세스를 위해 Docker의 서비스를 외부 네트워크에 노출해야 하는 경우가 많습니다. 이 경우 Docker의 네트워크 구성과 포트 매핑을 사용해야 합니다.

1. Docker 네트워크 구성

Docker 네트워크에는 브리지 네트워크, 호스트 네트워크, 없음 네트워크 및 사용자 정의 네트워크의 네 가지 유형이 있습니다. 서비스 개발 및 배포를 위해 Docker를 사용할 때 일반적으로 컨테이너 간 통신을 더 효과적으로 제어할 수 있는 사용자 지정 네트워크 유형을 사용합니다.

Docker의 사용자 정의 네트워크 구성에는 일반적으로 네트워크 이름, 네트워크 드라이버, 서브넷 IP 및 게이트웨이 등이 포함됩니다. 그중 네트워크 드라이버에는 브리지, 오버레이, macvlan 및 기타 선택할 수 있는 유형이 포함됩니다. 여러 컨테이너가 서로 액세스해야 하는 경우 컨테이너가 컨테이너 이름 또는 컨테이너 ID를 통해 서로 통신할 수 있도록 동일한 사용자 지정 네트워크에 있어야 합니다.

다음으로 Docker에서 커스텀 네트워크를 생성하는 방법과 지정된 네트워크에 서비스 컨테이너를 추가하는 방법을 소개하겠습니다.

  1. 사용자 지정 네트워크 만들기

Docker 명령줄 도구를 통해 컨테이너를 만들 때 네트워크 이름을 지정하여 사용자 지정 네트워크를 만들 수 있습니다. 구체적인 명령은 다음과 같습니다.

docker network create --driver bridge <network_name>

여기서 <network_name>는 생성해야 하는 네트워크의 이름입니다. <network_name> 为需要创建的网络名称。

  1. 将容器加入到指定网络中

如果需要将容器加入到指定网络中,可以使用 docker run 命令的 --network 选项。具体命令为:

docker run --name <container_name> --network <network_name> <image_name>

其中,<container_name> 为容器名称,<network_name> 为所需加入的网络名称,<image_name> 为容器镜像名称。

二、Docker 端口映射

Docker 容器中的服务默认仅能在容器内部进行访问,如果需要让外部网络可以通过 IP 地址和端口号访问该服务,则需要进行端口映射。Docker 的端口映射通常有两种方式:静态端口映射和动态端口映射。

  1. 静态端口映射

静态端口映射通常在启动容器时进行设置。我们可以使用代表主机上端口号的 参数和代表容器内端口号的 参数将它们绑定在一起。具体命令为:

docker run -p <host_port>:<container_port> <image_name>

例如,将主机的 8080 端口映射到容器中的 80 端口:

docker run -p 8080:80 nginx

在这种情况下,我们可以通过浏览器访问 http://localhost:8080 来访问容器内的服务。

  1. 动态端口映射

动态端口映射通常是通过自动分配一个主机上未被占用的端口来进行的。我们可以使用 -P 或者 -p 命令选项来开启动态端口映射。具体命令为:

docker run -P <image_name>

或者:

docker run -p <container_port> <image_name>

例如,使用 -P 选项启动一个 Tomcat 容器,Docker 会自动分配一个主机上未被占用的端口进行映射:

docker run -d -P tomcat

在这种情况下,我们可以使用 docker ps -a

    지정된 네트워크에 컨테이너 추가

    지정된 네트워크에 컨테이너를 추가해야 하는 경우 docker run 명령의 --network 옵션을 사용할 수 있습니다. 구체적인 명령은 다음과 같습니다.

    rrreee🎜여기서 <container_name>는 컨테이너의 이름이고, <network_name>은 추가할 네트워크의 이름입니다. <image_name> 는 컨테이너 이미지의 이름입니다. 🎜🎜2. Docker 포트 매핑🎜🎜 Docker 컨테이너의 서비스는 기본적으로 컨테이너 내부에서만 접근할 수 있습니다. IP 주소와 포트 번호를 통해 외부 네트워크가 서비스에 접근하도록 허용해야 하는 경우 포트 매핑이 필요합니다. Docker의 포트 매핑에는 일반적으로 정적 포트 매핑과 동적 포트 매핑이라는 두 가지 방법이 있습니다. 🎜🎜🎜정적 포트 매핑🎜🎜🎜정적 포트 매핑은 일반적으로 컨테이너를 시작할 때 설정됩니다. 호스트의 포트 번호를 나타내는 매개변수와 컨테이너 내의 포트 번호를 나타내는 구체적인 명령은 다음과 같습니다. 🎜rrreee🎜예를 들어 호스트의 8080 포트를 컨테이너의 80 포트에 매핑합니다. 🎜rrreee🎜이 경우 다음을 통해 http://localhost:8080에 액세스할 수 있습니다. 브라우저 > 컨테이너 내의 서비스에 액세스합니다. 🎜
      🎜동적 포트 매핑🎜🎜🎜동적 포트 매핑은 일반적으로 호스트에서 사용되지 않은 포트를 자동으로 할당하여 수행됩니다. -P 또는 -p 명령 옵션을 사용하여 동적 포트 매핑을 활성화할 수 있습니다. 구체적인 명령은 🎜rrreee🎜 또는 🎜rrreee🎜입니다. 예를 들어 -P 옵션을 사용하여 Tomcat 컨테이너를 시작하면 Docker는 매핑을 위해 호스트에 비어 있는 포트를 자동으로 할당합니다. 🎜rrreee🎜 이 경우 다음을 수행할 수 있습니다. docker ps -a 명령을 사용하여 매핑된 포트 번호를 확인한 후 브라우저를 통해 서비스에 접속하여 호스트 IP 주소와 할당된 포트 번호에 접속합니다. 🎜🎜3. 결론🎜🎜 네트워크 구성 및 포트 매핑을 통해 Docker 컨테이너의 서비스를 외부 네트워크에 노출하여 액세스할 수 있습니다. 컨테이너 내 서비스가 외부 네트워크 환경에 노출되는 것을 방지하여 보안 위험을 방지하려면 Docker 네트워크 구성 및 포트 매핑을 수행할 때 보안에 주의해야 합니다. 🎜

위 내용은 외부 네트워크에서 Docker의 서비스에 액세스하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.