Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- AWS
- 사용자 계정 관리
- open ai
- 함수
- docker
- dockerfile
- AI챗봇
- 3티어 아키텍처
- maven
- nexus
- terraform
- Linux
- git hub
- 표준 라이브러리
- 클라우드
- go
- 변수
- Azure
- 프로세스 관리
- it기사
- aws사용자모임
- awskrug
- 애저
- python
- 리눅스
- AI
- 파이썬
- jenkins
- 명령어
- GIT
Archives
- Today
- Total
We are Architect
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 네트워크(9) 본문
* 컨테이너 네트워크와 포트 공개 방법
- 실행 중인 컨테이너는 IP 주소를 할당받아 컨테이너 간 통신이 가능하다.
- 또한 같은 컨테이너 네트워크를 통해서 애플리케이션과 DB를 연결하는 것도 가능하다.
* 컨테이너 네트워크
- 도커 허브에 등록된 많은 애플리케이션들이 docker network를 사용해 컨테이너를 연동할 것을 안내하고 있다.
컨테이너 네트워크 커맨드 | 설명 |
docker network ls | 컨테이너 네트워크를 리스트로 표시. |
docker network inspect | 네트워크명을 지정해서 자세한 내용을 표시. |
docker network create | 컨테이너 네트워크를 생성. |
docker network rm | 컨테이너 네트워크를 삭제. |
docker network connect | 컨테이너를 컨테이너 네트워크에 접속 |
docker network disconnect | 컨테이너를 컨테이너 네트워크에서 분리 |
* 새로운 컨테이너 네트워크 만들어 보기
- docker network create my-network 으로 생성.
- 폐쇄된 네트워크에 컨테이너 실행
- docker run -d --name webserver1 --network my-network nginx:latest 실행.
- 또 하나의 다른 컨테이너를 같은 네트워크에 생성
- docker run -it --rm --name net-tool --network my-network ubuntu:latest bash 실행
- docker run -it --rm --name net-tool --network my-network ubuntu:latest bash 실행
* 외부에 포트 공개하기
- docker run -d -p 8080:80 --name test-nginx-server nginx:latest 를 실행.
* 애플리케이션 컨테이너와 DB컨테이너 연동
- 사실 두개 이상의 컨테이너를 올리려면 docker-compose나 다른 툴들을 쓰는 게 더 관리하기도 좋고 효율적이기 때문에 단순하게 dockerfile괴 docker-compse.yml을 만들어서 AP컨테이너와 DB컨테이너를 연동시켜서 한번 해보겠다.
- index.php , dockerfile, docker-compose.yml 은 같은 폴더에 있어야 한다.
- index.php 파일 코드
<html> <head><title>PHP CONNECTION TEST</title></head> <body> <?php $servername = "db"; $database = "mysql"; $database = getenv('MYSQL_DATABASE'); $username = getenv('MYSQL_USER'); // 환경변수로 부터 유저 ID획득 $password = getenv('MYSQL_PASSWORD'); // 동일하게 비밀번호 취득 // MYSQL 서버에 접속하여 결과 표시 try { $dsn = "mysql:host=$servername;dbname=$database"; $conn = new PDO($dsn, $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); print("<p>접속에 성공했습니다!</p>"); } catch(PDOException $e) { print("<p>접속에 실패했습니다ㅠㅠ</p>"); echo $e->getMessage(); } $conn = null; print('<p>종료합니다.</p>'); ?> </body> </html>
- dockerfile 코드
# PHP 애플리케이션 컨테이너 FROM php:8.2-apache # 필요한 PHP 확장 설치 RUN apt-get update && apt-get install -y \ libonig-dev \ zlib1g-dev \ && docker-php-ext-install \ pdo_mysql \ mbstring # 애플리케이션 파일 복사 COPY index.php /var/www/html/
- docker-compose.yml 코드(cmd 창에서 모든 파일이 준비 되었으면 docker-compose up으로 활성화)
version: "3.8" services: app: build: context: . dockerfile: Dockerfile container_name: php-app ports: - "8080:80" environment: MYSQL_USER: testuser MYSQL_PASSWORD: testpassword MYSQL_DATABASE: testdb depends_on: - db networks: - app-network db: image: mysql:latest container_name: mysql-db restart: always environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_USER: testuser MYSQL_PASSWORD: testpassword MYSQL_DATABASE: testdb ports: - "3306:3306" networks: - app-network networks: app-network: driver: bridge
- 제대로 작동 되면 이렇게 뜬다.
- 같은 네트워크에 있기 때문에 두 컨테이너가 연동이 된 것이다.
'Docker' 카테고리의 다른 글
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 API(10) (2) | 2025.01.01 |
---|---|
Docker 이미지 용량 제한하기 (1) | 2024.12.31 |
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 개발-2(8) (2) | 2024.12.31 |
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 개발-1(7) (1) | 2024.12.30 |
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 다루기(6) (1) | 2024.12.30 |