Docker 학습노트 ④ 컨테이너 간 통신

7583 단어 Docker

개시하다


학습 노트
- Docker 학습노트 ① Docker 설치부터 Hello World
- Docker 학습노트 ② Docker 이미지 만들기
- Docker 학습노트 만들기 ③ Docker file Docker 이미지 만들기부터 시작 컨테이너까지
- Docker 학습노트 ④ 컨테이너 간 통신← 여기
- Docker 학습노트 ⑤ 네트워크 통신

할 일


컨테이너 간의 통신을 시도해 보다.
컨테이너 간의 통신 방법은 두 가지가 있다
- 컨테이너 이름으로 연결할 Docker 네트워크 만들기
- "--link"옵션 사용
"--link"옵션이 삭제될 수 있으므로 본 편에서는 사용하지 않음

작은 지식


Docker를 설치한 후 자동으로 3개의 네트워크 만들기
네트워크 확인: docker network lsdocker 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/Dockerfile
FROM nginx:latest

RUN rm -f /etc/nginx/conf.d/default.conf
COPY ./files/tomcat.conf /etc/nginx/conf.d/
nginx/files/tomcat.conf
server {
    location /tomcat/ {
        proxy_pass    http://tomcat-1:8080/;
    }
}
tomcat/Dockerfile
FROM 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/

좋은 웹페이지 즐겨찾기