>  기사  >  운영 및 유지보수  >  Docker 컨테이너의 포트를 매핑하는 방법

Docker 컨테이너의 포트를 매핑하는 방법

PHPz
PHPz원래의
2023-04-18 15:21:129447검색

Docker는 개발자가 이 뛰어난 도구를 사용하여 로컬, 클라우드 또는 모바일 장치에서 모든 애플리케이션을 신속하게 패키징, 배포 및 실행할 수 있도록 하는 오픈 소스 애플리케이션 컨테이너 엔진입니다. Docker의 가장 큰 특징은 실행 중인 컨테이너를 다양한 호스트에 빠르게 배포할 수 있고 환경의 일관성이 유지된다는 점입니다. Docker는 뛰어난 성능과 사용 편의성으로 인해 클라우드 컴퓨팅, DevOps, 마이크로서비스 및 기타 분야에서 널리 사용되었습니다. 이 문서에서는 Docker 컨테이너에 대한 포트 매핑을 소개합니다.

  1. Docker 컨테이너에 대한 포트 매핑

Docker 컨테이너의 각 서비스는 포트 번호를 차지해야 합니다. 컨테이너 내부에서 실행되는 서비스가 외부 시스템과 통신해야 하는 경우 이 포트 번호를 호스트의 포트에 매핑해야 합니다. 이 프로세스를 포트 매핑이라고 부를 수 있습니다.

Docker에서는 docker run 명령을 통해 컨테이너를 시작하고 포트 매핑 매개변수를 지정할 수 있습니다. 예를 들어 웹 서비스가 컨테이너에서 실행 중이고 수신 포트가 8080이라고 가정하면 다음 명령을 사용하여 컨테이너의 8080 포트를 호스트의 >8000포트: docker run命令来启动一个容器,并指定端口映射参数。例如,假设在容器内运行的是一个Web服务,监听端口为8080,我们可以使用下面的命令将容器内的8080端口映射到主机的8000端口:

docker run -p 8000:8080 my-web-service

这个命令的参数-p 8000:8080表示将容器内的8080端口映射到主机的8000端口。最后一个参数my-web-service是指定要运行的Docker镜像。

  1. 多个端口的映射

如果容器内运行的服务需要暴露多个端口,可以通过多次添加-p参数进行映射。例如,假设在容器内运行的服务需要同时监听80808081两个端口,我们可以使用下面的命令将这两个端口映射到主机上的不同端口:

docker run -p 8000:8080 -p 8001:8081 my-web-service

这个命令的参数-p 8000:8080表示将容器内的8080端口映射到主机的8000端口,参数-p 8001:8081表示将容器内的8081端口映射到主机的8001端口。

  1. 绑定到本地IP

默认情况下,Docker容器映射的端口是绑定到主机的所有网卡接口上。如果要指定映射到某个特定的IP地址上,可以通过-p参数的格式:

docker run -p IP:HOST_PORT:CONTAINER_PORT my-web-service

其中,IP是指要映射的本地IP地址,HOST_PORT是主机上的端口号,CONTAINER_PORT是容器内服务实际监听的端口号。

  1. UDP端口的映射

与TCP端口不同,UDP端口需要使用-p参数的格式进行映射。例如,可以通过下面的命令将容器内的UDP端口8080映射到主机的UDP端口8000

docker run -p 8000:8080/udp my-udp-service
  1. 随机端口映射

在某些情况下,如果没有必要将容器内的端口映射到主机的固定端口上,可以使用-P参数来指定随机端口映射。例如,可以通过下面的命令启动并自动映射服务的端口:

docker run -P my-web-service

在这个命令中,参数-P表示将容器内的所有端口自动映射到主机上的随机端口。Docker会随机选择一个未被占用的主机端口并将容器内服务的端口映射到它上面。

  1. 查看映射端口

可以使用docker ps

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
이 명령 -p 8000:8080의 매개변수는 컨테이너의 8080 포트를 호스트의 8000포트. 마지막 매개변수 <code>my-web-service는 실행할 Docker 이미지를 지정합니다.

    다중 포트 매핑

    🎜컨테이너에서 실행 중인 서비스가 여러 포트를 노출해야 하는 경우 -p 매개변수를 여러 번 추가하여 매핑할 수 있습니다. 예를 들어, 컨테이너에서 실행 중인 서비스가 80808081 두 포트를 동시에 수신해야 한다고 가정하면 다음 명령을 사용하여 이 두 포트를 매핑할 수 있습니다. 포트: 🎜rrreee🎜 이 명령 -p 8000:8080의 매개변수는 컨테이너의 8080 포트를 호스트의 8000 포트. 매개변수 -p 8001:8081는 컨테이너의 8081 포트를 호스트의 8001 포트에 매핑하는 것을 의미합니다. . 🎜
      🎜로컬 IP에 바인딩🎜🎜🎜기본적으로 Docker 컨테이너에 매핑된 포트는 호스트의 모든 네트워크 카드 인터페이스에 바인딩됩니다. 특정 IP 주소에 대한 매핑을 지정하려면 -p 매개변수 형식을 사용할 수 있습니다. 🎜rrreee🎜여기서 IP는 매핑할 로컬 IP 주소를 나타냅니다. , HOST_PORT는 호스트의 포트 번호이고, CONTAINER_PORT는 컨테이너의 서비스가 실제로 수신 대기하는 포트 번호입니다. 🎜
        🎜UDP 포트 매핑🎜🎜🎜TCP 포트와 달리 UDP 포트는 -p 매개변수 형식을 사용하여 매핑되어야 합니다. 예를 들어 다음 명령을 통해 컨테이너의 UDP 포트 8080를 호스트의 UDP 포트 8000에 매핑할 수 있습니다. 🎜rrreee
          🎜임의 포트 매핑 🎜🎜🎜경우에 따라 컨테이너의 포트를 호스트의 고정 포트에 매핑할 필요가 없는 경우 -P 매개 변수를 사용하여 임의 포트 매핑을 지정할 수 있습니다. . 예를 들어 다음 명령을 통해 서비스의 포트를 시작하고 자동으로 매핑할 수 있습니다. 🎜rrreee🎜 이 명령에서 -P 매개변수는 컨테이너의 모든 포트를 임의의 포트에 자동으로 매핑한다는 의미입니다. 주인. Docker는 비어 있는 호스트 포트를 무작위로 선택하고 컨테이너의 서비스 포트를 해당 포트에 매핑합니다. 🎜
            🎜매핑된 포트 보기🎜🎜🎜docker ps 명령을 사용하여 실행 중인 컨테이너와 매핑된 포트를 볼 수 있습니다. 예를 들어 다음 명령을 사용하여 실행 중인 모든 컨테이너와 매핑된 포트를 나열할 수 있습니다. 🎜rrreee🎜 이 명령은 각 컨테이너의 ID, 이름 및 매핑된 포트 번호를 표시합니다. 🎜🎜Docker 포트 매핑은 양방향 데이터 전송을 위해 컨테이너와 호스트 사이에 네트워크 인터페이스를 생성하는 것입니다. 포트 매핑을 구성할 때 불필요한 문제를 피하기 위해 네트워크 보안 문제 및 포트 충돌에 주의해야 합니다. 이 기사가 독자들이 Docker의 포트 매핑과 네트워크 구성을 이해하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 Docker 컨테이너의 포트를 매핑하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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