Synology Docker Ubuntu apt-get update 안될 때 — 4단계 해결
📌 안내: 이 글은 2021-11-03 작성한 원본 실습 기록(원본 post ID: 87)을 2026년 시점에서 재정리한 글입니다. ubuntu:20.04 + IPTIME 공유기 기준의 절차는 원본 그대로 유지하며, 2026년 시점의 원인 해설·보안·운영 시사점은 별도 섹션으로 구분해 추가했습니다.
apt-get update가 멈췄다 — 원인은 단 하나였다
Synology NAS에 Docker를 올리고 ubuntu:20.04 컨테이너를 처음 띄웠을 때의 일이다. 설렘 반 긴장 반으로 터미널을 열고 apt-get update를 입력했는데 — 아무것도 받아오지 못했다. 명령어가 틀린 것도 아니고, NAS 자체는 인터넷이 멀쩡히 됐다. “왜 이러지?” 하면서 꽤 시간을 보낸 기억이 있다.
결론부터 말하면, 원인은 허무할 만큼 단순했다. 브릿지 포트 매핑 누락이 전부였다. 포트 설정 한 줄이 빠졌을 뿐인데, 컨테이너 전체가 외부와 단절됐던 것이다.
이 글은 이전 편인 Synology NAS Docker 사용하기 1편<!– TODO: WordPress 이전 완료 후 blog.aprox.co.kr 내부 링크로 변환 필요 –>에 이어, 같은 환경에서 마주친 네트워크 트러블슈팅 기록이다.
범위 안내: 이 글에서 다루는 해결책은 ‘포트 매핑 미설정’ 원인에 한정된다. DNS 오류·타임아웃·저장소 주소 변경 등 다른 원인은 별도 확인이 필요하다.
Synology Docker에서만: 포트 매핑이 아웃바운드 통신에 영향을 미치는 이유
apt-get update는 컨테이너 안쪽에서 외부 패키지 서버로 나가는 아웃바운드 요청이다. “들어오는 요청도 아닌데 포트 매핑이 왜 필요하지?”라는 의문이 드는 건 당연하다.
먼저 중요한 전제: 일반적인 Docker 환경(Docker Desktop, CLI 직접 운영 등)에서는 포트 매핑(publish) 없이도 아웃바운드 통신이 정상 작동한다. 포트 매핑은 원래 외부 클라이언트가 컨테이너로 들어오는 인바운드 연결을 위한 설정이기 때문이다.
※ 이 해설은 2026년 현재 시점 정리입니다 — 원본(2021년)에 없는 내용이며, Synology Docker GUI 특화 관찰 기록입니다
Synology Docker에서는 달랐다. 2021년 해당 환경에서 [포트 설정] 탭에 매핑 값을 입력하지 않으면, 브릿지 인터페이스가 제대로 구성되지 않아 컨테이너에서 외부로 나가는 라우팅 경로 자체가 열리지 않는 현상이 관찰됐다. 이것이 표준 Docker 동작과 다른 Synology GUI 특화 구현인지, 당시 DSM 버전(2021년 기준)에 한정된 현상인지는 단정하기 어렵다. 분명한 것은, 포트 매핑을 추가했을 때 문제가 해결됐다는 사실이다.
Docker 공식 문서는 브릿지 네트워크에서 외부 클라이언트가 컨테이너에 접근하려면 포트를 명시적으로 게시(publish)해야 한다고 설명한다. Synology GUI에서 [포트 설정] 탭을 통해 이루어지는 것이 바로 이 포트 게시 역할이며, 이 설정이 브릿지 라우팅 경로 전체를 활성화하는 트리거로 작동했다.
통신 경로 전체 구조
아래 4단계는 컨테이너가 외부와 통신하는 경로를 처음부터 순서대로 여는 작업이다.
아래 다이어그램은 외부 → 컨테이너 방향(인바운드)으로 표현했다. Synology Docker 환경에서는 이 경로 전체가 열려야 컨테이너 → 외부 방향(아웃바운드)도 함께 작동한다. 브릿지 라우팅 경로가 양방향으로 활성화되기 때문이다.
외부 클라이언트 → [공유기 포트] → [NAS 로컬 포트] → [Docker 컨테이너 포트]
경로 위의 구간 하나라도 막히면 컨테이너는 외부와 통신하지 못한다. 하나씩 따라가 보자.
4단계 설정 절차
Step 1. ubuntu:20.04 컨테이너 생성 — 포트 설정 전 대기
Synology Docker 앱을 열고 이미 다운받은 ubuntu:20.04 이미지를 선택한다. 컨테이너 이름을 지정하면 기본 설정 화면이 나타나는데 — 이 시점에서 [적용]을 바로 누르지 말 것. 포트 매핑이 빠진 채로 컨테이너가 생성되는 것, 그게 바로 문제의 출발점이었다.
[다음] 버튼을 클릭하면 [고급 설정] 버튼이 나타난다. Step 2에서 바로 이 고급 설정으로 이어진다.

