SW/ 개발팁 / 추천프로그램, 꿀팁 공유
  • 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
잡담

(수정) 도커 네트워크 오해에 의한 뻘짓 / Joplin 서버 구축 뻘짓+ 도커 잡담

정전리 377

3

11

도커 설치해본건 별로 없지만 

Joplin server 구축하면서 Troble shooting한 썰이나 한번 기록해봅니다. 

NAS와 네트워크 관련으로 입문하고 공부하면서 설치한거라 이상하게 오래걸렸습니다.  

그래서 정상 접속이 된 순간에는  개인적으로 소소하게 감격했습니다. 어

일단 제가 사용중인  yaml 코드는 이렇습니다. 

version: '3'

services:
    db:
        image: postgres:16
        volumes:
            - ./joplinserver:/var/lib/postgresql/data   
        restart: unless-stopped
        environment:
            - POSTGRES_PASSWORD=joplin
            - POSTGRES_USER=joplin
            - POSTGRES_DB=joplin
            - TZ=Asia/Seoul   
            
    app:
        image: joplin/server:latest
        env_file: env.env
        depends_on:
            - db 
        ports:
            - "22300:22300"
        restart: unless-stopped
        environment:
            - APP_PORT=22300
            - APP_BASE_URL=  #도메인 수정
            - DB_CLIENT=pg
            - MAX_TIME_DRIFT=0
            - POSTGRES_PASSWORD=joplin
            - POSTGRES_DATABASE=joplin
            - POSTGRES_USER=joplin
            - POSTGRES_HOST=db
            - TZ=Asia/Seoul  

워낙 yaml 파일이 흔해서 대부분 쉽게 하시겠지만 은근 자잘한 실수 구간들이 존재해서 

(중간의 env.env는 이메일 설정 넣은 파일입니다. )

 

1 NTP 오류

 joplin 설치하고 로그에서 에러로 NTP timeout.....등등이 걸리는 경우가 있는데 

이러면 app environment에 'MAX_TIME_DRIFT=0' 추가하면 됩니다. 이유는 잘 모릅니다. 암튼 작동을 해서 ㅋㅋ

 

2 postgress 버전 

예전 자료들 보면 16버전에서 문제가 생기는 경우들이 있었는데 

최근에는 15로 지정하면 호환불가? 같은 에러를 뿜는거 같습니다. 

현재 기준 최신 버젼으로 새로 구축한다면 그냥 16버전 사용하시는거 추천드립니다.  

 

3 DB 포트 문제 

정상작동하면 상관이 없는데 DB 포트설정 때문에 문제가 생기는 경우가 가끔있더라고요 

서버포럼 댓글에서 힌트를 얻었는데 

DB 포트 정의가 없으면 기본 포트로 자동으로 연결을 하기에 특별한 이유가 없으면

그냥 DB 포트설정없이 쓰는게 더 깔끔하더군요. 

 

4. 도커 네트워크 설정 

이거는 2가지가 문제였는데 

 

4-1 쓸데없는 네트워크 설정 문제 

이거도 3번처럼 다른 이유가 없으면 그냥 네트워크 관련 옵션 다빼고 올리는 것을 추천합니다. 

db랑 app간의 연결 정의만 있으면 네트워크 설정은 자동으로 되더군요. 

이거까지는 괜찮았습니다. 

 

4-2 브릿지 모드의 방화벽 걸림 네트워크 설정 문제

1~4-1 까지의 문제를 전부 해결했는데 계속 아래 에러가 뜨면서 DB와 app이 상봉을 못하는겁니다. 야!!!!

  • "[error] db: Timeout trying to connect to database: KnexTimeoutError: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?"

뭐지? 뭐지? 하다가 

인터넷에서 도커 공부하면서 본 이 사진이랑 

 

도커간의 NAS 내부에서의 네트워크 연결도 방화벽에 걸린다는 사실이 생각나서 

DB 컨테이너와 app 컨테이너, 공통의 게이트웨이의 가상 IP를 찾아서 방화벽 예외를 만들어주니까 드디어 정상 접속이 가능했습니다. 

 

아직 공부가 부족해서 기기 내부의 가상 네트워크 연결도 방화벽에 걸린다는 생각을 별로 못했던... ㅋ 

2024/04/09 수정 

블로그의 내용이 부정확한 정보가 있다는 의견이 댓글에서 있어서 삭제하였습니다. 

 

저는 4-2의 문제를 방화벽에 의한 IP 차단 해제로 해결을 했습니다. 

하지만 글 작성 이후 댓글의 내용을 종합해보면

