[docker] VPN을 통하여 컨테이너 통신

먼저, 해당 프로젝트는 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 파일을 만들면 된다.

추후에 자세히 설명하는걸로.

Show Comments