Step 2. [고급 설정] → [포트 설정] — 브릿지 포트 매핑
[고급 설정] 탭을 클릭하면 [포트 설정] 탭이 나온다. 여기서 “로컬 포트” 와 “컨테이너 포트” 두 칸에 번호를 입력한다. 이게 핵심이었다 — 이 한 줄이 없어서 컨테이너가 외부와 완전히 단절됐던 것이다.
숫자 자체는 임의로 설정해도 무방하다. 예를 들어 로컬 포트 8080, 컨테이너 포트 8080처럼 입력하는 식이다(이는 예시 수치이며, 사용 중이지 않은 포트라면 다른 번호도 괜찮다).
중요: 여기서 설정한 “로컬 포트” 번호를 메모해 두자. Step 3과 Step 4에서 같은 번호를 다시 사용해야 한다.

Step 3. DSM 방화벽에서 Docker 포트 허용
포트 매핑만으로 끝이 아니다. DSM 방화벽에서도 같은 포트를 명시적으로 열어줘야 한다. 이 단계를 빠뜨려서 처음부터 다시 돌아온 기억이 있다. 꼭 챙겨야 한다.
(전제: DSM 방화벽이 활성화된 상태여야 한다. 방화벽이 꺼져 있다면 같은 경로에서 먼저 방화벽을 켜고 진행한다.)
경로: 제어판 → 보안 → 방화벽 → 규칙편집
규칙 추가 절차:
- [생성] 버튼 클릭
- [내장 응용 프로그램 선택]으로 이동
- 목록에서 Docker Port 선택
- 허용(Allow)으로 설정 후 확인
버전 주의: 본 절차는 2021년 DSM 기준이다. 최신 DSM 7.x에서는 메뉴 위치나 명칭이 다를 수 있으니 참고할 것.

Step 4. 공유기 포트포워드 설정 (IPTIME 기준)
마지막으로 공유기에서 포트포워드를 열어준다. IPTIME 기준으로 설명하지만, 다른 공유기도 ‘포트포워드’ 또는 ‘NAT 설정’ 메뉴에서 동일한 구조로 진행한다.
포트포워드 설정에서 헷갈리기 쉬운 게 외부 포트와 내부 포트의 구분이다. 정리하면 다음과 같다.
| 항목 | 설명 |
|---|---|
| 대상 IP | NAS 내부 IP (192.168.x.x 형태의 내부망 주소) |
| 내부 포트 (NAS 향) | Step 2에서 입력한 로컬 포트 번호와 반드시 동일하게 |
| 외부 포트 (공유기 인바운드) | 임의 설정 가능 — Step 2 로컬 포트와 달라도 된다 |
핵심 정리: 외부 포트(공유기 쪽)는 자유롭게, 내부 포트(NAS로 향하는 포트)는 Step 2에서 설정한 로컬 포트와 동일하게. 이 번호가 어긋나면 통신 경로가 끊긴다.