정상적으로 도커 네트워크 설정시 이런 방식으로 해결할 필요가 없는데 

억지로 도커 게이트웨이간의 연결을 가능하게 한 상황이라는 결론에 도달했고 사실은 다른 문제가 있었던걸로 생각됩니다. 

 

최근에 이사를 하면서 NAS 시스템을 재구성해야하는 대실수를 저지른지라 

원래 궁금했던 Joplin Cloud도 한번 해보고 (14일 무료 찍먹중입니다.)

재구성 하면서 제가 실수한 다른 내용이 없었는지 확인해보겠습니다.  

 

암튼 Joplin Sever를 이렇게 구축을 성공하면서 

webdav를 사용하는 마지막 서비스가 사라져서 webdav서버가 내려갑니다. ㅎㅎ

 

 

 

 

도커  이것저것 설치해서 사용해보니 실질적으로 사용할 도커는 3개정도로 축약되더군요. 

Joplin

Vaultwarden 

Syncthing 

나머지는 대체가 가능하거나 딱히 사용할 이유가 없어서 설치만해보고 바이바이 했습니다. 

 

Syncthing은 설치시 뭔가 막혀서 짜증이 나다가 네트워크 host모드 + root권한 주는걸로 설정하니까 아무튼 정상작동해서 

그냥 이렇게 사용중이고 

Vaultwarden은 인터넷에서 찾은 설치법이 1번에 성공해서 그냥 사용중입니다. 

NAS에서 사용하는 서비스중에 제일 만족스럽네요. 바로 구글 비번 랜덤으로 바꾸고나니 편안~

마지막 Joplin 설치 성공하고 이제 NAS 1차 구축은 끝났습니다. 

나중에 필요한 서비스 있으면 그때 다시 만지작 하는걸로

 

 

 

신고공유스크랩
11
profile image 1등
수라 2024.04.05. 09:46
도커만 접속할일이 아직은 없어서 몰랐는데 기본적으론 연결이 완전히 밖으로 나갔다가 들어오는 식인가 보네요 방화벽에 걸리는거 보면
정전리 글쓴이 2024.04.05. 16:06
수라
냥냥트래기님의 의견듣고 다시 생각해보니 글의 게이트웨이 내용 출처의
"컨테이너는 서로 직접 연결하는 것이 아니라 이처럼 Gateway 를 통해서 통신한다. 또한 host와 컨테이너간의 통신도 Gateway를 거친다. 컨테이너들이 서로 다른 주소를 사용하고 있음에도 port가 겹치면 안되는 이유가 여기에 있다. 또한 외부에서 컨테이너에 접근할 때 컨테이너의 주소가 아닌 host의 주소를 사용하는 이유도 여기에 있다. 외부에서 컨테이너에 직접 접근은 불가능하다. "
여기서 걸려서 그런건가?? 하는 생각도 들긴합니다.

도커는 NAS 사면서 처음 입문한거라 아직 네트워크 구조는 잘 모르겠네요.
2등
냥냥트래기 2024.04.05. 11:12
음~~저는 DB는 별개로 구성하고 나머지 컨테이너에서 별도 구성된 DB 로 연결해서 쓰는데 방화벽애 걸리지는 않던데요

네트워크는 전부 묶어서 쓰고 있습니다.
정전리 글쓴이 2024.04.05. 16:02
냥냥트래기

아 그런가요? DB를 컨테이너로 따로 올리시고 그 데이터베이스를 공유하시는건가요? 
일단 글의 내용처럼 DB랑 app이 통신이 안되다가 도커 간의 방화벽 허용을 설정하니 통신이 가능해서 그렇게 예상한거거든요.

profile image 3등
NavyStack 2024.04.05. 20:20

1. 네트워크 선언 없이 포트만 할당하면 기본적으로 브리지 모드로 작동합니다. 그래서 같은 포트 할당이 안됩니다.
게이트 웨이를 다르게 설정하면 포트가 같아도 문제가 없구요.

방화벽에 걸린다면 외부로 돌아서 접속하는거 같네요.

 

2. 엔진엑스는 정적파일을 빠르게 제공하기도 하고 같은 네트워크로 묶으면 컨테이너간 통신도 가능한데, 처음 접하시면 낯설어 어렵게 느껴지실것 같네요.

3. 처음 하시면 Nginx Proxy Manager와 같은거 사용해 보시고, 조금 더 깊게 들어가면 Traefik과 같은 컨테이너 사용하셔도 좋습니다.

4. NPM도 만능 열쇠는 아니라서 try_files 없이 바로 리버스 프록시 때리면 속도가 더 늘어지기도 하구요.

