Docker 학습노트 ④ 컨테이너 간 통신
7583 단어 Docker
개시하다
학습 노트
- Docker 학습노트 ① Docker 설치부터 Hello World
- Docker 학습노트 ② Docker 이미지 만들기
- Docker 학습노트 만들기 ③ Docker file Docker 이미지 만들기부터 시작 컨테이너까지
- Docker 학습노트 ④ 컨테이너 간 통신← 여기
- Docker 학습노트 ⑤ 네트워크 통신
할 일
컨테이너 간의 통신을 시도해 보다.
컨테이너 간의 통신 방법은 두 가지가 있다
- 컨테이너 이름으로 연결할 Docker 네트워크 만들기
- "--link"옵션 사용
"--link"옵션이 삭제될 수 있으므로 본 편에서는 사용하지 않음
작은 지식
Docker를 설치한 후 자동으로 3개의 네트워크 만들기
네트워크 확인:
docker network ls
docker 0으로 표시되는 브리지 네트워크docker run-net=<네트워크 이름>을 지정하지 않으면 docker0입니다.
호스트 ifconfig에서 docker 0 정보를 확인할 수 있습니다
컨테이너 간 통신:Docker 네트워크
Docker 네트워크 만들기
호스트
$ docker network create wordpress-network
네트워크 시작 컨테이너 지정호스트
$ docker run --name mysql --network wordpress-network -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7
$ docker run --name wordpress --network wordpress-network -e WORDPRESS_DB_PASSWORD=my-secret-pw -p 8080:80 -d wordpress
· DB와 웹 서버를 만드는 컨테이너· 동일한 네트워크 지정
wordpress-network
・MySQL의 컨테이너 이름은 "mysql"↑ WordPress의 Docker 이미지는 MySQL과 연결된 지정한 호스트 이름이'mysql'인 것
→이렇게 하면WordPress용기(wordpress)에서 MySQL용기(mysql)로 통신할 수 있다
포트 지정 고려 사항
호스트
$ docker run --name mysql --network wordpress-network -p 13306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7
그림으로 보면 이런 느낌일 거예요.Docker 이미지를 사용하여 컨테이너 간 통신
다음에는 이런 거 해볼게요.
※ Docker 이미지로 컨테이너 간 통신을 위해서는 정의 파일 등에 컨테이너 이름을 연결 목적지로 지정해야 합니다
[centos@ip-172-31-0-62 ~]$ mkdir nginx
[centos@ip-172-31-0-62 ~]$ touch nginx/Dockerfile
[centos@ip-172-31-0-62 ~]$ mkdir nginx/files
[centos@ip-172-31-0-62 ~]$ touch nginx/files/tomcat.conf
[centos@ip-172-31-0-62 ~]$ mkdir tomcat
[centos@ip-172-31-0-62 ~]$ touch tomcat/Dockerfile
[centos@ip-172-31-0-62 ~]$ mkdir tomcat/files
[centos@ip-172-31-0-62 ~]$ cd tomcat/files
[centos@ip-172-31-0-62 ~]$ wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
nginx/DockerfileFROM nginx:latest
RUN rm -f /etc/nginx/conf.d/default.conf
COPY ./files/tomcat.conf /etc/nginx/conf.d/
nginx/files/tomcat.confserver {
location /tomcat/ {
proxy_pass http://tomcat-1:8080/;
}
}
tomcat/DockerfileFROM centos:latest
RUN yum install -y java
ADD files/apache-tomcat-9.0.31.tar.gz /opt/
CMD [ "/opt/apache-tomcat-9.0.31/bin/catalina.sh", "run" ]
호스트[centos@ip-172-31-0-62 ~]$ tree
.
├── nginx
│ ├── Dockerfile
│ └── files
│ └── tomcat.conf
└── tomcat
├── Dockerfile
└── files
└── apache-tomcat-9.0.31.tar.gz
Nginx 이미지, Tomcat 이미지 제작호스트
$ cd ${SOME_DIR}/nginx
$ docker build -t nginx-tomcat:1 .
$ cd ${SOME_DIR}/tomcat
$ docker build -t tomcat:1 .
호스트[centos@ip-172-31-0-62 tomcat]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-tomcat 1 1e137080691f 14 minutes ago 127MB
tomcat 1 5ad4b2b915cf 3 hours ago 523MB
・
・
Docker 네트워크 제작, 컨테이너 시작호스트
$ docker network create tomcat-network
$ docker run --name tomcat-1 --network tomcat-network -d tomcat:1
$ docker run --name nginx-tomcat-1 --network tomcat-network -p 10080:80 -d nginx-tomcat:1
호스트[centos@ip-172-31-0-62 tomcat]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab41de63e013 nginx-tomcat:1 "nginx -g 'daemon of…" 11 seconds ago Up 10 seconds 0.0.0.0:10080->80/tcp nginx-tomcat-1
4949f5632a5a tomcat:1 "/opt/apache-tomcat-…" 20 seconds ago Up 19 seconds tomcat-1
호스트에서 다음 사이트를 열고,nginx를 통해tomcat의 사이트를 엽니다http://localhost:10080/tomcat/
Reference
이 문제에 관하여(Docker 학습노트 ④ 컨테이너 간 통신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suo-takefumi/items/bb42f6bd17707de354b9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)