- 부스트코스
- unsub
- 오라클
- r
- 빅분기
- 프로그래머스
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- Ai
- 네이버부스트캠프
- 빅데이터분석기사
- 정보처리기사
- boostcoures
- AI 플랫폼을 활용한 데이터 분석
- 코딩테스트 python
- SQL
- PY4E
- Oracle
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- 인공지능기초다지기
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- python
- 코딩테스트
- 기초다지기
- 데이터베이스
- 이기적
- DB
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- Django
- boostcourse
- 파이썬
- Today
- Total
매일공부
[Docker] 네트워크 통합하다가 DB가 통째로 끊긴 사고 본문
배경
nginx를 붙이려면 컨테이너들이 같은 Docker 네트워크에 있어야 했다(전편 참고). DB 컨테이너와 Django(dev/prod) 컨테이너를 순서대로 새 커스텀 네트워크로 옮기는 과정에서, dev/prod 둘 다 DB 연결이 안 되는 상황이 생겼다.
첫 번째 착각 — "레거시 Link가 죽은 컨테이너 ID를 물고 있다"
Docker의 레거시 "Link" 기능은 컨테이너 이름이 아니라 내부 컨테이너 ID를 참조한다. 이미지 업그레이드 과정에서 DB 컨테이너가 한 번 삭제되고 같은 이름으로 재생성됐다면, 이름은 같아도 내부적으로는 다른 컨테이너다.
Error response from daemon: Cannot link to a non running container
이 에러를 보고 처음엔 이 가설로 접근했다 — 특정 컨테이너만 예전 ID를 계속 물고 있어서 연결이 안 되는 게 아닐까. 실제로 컨테이너 설정을 열었다 닫는 것(Link를 지웠다가 다시 추가)만으로 일부는 해결되는 것처럼 보였다.
진짜 원인 — 컨테이너별로 네트워크가 제각각이었다
하지만 완전한 원인은 아니었다. 컨테이너를 하나씩 새 네트워크로 옮기면서, 어떤 컨테이너는 옮겨졌고 어떤 컨테이너는 아직 예전 네트워크에 남아있는 과도기 상태가 생겼다. Synology Container Manager의 Link 기능은 같은 네트워크 안에 있는 컨테이너끼리만 동작하기 때문에, DB 컨테이너와 애플리케이션 컨테이너가 서로 다른 네트워크에 놓이는 순간 연결이 끊긴다.
확인해보니 실제로:
- prod 컨테이너는 먼저 새 네트워크로 옮겨져서 정상 동작
- dev 컨테이너는 아직 기존 네트워크에 남아있어서 연결 실패
- 이후 DB 컨테이너까지 새 네트워크로 옮기고 나니, 이번엔 반대로 아직 예전 네트워크에 있던 컨테이너들이 실패
즉 "옮긴 것"과 "아직 안 옮긴 것"이 뒤섞여 있는 동안은 계속 누군가는 끊겨 있는 상태였다.
결론 — 관련 컨테이너는 다 같은 네트워크로 통합
이 프로젝트는 개발/운영 DB를 컨테이너 하나로 같이 쓰는 구조라, 애초에 관련 컨테이너(DB, dev, prod, nginx)를 전부 같은 네트워크로 통합하는 게 맞는 방향이었다. 하나씩 옮기는 동안 네트워크가 갈라진 채로 잠깐 떠 있던 게 문제였을 뿐, 최종적으로 전부 같은 네트워크에 모으고 나니 정상화됐다.
정리
- 레거시 "Link" 방식은 같은 네트워크 안에서만 동작한다 — 컨테이너 여러 개를 새 네트워크로 옮길 때는 관련된 컨테이너를 한꺼번에 옮기거나, 최소한 옮기는 순서와 그 사이의 과도기 상태를 미리 염두에 둬야 한다
- 에러 메시지(Cannot link to a non running container)만 보고 섣불리 원인을 하나로 단정하면 안 된다 — 겉보기엔 같은 증상이라도 원인이 여러 개 섞여 있을 수 있다
- 인프라를 하나씩 순차적으로 옮기는 작업은, 그 중간 상태에서 시스템이 실제로 어떤 상태인지(누가 옮겨졌고 누가 안 옮겨졌는지)를 계속 추적하면서 진행해야 한다
'IT > 작업기록' 카테고리의 다른 글
| [SSH] 처음부터 설정하기 — 키 생성부터 접속까지 (1) | 2026.08.28 |
|---|---|
| [MariaDB] 전혀 다른 작업 중에 우연히 발견한 버전 불일치 문제 (0) | 2026.08.28 |
| [Docker] docker-compose 없이 Container Manager로 nginx 붙이기 (0) | 2026.08.28 |
| [Django] 화면에서 로고 이미지가 깨지는데 PDF에는 정상 — DEBUG=False의 함정 (0) | 2026.08.27 |
| [배포] PDF는 한글이 정상인데 운영서버 배포 후에만 깨진 이유 (0) | 2026.08.27 |