필요하다고 생각되면 한 번 찾아보세요 ^^

정전리 글쓴이 2024.04.05. 21:24
NavyStack
도커 게이트웨이간 통신이 실제로 외부망을 통해서 하나요? 아니면 제 설정이 문제가 있어서 그런걸까요
말캉 2024.04.09. 07:36
정전리

오히려 블로그 설명을 보면 헷갈리기 더 쉽게 되어있는데요.

(저 블로거가 네트워크에 대한 이해가 없는 것 같습니다.)

포트가 겹치면 안되는 이유가 컨테이너 통신이 게이트웨이를 타서 그런게 아니라, 도커안에서 컨테이너가 몇개가 돌던 도커 밖에서는 IP가 하나로 보이고, 이 하나의 IP로 모든 도커의 통신이 이뤄지기 때문에 겹치면 안된다는거죠.

 

간단하게 생각하시면 됩니다. 도커는 기본값으로 각각의 컨테이너에 대해 각각의 게이트웨이가 설정되게 되어있고, 이 게이트웨이간 통신은 기본값이 차단되어 있습니다.(이 통신이 가능하게 하는게 기본 브릿지 네트워크입니다.)

 

이를 해결하는 방법은 그냥 원하는 도커 컨테이너 네트워크 그룹에 속하게 해버리면 됩니다.

docker.png.jpg

 

이건 포테이너로 보여드리는건데, 시놀로지던 뭐던 도커 관리 툴에보면 이렇게 join network라고 해서 타 컨테이너에 접속하게 만들 수 있습니다. 굳이 방화벽건들여서 도커간 통신을 하게 할 필요 없이요.

정전리 글쓴이 2024.04.09. 08:55
말캉

이런 제가 교재를 잘못 선택했군요. 가르침 감사합니다. 본 글의 내용은 부적합하므로 수정하도록 하겠습니다.

근데 DB와 app이 처음부터 같은 게이트웨이 IP로 연결 되어있었어도 따로 설정을 해야할까요? 

일단 설정에서 확인했을때에는 둘다 브리지 설정에 같은 게이트웨이로 연결이 되어있었거든요. 

말캉 2024.04.11. 14:26
정전리
해당 도커의 네트워크가 어떻게 굴러가고 있는지를 모르긴 합니다만... 같은 브릿지에 같은 게이트웨이면 원래 설정이 따로 필요없는 것이 맞습니다.
하인츠 2024.04.05. 22:55
어제 하드 사서 저도 오늘 joplin 다시 깔았는데, 오랜만에 하니깐 삽질 좀 했는데 뭔가 반갑네요.
삽질 다 하고 와서 보니 이런 글이 있네요.
정전리 글쓴이 2024.04.05. 23:28
하인츠
도커 동지시군요. 저는 처음이라 더 뻘짓을 많이한거 같기도 하고요 ㅎㅎ

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story
분류 제목 글쓴이 날짜 조회 추천
정보 Gemini API 사용을 위한 API KEY 발급받기 1 달소 4일 전10:52 163 +1
잡담 traefik v3.0 릴리즈 되었네요 2 사다리 4일 전09:12 121 +1
정보 Wordpress 플러그인 Elementor 4 DarkAcid 5일 전13:39 198 +1
잡담
normal
Dohoon 2일 전11:16 454 0
잡담
normal
사다리 4일 전09:12 121 +1
잡담
image
초보나스 24.04.25.02:40 192 +3
잡담
image
hjk9860 24.04.21.17:50 283 +1
잡담
image
초보나스 24.04.17.15:10 285 +1
잡담
normal
감자칩 24.04.11.08:47 355 0
잡담
normal
정전리 24.04.05.00:38 377 +3
잡담
image
초보나스 24.04.01.10:56 317 +1
잡담
image
초보나스 24.03.30.15:04 101 0
잡담
image
정전리 24.03.27.14:48 450 +1
잡담
image
초보나스 24.03.25.16:15 126 +1
잡담
image
초보나스 24.03.23.09:56 76 0
잡담
image
이정도면컴맹인듯 24.03.23.09:52 69 0
잡담
image
주차장 24.03.22.00:10 330 +2
잡담
image
이정도면컴맹인듯 24.03.21.09:23 141 +1
잡담
image
이정도면컴맹인듯 24.03.21.05:56 361 0
잡담
image
kmw_ 24.03.15.15:18 389 +1
잡담
image
하늘위의하늘 24.03.11.21:09 183 +1
잡담
normal
행복구슬 24.02.28.01:45 411 +2
잡담
normal
정전리 24.02.21.23:00 300 0