컨테이너의 네트워크 통신
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:9000을 listen = 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 |