컨테이너의 변경 사항으로 새 이미지 만들기
사건의 발달은 6000번 포트로 서비스를 오픈했을때, chrome에서 접근하지 못하는 문제가 발생했습니다. 원인으로 6000번 포트의 비밀 (ERR_UNSAFE_PORT)를 보면 보안상의 이유로 막았다고 합니다.
문제는 이미 설정한 컨테이너를 지우고 다시 작업하기 귀찮은 상황이었습니다. 그래서 찾은게 docker commit라는 명령입니다.
해당 명령어를 이용해서 실행중인 컨테이너를 새 이미지로 만들 수 있습니다. 저는 아래와 같이 사용 하였습니다.
# 6000번 포트를 연동하고 있는 컨테이너
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d4f0a0acbae ssh_alpine "/usr/sbin/sshd -D" 8 hours ago Up 8 hours 0.0.0.0:6000-6001->6000-6001/tcp, :::6000-6001->6000-6001/tcp dqserver
# 컨테이너를 이미지로 생성
$ docker commit dqserver dqserver_image
# 기존 이미지 중지 및 삭제
$ docker stop dqserver
$ docker rm dqserver
# 포트를 변경해서 신규 이미지 생성
$ docker run -it -d -p 6002:6002 -p 6001:6001 --name dqserver dqserver_image
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d4f0a0acbae dqserver_image "/usr/sbin/sshd -D" 8 hours ago Up 8 hours 0.0.0.0:6001-6002->6001-6002/tcp, :::6001-6002->6001-6002/tcp dqserver
참고로 이미지가 커밋되는 동안 커밋되는 컨테이너와 해당 프로세스는 일시 중지됩니다. 이렇게 하면 커밋을 생성하는 과정에서 데이터 손상이 발생할 가능성이 줄어듭기 때문입니다. 동작을 원하지 않는 경우 –pause 옵션을 false로 설정하세요.
추가적인 설명은 docker commit를 확인하세요!