티스토리 뷰
목차
Docker 네트워크 및 볼륨 설정 가이드: 컨테이너 통신과 데이터 영속성 관리
Docker 네트워크와 볼륨을 이해하고 설정하는 것은 컨테이너 간 통신과 데이터 영속성 관리에 필수적입니다. 이 가이드에서는 Docker Compose를 사용하여 Apache 웹 서버와 MySQL 데이터베이스 환경에서 네트워크와 볼륨을 설정하는 방법을 알아봅니다.
1. Docker 네트워크 이해하기
Docker 네트워크는 컨테이너 간의 통신을 가능하게 하며, 주로 사용되는 네트워크 종류는 다음과 같습니다:
브리지 네트워크 (Bridge Network)
기본 네트워크 타입으로, 같은 네트워크에 속한 컨테이너 간 통신을 지원합니다.
호스트 네트워크 (Host Network)
컨테이너가 호스트의 네트워크 스택을 공유합니다. 로컬 네트워크 테스트에 유용합니다.
오버레이 네트워크 (Overlay Network)
여러 호스트에 걸쳐 있는 컨테이너 간 통신을 지원하며, 클러스터 환경에서 주로 사용됩니다.
2. Docker 볼륨 이해하기
Docker 볼륨을 사용하면 컨테이너의 데이터를 외부에 저장하여 컨테이너 삭제 후에도 데이터를 유지할 수 있습니다. 데이터 영속성을 유지하거나 여러 컨테이너 간에 데이터를 공유할 때 유용합니다.
익명 볼륨: 자동 생성된 이름으로 저장.
명명된 볼륨: 사용자 지정 이름으로 데이터 저장.
호스트 볼륨: 호스트 시스템의 특정 디렉토리와 데이터를 공유.
3. Docker 네트워크와 볼륨 설정하기
다음은 Docker Compose를 사용해 네트워크와 볼륨을 설정하는 방법입니다.
3.1 프로젝트 구조
apache-mysql-docker/
│
├── Dockerfile # Apache Dockerfile
├── db/ # MySQL 설정 디렉토리
│ └── Dockerfile # MySQL Dockerfile
├── html/ # Apache 웹서버 HTML 파일
│ └── index.html
└── docker-compose.yml # Docker Compose 파일
3.2 Docker Compose 설정
docker-compose.yml 파일에서 네트워크와 볼륨을 정의합니다.
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
depends_on:
- db
networks:
- webnet
volumes:
- webdata:/usr/local/apache2/htdocs/
db:
build: ./db
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: myuser_password
ports:
- "3306:3306"
networks:
- webnet
volumes:
- dbdata:/var/lib/mysql
networks:
webnet:
driver: bridge
volumes:
webdata:
dbdata:
4. Docker Compose로 컨테이너 실행 및 확인
- 컨테이너 실행:
- docker-compose up --build
- 웹 서버 확인:
브라우저에서 <http://localhost:8080에> 접속해 Apache 서버 상태를 확인합니다. - Docker 네트워크 및 볼륨 확인:
- docker network ls docker volume ls
5. MySQL 데이터 영속성 확인
Apache 컨테이너에서 MySQL 데이터베이스에 접속하여 데이터가 유지되는지 확인할 수 있습니다.
docker exec -it apache-mysql-docker_web_1 /bin/bash
mysql -h db -u myuser -pmyuser_password mydb
테이블을 생성하고 데이터를 추가한 후, 컨테이너를 재시작해 데이터가 유지되는지 확인합니다.
CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(255));
INSERT INTO test (name) VALUES ('Docker Test');
6. Docker 네트워크 및 볼륨 관리
- 네트워크 제거:
- docker network rm apache-mysql-docker_webnet
- 볼륨 제거:
- docker volume rm apache-mysql-docker_webdata apache-mysql-docker_dbdata
- 모든 컨테이너 종료 및 정리:
- docker-compose down --volumes --remove-orphans
결론
Docker 네트워크와 볼륨을 사용해 컨테이너 간의 통신과 데이터 영속성을 관리하는 방법을 이해하는 것은 매우 중요합니다. 이 가이드를 통해 Apache와 MySQL 환경에서 네트워크와 볼륨을 설정하고 관리하는 방법을 익히고, 이를 기반으로 더 복잡한 환경을 구성할 수 있습니다.
이 글은 Docker 네트워크 및 볼륨 설정을 위한 실습 과정에 대한 자세한 설명을 담고 있으며, Google SEO 최적화에 맞춰 작성되었습니다. Docker 네트워크, Docker 볼륨, 컨테이너 데이터 영속성 등의 키워드를 포함하여 검색 엔진에서 더 잘 노출되도록 설계되었습니다.