[DevOps] MS 공식문서로 이해하는 Docker - 2 앱 업데이트

Song-YunMin·2021년 5월 29일
0

DevOps

목록 보기
4/9

본 내용은 Microsoft에서 제공하는 Docker 자습서 내용을 정리한 글입니다.
원문과 내용이 비슷하지만, Docker를 접하기에 아주 유용한 문서로 개인 학습 및 정보공유 차원에서 작성합니다.

소스 코드 업데이트

  1. 누군가의 요청으로 앱의 요구사항이 변경되기를 바란다고 가정,
    먼저 소스코드를 업데이트

  2. 이전에 사용한 것과 동일한 명령을 사용하여 업데이트된 이미지 버전을 빌드함

    $ docker build -t getting-started .
  3. 업데이트된 코드를 사용하여 새 컨테이너를 시작함

    $ 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 을 새로고침하면 업데이트 된 내용을 확인할 수 있음

요약

  • 애플리케이션의 상태 및 데이터가 모두 사라짐, 좋은 앱이라고 할 수 없음
  • 사소한 변경에도 '많은' 단계가 필요함

Reference

Docker 자습서 2부

profile
고독한 서버 개발 3년차

0개의 댓글