Docker 포트 매핑과 컨테이너 연결
5638 단어 docker
1. 포트 매핑으로 컨테이너 접근
1.1 외부 액세스 컨테이너 적용
용기를 시작할 때 대응하는 파라미터를 지정하지 않으면 용기는 외부 네트워크에서 용기 내의 응용 및 서비스에 접근할 수 없습니다.용기에서 일부 네트워크 응용 프로그램을 실행합니다. 외부에서 이 응용 프로그램에 접근하려면 -P 또는 -p 파라미터를 통해 포트 맵을 지정할 수 있습니다.-P를 사용하면 포트가 임의로 매핑됩니다.
[root@study ~ 10:31:37]# docker run -dP training/webapp
[root@study ~ 10:32:13]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79bdebb04da9 training/webapp "python app.py" 27 seconds ago Up 26 seconds 0.0.0.0:32784->5000/tcp serene_yalow
32784 5000
32784 web 。
- p (소문자) 는 포트를 지정할 수 있으며, 지정한 포트에 용기만 연결할 수 있습니다.지원되는 형식은 다음과 같습니다.
IP:HostPort:ContainerPort |IP::ContainerPort |HostPort:ContainerPort
1.2 모든 인터페이스 주소 매핑
"HostPort:ContainerPort" , 5000 5000 。
[root@study ~ 10:32:16]# docker run -d -p 5000:5000 training/webapp
[root@study ~ 10:59:06]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b54e5ee69d5e training/webapp "python app.py" 4 seconds ago Up 2 seconds 0.0.0.0:5000->5000/tcp pedantic_hawking
1.3 지정된 주소의 지정된 포트에 매핑
"IP:HostPort:ContainerPort" , 。 localhost 127.0.0.1
[root@study ~ 11:01:14]# docker run -d -p 127.0.0.1:5000:5000 training/webapp
e1200e4bb26179e7a6d77a0b53f9c2d066b37e78994024722e707a482a1bf5bf
[root@study ~ 11:01:17]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e1200e4bb261 training/webapp "python app.py" 4 seconds ago Up 2 seconds 127.0.0.1:5000->5000/tcp blissful_hugle
1.4 지정된 주소의 모든 포트에 매핑
"IP::ContainerPort" , localhost 5000 。
[root@study ~ 11:01:20]# docker run -d -p 127.0.0.1::5000 training/webapp
dbca5fe5b4e7684060541b56e9d7522b7ca3227ba36d77c500eaed8bbdb8026c
[root@study ~ 11:02:38]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbca5fe5b4e7 training/webapp "python app.py" 4 seconds ago Up 2 seconds 127.0.0.1:32768->5000/tcp recursing_murdock
udp udp
[root@study ~ 11:02:41]# docker run -d -p 127.0.0.1::5000/udp training/webapp
5f09400160068e6fe852230b5f007d650c7274f40aafc2b960a5a1ebde9128f7
[root@study ~ 11:03:01]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5f0940016006 training/webapp "python app.py" 2 seconds ago Up 1 second 5000/tcp, 127.0.0.1:32768->5000/udp dreamy_hellman
1.5 매핑 포트 구성 보기
docker port 사용
[root@study ~ 11:05:45]# docker port `docker ps -lq`
5000/udp -> 127.0.0.1:32768
2. 상호 연결 메커니즘으로 편리한 상호 방문을 실현한다.
용기의 상호 연결은 여러 용기의 응용을 신속하게 상호작용하게 하는 방식이다.이것은 원본과 수신 용기 사이에 연결 관계를 만들고 수신 용기는 용기 이름을 통해 원본 용기에 빠르게 접근할 수 있으며 구체적인 IP 주소를 지정하지 않아도 된다.
2.1 사용자 정의 컨테이너 이름
연결 시스템은 용기의 이름에 따라 실행됩니다. 용기를 만들 때 기본적으로 하나의 이름을 분배하지만, 용기 이름을 사용자 정의해서 이 용기의 응용을 기억할 수 있습니다.
--name
[root@study ~ 11:12:29]# docker run -d -P --name web training/webapp
[root@study ~ 11:12:51]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a3c7a33c554 training/webapp "python app.py" 8 seconds ago Up 7 seconds 0.0.0.0:32785->5000/tcp web
[root@study ~ 11:13:09]# docker inspect -f "{{.Name}}" 1a3c7a33c554
/web
2.2 컨테이너 연결
사용-link 매개 변수는 용기 간의 안전한 상호작용을 할 수 있습니다 -link name:alias alias는 별명입니다
[root@study ~ 11:29:47]# docker run -d --name db training/postgres
web , db
[root@study ~ 11:37:26]# docker run -d -P --name web --link db:db training/webapp
[root@study ~ 11:46:37]# docker inspect -f "{{.HostConfig.Links}}" web
[/db:/web/db]
Docker는 연결된 두 용기 사이에 가상 채널을 만들고 포트를 호스트에 비추지 않는 것과 같다.이로써 데이터베이스 서비스 포트가 외부 네트워크에 노출되는 것을 피했다.
2.3 Dcoker는 두 가지 방법으로 컨테이너에 대한 연결 정보를 공개합니다.
env web , DB_ web db , 。
[root@study ~ 11:56:04]# docker exec web env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=dc43842d75b3
DB_PORT=tcp://172.17.0.4:5432
DB_PORT_5432_TCP=tcp://172.17.0.4:5432
DB_PORT_5432_TCP_ADDR=172.17.0.4
DB_PORT_5432_TCP_PORT=5432
DB_PORT_5432_TCP_PROTO=tcp
DB_NAME=/web/db
DB_ENV_PG_VERSION=9.3
HOME=/root
환경 변수를 제외하고 Docker는 부모 용기의/etc/hosts 파일에 host 정보를 추가합니다.
[root@study ~ 12:04:01]# docker exec web cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.4 db 28f8260deec3 #db
172.17.0.3 dc43842d75b3 #web id
웹 용기ping 테스트
[root@study ~ 12:04:53]# docker exec web ping db
PING db (172.17.0.4) 56(84) bytes of data.
64 bytes from db (172.17.0.4): icmp_seq=1 ttl=64 time=0.659 ms
64 bytes from db (172.17.0.4): icmp_seq=2 ttl=64 time=0.266 m
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swarm의 도커 비밀이 게시물에서는 Redis를 사용한 실제 시나리오 예제를 제공하여 사용 방법을 보여주고자 합니다. Docker 기술에 대한 기본 지식 Docker Swarm 오케스트레이터에 대한 기본 지식 "Docker Swarm ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.