예, 데이터베이스가 동일하게 검증된 영구 스토리지에 유지된다면 데이터베이스를 다시 빌드하지 않고도 컨테이너의 게시 포트를 변경할 수 있습니다.
홈 NAS 또는 Docker 호스트에서 외부에 표시되는 포트는 일반적으로 일회성 애플리케이션 컨테이너에 속하고, 레코드·계정·설정은 명명된 볼륨, 바인드 마운트 또는 별도의 데이터베이스 서비스에 저장됩니다. 따라서 안전한 변경 방법은 배포 정의와 영구 경로는 그대로 유지하고, 호스트 측 게시 규칙만 변경한 다음 영향을 받는 앱 서비스를 다시 생성하는 것입니다. 이후 이전 포트를 여전히 참조하는 모든 프록시, 북마크, 콜백, 방화벽 규칙 및 상태 점검을 확인해야 합니다.
게시된 호스트 포트와 컨테이너 리스너를 분리하세요
변경하기 전에 현재 매핑을 서로 다른 두 엔드포인트로 작성하세요. 8080:80에서 클라이언트는 Docker 호스트의 8080 포트에 연결하지만, 애플리케이션은 컨테이너 내부의 80 포트에서 계속 수신 대기합니다. 왼쪽 값을 변경해도 애플리케이션 프로세스나 데이터베이스 연결이 자동으로 변경되지는 않습니다.
Docker 커뮤니티의 문제 해결 사례에서는 호스트 매핑과 내부 리스너가 서로 별개이며, 대상 포트에서 내부적으로 수신 대기 중인 프로세스가 없으면 새 게시 포트가 작동하지 않는다는 점을 강조합니다.
실행 중인 컨테이너의 게시 포트와 수신 소켓을 확인한 다음, 컨테이너 내부 또는 해당 네트워크에서 내부 엔드포인트를 테스트하세요. 애플리케이션 자체를 이전해야 하는 경우가 아니라면 내부 포트는 변경하지 마세요. 이 첫 번째 테스트를 통해 단순한 호스트 포트 변경이 불필요한 애플리케이션 재구성으로 이어지는 것을 방지할 수 있습니다.
서비스를 다시 생성하기 전에 현재 데이터베이스 경로를 보호하세요
Compose 파일, 이미지 태그 또는 다이제스트, 환경 파일, 명명된 볼륨, 바인드 마운트, 네트워크 이름, 시크릿 및 데이터베이스 호스트 이름을 기록하세요. Docker가 애플리케이션 컨테이너를 교체하기 전에 어떤 객체가 영구 상태를 소유하는지 확인하는 것이 목표입니다.
포트 게시를 변경하려면 새 컨테이너 구성이 필요하지만 새 이미지를 빌드하거나 새 데이터베이스를 만들 필요는 없습니다. 실용적인 Docker 답변에서는 포트 설정이 변경될 때 컨테이너 재생성과 애플리케이션 이미지 재빌드를 구분합니다.
중요한 서비스라면 현재 애플리케이션 상태와 일치하는 데이터베이스 백업 또는 스냅샷을 생성한 뒤, 데이터베이스 경로가 컨테이너의 쓰기 가능 레이어 내부에 있지 않은지 확인하세요. 마운트 목록이 불분명하거나, 볼륨 이름이 변경되었거나, 현재 앱이 예상치 못한 빈 데이터베이스를 사용하는 것처럼 보이면 중단하세요.
호스트 측 매핑만 변경하고 앱 서비스를 다시 생성하세요
애플리케이션 서비스의 매핑을 8080:80에서 8081:80과 같이 변경하세요. 다른 확인된 요구 사항이 없다면 이미지, 내부 포트, 볼륨, 데이터베이스 URL, 서비스 이름, 네트워크 및 사용자 매핑은 그대로 유지하세요.
Compose 포트 구문은 호스트에서 컨테이너 방향으로 해석되므로 호스트 측을 변경해도 프로세스는 기존 내부 포트에서 계속 수신 대기합니다. Docker 포럼의 한 예에서는 왼쪽이 호스트 포트이며 오른쪽은 애플리케이션 리스너와 일치해야 하는 이유를 설명합니다.
업데이트된 정의를 사용해 애플리케이션 서비스만 다시 생성하세요. 볼륨을 제거하는 스택 명령을 사용하지 말고, 데이터베이스를 다시 초기화하지도 마세요. 이미지 자체가 변경된 경우가 아니라면 --build도 추가하지 마세요. 다시 생성한 후 마이그레이션이나 백그라운드 작업을 실행하기 전에 실제 마운트와 포트 매핑을 확인하세요.
이전 포트에 의존하는 모든 클라이언트 경로를 업데이트하세요
브라우저 북마크는 게시 포트를 사용하는 여러 요소 중 하나일 뿐입니다. 리버스 프록시, 라우터 포워딩, 로컬 방화벽, 모니터링 프로브, 모바일 앱, 웹훅 대상, OAuth 콜백, CORS 허용 목록 및 자동 생성된 공개 URL이 여전히 이전 엔드포인트를 가리킬 수 있습니다.
일부 셀프 호스팅 애플리케이션은 루프백 요청을 보내거나 구성된 공개 주소를 기반으로 콜백 URL을 생성합니다. WordPress 컨테이너 토론에서는 데이터베이스가 정상적으로 유지되는 경우에도 외부 매핑 변경으로 인해 포트를 인식하는 루프백 동작이 나타날 수 있음을 보여줍니다.
Compose 프로젝트, 프록시 구성, 환경 파일 및 애플리케이션 설정에서 이전 포트를 검색하세요. 실제로 호스트 엔드포인트를 사용하는 계층만 업데이트하세요. 내부 컨테이너는 일반적으로 새로 게시된 호스트 포트가 아니라 서비스 이름과 내부 포트를 계속 사용해야 합니다.
데이터베이스는 전용 컨테이너 경로에 유지하세요
웹 애플리케이션의 호스트 포트가 변경되었다고 해서 데이터베이스 포트를 변경하거나 게시하지 마세요. 동일한 스택의 컨테이너만 사용하는 데이터베이스는 호스트 게시 없이도 서비스 이름과 내부 포트를 통해 계속 연결할 수 있습니다.
앱의 공개 엔드포인트와 데이터베이스 연결을 혼동하면 두 번째 장애가 발생할 수 있습니다. 데이터베이스가 비공개 Docker 네트워크에 유지되어야 하는데도 애플리케이션이 NAS 주소와 호스트 포트를 사용하도록 설정될 수 있기 때문입니다. 이러한 변경은 브라우저가 웹 서비스에 연결하는 데 도움이 되지 않으면서 방화벽, NAT 및 인증 변수를 추가합니다.
다시 생성한 애플리케이션 컨테이너에서 데이터베이스 서비스 이름을 확인하고, 내부 TCP 포트에 연결한 뒤 인증을 수행하고, 안전한 읽기 작업을 실행하세요. 해당 경로가 변경되지 않았다면 그대로 두세요. 데이터베이스 테스트가 실패하면 별도의 네트워크 또는 자격 증명 문제를 해결하기 전에 원래 애플리케이션 정의를 복원하세요.
영구 데이터를 건드리지 않고 새 포트를 확인하세요
먼저 새 호스트 포트를 직접 테스트한 다음, 일반 호스트 이름 또는 리버스 프록시 경로를 테스트하세요. 로그인, 레코드 조회, 되돌릴 수 있는 쓰기 작업 1회, 업로드, 예약 작업, 연동 기능 및 제어된 컨테이너 재시작을 확인하세요.
새 브라우저 엔드포인트는 작동하지만 Docker가 계속 서비스를 비정상 상태로 보고한다면, ZimaSpace의 실제 앱 경로에 맞춰 상태 점검을 설정하는 방법을 다음 단계로 확인하세요.
새 게시 포트가 컨테이너 재생성과 재부팅 후에도 유지되고, 프록시와 클라이언트가 더 이상 이전 엔드포인트를 사용하지 않으며, 애플리케이션이 동일한 영구 데이터베이스에 다시 연결되고, 데이터베이스 백업을 계속 사용할 수 있을 때 변경이 완료됩니다. 앱이 새 빈 상태로 시작하거나 예상치 못한 마이그레이션을 시도하면 포트 매핑을 되돌리세요.
지원 및 팁
더 읽어보기

Plex가 다른 Docker 컨테이너와 GPU를 공유할 수 있나요?
Plex와 다른 컨테이너가 동일한 GPU에 함께 액세스할 수 있는 경우가 많지만, 드라이버 지원, 디바이스 매핑, 비디오 엔진 부하, 메모리, 복구 동작을 테스트해야 합니다.

Plex 오류가 클라이언트에서 발생한 것인지 서버에서 발생한 것인지 확인하는 방법
다른 클라이언트에서 동일한 항목을 재현하고, 세션 경로를 비교한 다음, 범위 분석을 통해 장애가 실제로 발생한 위치를 확인한 후에만 서버 증거를 수집하세요.

Plex 캐시 및 트랜스코딩 임시 저장소 구성 방법
영구 Plex 상태는 보호하면서 트랜스코딩 임시 파일은 적합한 로컬 저장소에 배치한 다음, 정리 상태와 여유 공간 및 재시작 동작을 확인하세요.

