본 내용은 Microsoft에서 제공하는 Docker 자습서 내용을 정리한 글입니다.
원문과 내용이 비슷하지만, Docker를 접하기에 아주 유용한 문서로 개인 학습 및 정보공유 차원에서 작성합니다.
누군가의 요청으로 앱의 요구사항이 변경되기를 바란다고 가정,
먼저 소스코드를 업데이트
이전에 사용한 것과 동일한 명령을 사용하여 업데이트된 이미지 버전을 빌드함
$ docker build -t getting-started .
업데이트된 코드를 사용하여 새 컨테이너를 시작함
$ docker run -dp 3000:3000 getting-started
다음과 같은 오류가 발생 함
docker: Error response from daemon: driver failed programming external connectivity on endpoint laughing_burnell
(bb242b2ca4d67eba76e79474fb36bb5125708ebdabd7f45c8eaf16caaabde9dd): Bind for 0.0.0.0:3000 failed: port is already allocated.
이러한 이유가 발생하는 이유는 이전 컨테이너가 여전히 실행되고 있으므로 새 컨테이너를 시작할 수 없어서 발생함. 이는 해당 컨테이너가 호스트의 포트 3000번을 사용하고 있으며, 머신(컨테이너 포함)에서 하나의 프로세스만 특정 포트를 수신 대기할 수 있기 때문임
이 문제를 해결하려면 이전 컨테이너를 제거해야 함.
컨테이너를 제거하려면 먼저 중지해야 함, 컨테이너가 중지되면 제거할 수 있음.
$ docker ps // Container ID 확인
$ docker stop <Container ID> // 컨테이너 중지
$ docker rm <Container ID> // 컨테이너 삭제
$ docker run -dp 3000:3000 getting-started
http://localhost:3000 을 새로고침하면 업데이트 된 내용을 확인할 수 있음