우테코에서 진행중인 팀 프로젝트에 로그 모니터링 시스템을 도입하기 위해, 현재 작동중인 젠킨스 컨테이너의 port를 바꿔야 하는 상황이 생겼다.
우테코에서 제공하는 ec2는 원래 8080포트가 막혀있어서
젠킨스 컨테이너를 80:8080으로 포트포워딩 해둔 상태였는데,
이후에 8080포트가 열려서 다시 8080:8080으로 바꾸고자 한다!!
기존 컨테이너 commit(이미지 복사) 후 새 포트로 실행
docker stop [컨테이너명]
docker commit [컨테이너명] [생성할 이미지명]
docker run -p 8080:8080 -d [생성할 이미지명] # 실행이 안된다면 -t 옵션 추가
이건 처음부터 이미지를 실행시키는 방법이다.
즉, 젠킨스에 접속해 모든 설정을 다 다시 해줘야 한다...
내가 찾는건 기존 설정을 다 유지하면서 포트만 바꾸는 방법이다!!
실행중인 컨테이너 중지
docker stop [컨테이너id]
도커 중지
sudo service docker stop
해당 컨테이너 hash값 전체 얻기
sudo docker ps -a --no-trunc | grep [컨테이너id]
컨테이너 설정 파일 접근
sudo vi /var/lib/docker/containers/[컨테이너hash전체]/hostconfig.json
PortBindings
의 HostPort
를 원하는 포트로 변경
나의 경우에는 80:8080을 8080:8080으로 바꾸고자 했기 때문에 다음과 같이 수정했다.
기존)
PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"80"}]}
수정)
PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"8080"}]}
도커 시작
sudo systemctl start docker
컨테이너 재시작
docker restart [컨테이너id]
참고
how do i assign a port mapping to an existing docker container
how to get full id of docker contatiner