1. 컨테이너 파일 관리 (docker cp)
호스트 OS와 컨테이너 내부 간에 파일을 자유롭게 주고받는 방법임. vi 편집기가 없는 경량 이미지(nginx, httpd 등)에서 설정을 수정할 때 유용함.
- 호스트 → 컨테이너: docker cp index.html n1:/usr/share/nginx/html/index.html
- 컨테이너 → 호스트: docker cp n1:/etc/nginx/nginx.conf ./nginx_backup.conf
2. HAProxy를 이용한 도커 컨테이너 로드밸런싱
하나의 호스트(9-1)에서 돌아가는 여러 개의 컨테이너(httpd 2대, nginx 2대)를 외부 로드밸런서(9-4)에서 하나로 묶어 서비스하는 실무 구성임.
- HAProxy 설정 (/etc/haproxy/haproxy.cfg):
- 서버 9-1의 공인 IP와 컨테이너별로 포트 포워딩된 포트(60080~60380)를 연결함.
Bashserver w1 10.0.0.11:60080 check server w2 10.0.0.11:60180 check server w3 10.0.0.11:60280 check server w4 10.0.0.11:60380 check
3. 이미지 관리 기술: Save vs Export
이미지를 파일(.tar)로 만들어 다른 서버로 옮길 때 사용하는 두 가지 방식의 차이점을 명확히 알아야 함.
| 구분 | save / load | export / import |
| 대상 | 이미지 (Image) | 컨테이너 (Container) |
| 메타데이터 | 레이어, 환경변수, CMD 등 보존 | 파일 시스템만 추출 (환경변수 등 삭제) |
| 용도 | 이미지 전체 이식 | 컨테이너의 특정 시점 스냅샷 추출 |
| 특이사항 | 용량이 상대적으로 큼 | import 시 --change 옵션으로 환경변수 재설정 필요 |
export된 파일을 import 할 때 주의사항
환경변수가 날아가기 때문에 아래와 같이 실행 명령(CMD)과 경로(Env PATH)를 수동으로 넣어줘야 정상 작동함.
Bash
docker import --change 'CMD ["httpd-foreground"]' --change 'Env PATH=...' 4.tar httpd:1.0
4. 도커 네트워크 (Docker Network) 심화
컨테이너 간의 통신 대역을 분리하거나 호스트의 네트워크를 직접 사용하는 방법임.
- 사용자 정의 네트워크 생성:
- docker network create --subnet 192.168.0.0/24 --gateway 192.168.0.254 babo
- 네트워크 연결 및 끊기:
- docker network connect babo a1: 실행 중인 컨테이너에 새로운 네트워크 대역 추가 (NIC 추가 개념).
- docker network disconnect babo a1: 연결 해제.
- Host 네트워크 모드:
- --net host: 별도의 포트 포워딩 없이 호스트의 포트를 그대로 사용함. 보안상 주의가 필요하지만 성능은 가장 좋음.
5. 실무 응용: WordPress + MySQL 컨테이너 연동
환경변수(-e)를 사용하여 컨테이너 실행 시점에 DB 접속 정보를 주입함.
- MySQL 컨테이너: 루트 패스워드 설정 및 실행.
- docker run -itd -e MYSQL_ROOT_PASSWORD=It12345! --name m2 mysql:8.0
- WordPress 컨테이너: DB 호스트 IP와 계정 정보를 환경변수로 전달.
- docker run -itd -p 65080:80 -e WORDPRESS_DB_HOST=[DB_IP] -e WORDPRESS_DB_USER=root ... wordpress
[tip]
- docker commit: 현재 컨테이너의 변경 사항을 새 이미지로 저장할 때 사용함. 태그를 누락하지 않도록 주의할 것.
- docker save -o all.tar [이미지들...]: 여러 개의 이미지를 하나의 파일로 묶어 효율적으로 전송 가능함.
- 컨테이너 일괄 삭제: docker rm -f $(docker ps -aq)
반응형
'IT > Linux' 카테고리의 다른 글
| [Linux] Docker 기초: 컨테이너 가상화 설치 및 실무 명령어 정리 (0) | 2026.03.10 |
|---|---|
| [Linux] HAProxy + WordPress + MySQL 3-Tier 아키텍처 구축 (1) | 2026.03.10 |
| [Linux] NAT Gateway 및 HAProxy 로드밸런싱 구성 가이드 (0) | 2026.03.10 |
| [Linux] SSH Key 인증 방식 및 접속 가이드 (0) | 2026.03.10 |
| [Linux] NFS(Network File System) 설정 및 윈도우 연결 가이드 (0) | 2026.03.10 |