컨테이너의 네트워크 통신

컨테이너의 네트워크 통신

1. 컨테이너의 네트워크 통신

 - 컨테이너로 네트워크 통신하는 방법은 여러 방법이 존재

    - 컨테이너 → 외부

    - 컨테이너 → 내부

    - 컨테이너 → 호스트PC(본인의 Centos7)

    - 컨테이너 → 컨테이너

 

2. Case1. 컨테이너 → 외부

 - wget으로 통신 (컨테이너가 켜져 있으면 종료(docker stop app1))

 - #1. 컨테이너 실행 : docker run --name=app1 -d -p 8031:8099 --rm -v /home/user1/work/html:/web/site1/public -v /home/user1/work/conf/nginx:/etc/nginx nginx

 - #2. 컨테이너의 내부 쉘에 접속 : docker exec -it app1 bash

 - #3. 패키지 관리자 업데이트 : apt-get update

 - #4. wget 패키지 설치 : apt-get install wget

 - #5. wget으로 네이버에 요청해서 MainPage 다운로드 받아보기 : wget http://www.naver.com 

 

3. Case2. 컨테이너 → 내부

 - wget으로 통신 (컨테이너가 켜져 있으면 종료(docker stop app1))

 - #1. 컨테이너 실행 : docker run --name=app1 -d -p 8031:8099 --rm -v /home/user1/work/html:/web/site1/public -v /home/user1/work/conf/nginx:/etc/nginx nginx

 - #2. 컨테이너의 내부 쉘에 접속 : docker exec -it app1 bash

 - #3. 패키지 관리자 업데이트wget 패키지 설치 (위에 참고)

 - #4. 자신의 local로 웹 요청 보내기

    - wget 127.0.0.1 or wget localhost

        - 컨테이너의 nginx가 바라보는 index.html이 다운로드 완료 되는지 확인

    - wget 127.0.0.1:8099 or wget localhost:8099

        - 8099로 세팅한 폴더의 index.html이 다운로드 완료 되는지 확인

 

4. Case3. 컨테이너 → 호스트PC (본인의 Centos)

 - nginx 컨테이너와 호스트PC의 php-fpm과 통신 (컨테이너가 켜져 있으면 종료(docker stop app1))

 - #1. 설정 작업 폴더(/home/user1/work/conf/nginx/)의 vhost.conf 파일에 php-fpm 관련 설정 추가

    - vim /home/user1/work/conf/nginx/conf.d/vhost.conf 입력 후, 다음과 같이 작성

    ※ 여기서 $documentRoot의 경로php-fpm이 바라보고 있는 경로를 의미

        - php-fpm 호스트PC의 서비스이므로 이 서비스가 바라보는 파일시스템은 Centos7의 파일시스템

server {
    listen 8099;
    server_name project1;

    location / {
            root /web/site1/public;
            index index.html;
    }
    set $documentRoot /web/site1/public;

    index index.php index.html index.html;
    root $documentRoot;

    location ~ \.php$ {
            root $documentRoot;
            fastcgi_pass 본인의 IP:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $documentRoot/$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
            fastcgi_read_timeout 600;
    }
}

 

 - #2. test.php 내용 작성 (hello my  world!!!) : vim /web/site1/public/test.php

 - #3. php-fpm 설정 변경 : vim /etc/php-fpm.d/www.conf (다음과 같은 두가지 값을 찾아서 수정)

    - listen = 127.0.0.1:9000listen = 0.0.0.0:9000

    - listen.allowed_clients = 127.0.0.1의 앞에 ;를 붙여 주석처리 (php-fpm를 외부에서 접속 가능하게 하는 세팅)

 - #4. 호스트PC(Centos7)의 php-fpm 서비스 재시작 : sudo systemctl restart php-fpm

 - #5. nginx 컨테이너 재시작

    - docker stop app1

    - docker run --name=app1 -d -p 8031:8099 --rm -v /home/user1/work/html:/web/site1/public -v /home/user1/work/conf/nginx:/etc/nginx nginx

 - #6. 브라우저에서 test.php를 열어서 확인 (myserver:8031/test.php)

 

4. 컨테이너 → 컨테이너

 - nginx 컨테이너와 php-fpm 컨테이너와 통신(컨테이너가 켜져있다면 종료 (docker stop app1))

 - php-fpm 도커라이즈

    - #1. 이미지 다운로드 : docker pull bitnami/php-fpm 

    - #2. 컨테이너 실행 : docker run -it --name phpfpm -d -p 9001:9000 -v /work/scripts:/app bitnami/php-fpm

    - #3. nginx의 설정 파일에서 nginx가 php-fpm 컨테이너를 바라보게 수정

        - vim /home/user1/work/conf/nginx/conf.d/vhost.conf 입력 후, 다음과 같이 수정

server {
    listen 8099;
    server_name project1;

    location / {
            root /web/site1/public;
            index index.html;
    }
    set $documentRoot /web/site1/public;

    index index.php index.html index.html;
    root $documentRoot;

    location ~ \.php$ {
            root $documentRoot;
            fastcgi_pass 172.17.0.1:9001;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $documentRoot/$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
            fastcgi_read_timeout 600;
    }
}

 

    - #4. 호스트 PC의 php-fpm 서비스 내리기 : sudo systemctl stop php-fpm

    - #5. 브라우저에서 동작 확인

'Back-End Study > Linux' 카테고리의 다른 글

도커 컴포즈를 이용해 컨테이너 관리  (0) 2022.10.06
mariadb 컨테이너 실행  (0) 2022.10.06
컨테이너의 nginx 설정과 root 폴더 관리하기  (0) 2022.09.29
도커 마운트 볼륨  (0) 2022.09.29
도커 볼륨  (0) 2022.09.29