[Docker] 실행중인 도커 컨테이너의 포트포워딩 변경

오잉·2023년 8월 26일
0

Intro

우테코에서 진행중인 팀 프로젝트에 로그 모니터링 시스템을 도입하기 위해, 현재 작동중인 젠킨스 컨테이너의 port를 바꿔야 하는 상황이 생겼다.

우테코에서 제공하는 ec2는 원래 8080포트가 막혀있어서
젠킨스 컨테이너를 80:8080으로 포트포워딩 해둔 상태였는데,
이후에 8080포트가 열려서 다시 8080:8080으로 바꾸고자 한다!!

잘못된 방법

기존 컨테이너 commit(이미지 복사) 후 새 포트로 실행

docker stop [컨테이너명]
docker commit [컨테이너명] [생성할 이미지명]
docker run -p 8080:8080 -d [생성할 이미지명] # 실행이 안된다면 -t 옵션 추가

이건 처음부터 이미지를 실행시키는 방법이다.
즉, 젠킨스에 접속해 모든 설정을 다 다시 해줘야 한다...

내가 찾는건 기존 설정을 다 유지하면서 포트만 바꾸는 방법이다!!

올바른 방법

  1. 실행중인 컨테이너 중지
    docker stop [컨테이너id]

  2. 도커 중지
    sudo service docker stop

  3. 해당 컨테이너 hash값 전체 얻기
    sudo docker ps -a --no-trunc | grep [컨테이너id]

  4. 컨테이너 설정 파일 접근
    sudo vi /var/lib/docker/containers/[컨테이너hash전체]/hostconfig.json

  5. PortBindingsHostPort를 원하는 포트로 변경

나의 경우에는 80:8080을 8080:8080으로 바꾸고자 했기 때문에 다음과 같이 수정했다.

기존)
PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"80"}]}

수정)
PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"8080"}]}

  1. 도커 시작
    sudo systemctl start docker

  2. 컨테이너 재시작
    docker restart [컨테이너id]


참고
how do i assign a port mapping to an existing docker container
how to get full id of docker contatiner

profile
오잉이라네 오잉이라네 오잉이라네 ~

0개의 댓글