먼저, 해당 프로젝트는 kawaii-beer의 프로젝트 중 발췌함.
NAS에 docker를 설치하여, 해당 컨테이너를 VPN을 통하여 패킷을 전송할 수 있게 할 생각이다.
그래서 찾아본 방법이 vpn컨테이너와 service 컨테이너를 따로 둬서 service 컨테이너에서 발생하는 모든 traffic은 vpn컨테이너를 통해서 통신할 수 있게 하는 방법을 생각했다.
예시로 사용한 Service는 minIO이다.
(망분리(?))
그래서 사용한 image는 다음과 같다
- VPN docker Image : dperson/openvpn-client
- minIO docker Image : minio/minio
하기에 docker-compose.yml파일의 내용을 작성한다.
version: '3.4'
services:
vpn:
container_name: 'vpn' #vpn container name 지정
image: dperson/openvpn-client
environment:
TZ: 'Asia/Seoul'
networks:
- default
read_only: true
tmpfs:
- /run
- /tmp
restart: unless-stopped
security_opt:
- label:disable
stdin_open: true
tty: true
volumes:
- /dev/net:/dev/net:z
- {*.ovpn_file_location}:/vpn
minio:
depends_on: #vpn container가 구동되야 실행이 되는 코드지만, docker-compose 버전에 따라 동작하지 않을 수 도 있음.
- vpn
image: minio/minio
container_name: 'minio'
environment:
TZ: 'Asia/Seoul'
MINIO_ROOT_USER: {USER}
MINIO_ROOT_PASSWORD: {USER_PASSWORD}
restart: unless-stopped
network_mode: container:vpn # 이 구문이 vpn컨테이너에 모든 traffic을 전송한다는 의미
stdin_open: true
tty: true
volumes:
- {MINIO}:/data
command: server --console-address ":9001" /data
위와 같은 내용으로 docker-compose.yml 파일을 만들면 된다.
추후에 자세히 설명하는걸로.