검증 — apt-get update 정상 동작 확인
4단계 설정을 마쳤다면 컨테이너 터미널에 접속해 결과를 확인해 보자.
컨테이너 터미널 접속
방법 1 — Synology Docker 앱에서 직접 접근:
Synology Docker 앱 → 해당 컨테이너 선택 → [터미널] 탭 → [실행]
방법 2 — SSH로 NAS에 접속한 경우:
# 관리자 모드 전환
sudo -i
# Step 1에서 지정한 컨테이너명을 입력해 컨테이너 내부 셸로 진입한다
docker exec -it <컨테이너명> bash
apt-get update 실행
컨테이너 셸에 진입했으면 아래 명령어를 실행한다. 컨테이너 내부는 기본적으로 root 권한이므로 sudo 없이 바로 입력하면 된다.
apt-get update
패키지 목록이 정상적으로 내려받아지면 4단계 설정이 모두 맞물린 것이다. 처음 이 화면을 봤을 때의 안도감이 아직도 기억난다.

2026년 시점 재점검 — 지금 다시 한다면
📌 이 섹션은 2026년 현재 시점의 분석입니다. 원본(2021년) 절차와 구분되는 내용이므로 참고용으로 읽어주세요.
지금 다시 이 설정을 한다면 두 가지를 먼저 챙겼을 것 같다.
보안: 포트 번호 선택에 신경 쓸 것
외부에 포트를 여는 만큼 번호 선택이 중요하다. 8080처럼 흔히 쓰이는 번호 대신 49152~65535 범위를 고르는 것이 일반적이다(IANA에서 ‘동적·사설 포트’로 분류하는 범위다). 자동화된 스캐너에 노출될 가능성을 낮출 수 있다. 공유기 포트포워드 설정에서 접근을 허용할 IP 대역을 제한하는 옵션이 있다면 그것도 함께 검토해 볼 만하다.
운영: GUI 설정은 재생성 시 초기화된다
Synology Docker GUI에서 설정한 포트 매핑은 컨테이너를 재생성하면 초기화된다. 단기 실험용 컨테이너라면 GUI 설정으로 충분하지만, 장기 운영한다면 docker-compose.yml에 포트 설정을 코드로 관리하는 편이 훨씬 안정적이다. 재생성·재시작 때마다 GUI를 다시 클릭하는 수고를 없앨 수 있다.
마치며
결국 4단계 전부가 맞물려야 컨테이너 통신이 열린다.
- 컨테이너 생성 — 포트 설정 전 [적용] 버튼 누르지 않기 ([다음] → [고급 설정]으로 진입)
- 포트 매핑 — [고급 설정] → [포트 설정]에서 로컬 포트 · 컨테이너 포트 입력
- DSM 방화벽 — Docker Port 허용 규칙 추가
- 공유기 포트포워드 — NAS 내부 IP로, 내부 포트는 Step 2 로컬 포트와 동일하게
이 넷 중 하나라도 빠지면 apt-get update는 침묵한다. 허무할 만큼 단순한 설정 하나가 원인이었지만, Synology Docker를 처음 다루는 분이라면 충분히 마주칠 수 있는 지점이다.
다음 편에서는 이 포트 매핑을 docker-compose.yml로 코드화해서, 컨테이너 재생성 때마다 설정을 반복하지 않는 방법을 정리할 예정이다.
참고 및 출처
- 본 글은 2021-11-03 자체 실습 기록(원본 post ID: 87)을 2026년 시점에서 재정리한 것입니다.
- 이전 편: Synology NAS Docker 사용하기 1편 (WordPress 이전 완료 후 blog.aprox.co.kr 내부 링크로 변환 예정)
- Docker 공식 문서 — Use bridge networks: https://docs.docker.com/network/drivers/bridge/