본문 바로가기
Infra/Docker

[Docker] Docker 네트워킹

by 깨준 2024. 9. 2.

1. 사용자 정의 네트워크를 사용하는 방법

설명:

  • Docker에서 사용자 정의 네트워크를 생성하여 여러 컨테이너를 동일한 네트워크에 배치하는 방법입니다. 이를 통해 컨테이너 간의 통신을 쉽게 설정할 수 있다.
  • 이 방법은 특히 여러 컨테이너가 서로 상호작용해야 하는 환경에서 유용하다.

단계:

 

1. 사용자 정의 네트워크 생성:

sudo docker network create my_network

 

2. MySQL 컨테이너 실행:

sudo docker run -d --network my_network --name mysql_container -e MYSQL_ROOT_PASSWORD=root mysql:latest
3. 애플리케이션 컨테이너 실행:
sudo docker run -d --network my_network -p 5002:5002 app
4. 애플리케이션의 데이터베이스 연결 설정:
db_config = { 'host': 'mysql_container',
		'user': 'root',
                'password':'root',
                'database': 'your_database' }

 

장점:

  • 컨테이너 간의 이름 기반 통신이 가능하여 설정이 간단하고, 네트워크 격리를 통해 보안이 강화된다.

단점:

  • Docker 네트워크에 대한 이해가 필요합니다.

2. 호스트의 IP 주소를 사용하는 방법

설명:

  • MySQL 서버가 호스트 시스템에서 실행 중일 때, 애플리케이션이 호스트의 IP 주소를 사용하여 MySQL 서버와 연결하는 방법이다.

단계:

 

1.호스트의 IP 주소 확인:

hostname -I
2. 애플리케이션의 데이터베이스 연결 설정:
db_config = { 'host': '<호스트_IP>',
		'user': 'root',
                'password': 'root',
                'database': 'your_database' }

 

장점:

  • Docker와 Docker 외부의 서비스 간 연결이 간단하다.

단점:

  • 호스트 IP 주소가 변경되면 설정을 다시 해야 한다.

3. Docker Compose 사용

설명:

  • Docker Compose를 사용하여 여러 컨테이너를 정의하고 관리하는 방법입니다. docker-compose.yml 파일을 통해 서비스 설정을 코드로 정의할 수 있다.

단계:

1. docker-compose.yml 파일 작성:

version: '3'
services:
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: root
    networks:
      - my_network

  app:
    image: app
    ports:
      - "5002:5002"
    networks:
      - my_network
    depends_on:
      - db

networks:
  my_network:

 

2.Docker Compose로 컨테이너 실행:

sudo docker-compose up -d

 

3.애플리케이션에서 MySQL에 연결할 때 db를 호스트 이름으로 사용:

db_config = { 'host': 'db',
		'user': 'root',
                'password': 'root',
                'database': 'your_database' }

 

장점:

  • 모든 서비스 설정을 한 파일로 관리할 수 있어 일관성이 높다.
  • 서비스 간 의존성을 명확히 할 수 있으며, 스케일링과 서비스 관리가 용이하다.

단점:

  • Docker Compose에 대한 기본적인 이해가 필요하다.

처음 Docker를 사용할 때 '호스트 IP를 사용하는 방식'으로 사용했는데 계속 오류가 떠서 해결방법을 찾다가 Docker 네트워킹 방식이 여러 가지 있다는 것을 알게 되었다. 그중에 docker-compose 방식을 많이 사용한다고 하여, docker-compose 방식을 사용하여 오류를 조금씩 수정하여 프로젝트를 진행하였다.

'Infra > Docker' 카테고리의 다른 글

[Docker] 도커 한글 깨짐(sql)  (0) 2024.09.02