[Docker] docker 실행하기(2)
Docker

[Docker] docker 실행하기(2)

반응형

이 명령어로 docker hub에서 python 3.8 이미지를 다운받습니다.

(내 로컬에서 python 3.8 이미지가 없기 떄문에)

docker run -it python:3.8

 

Dockerfile에 다음과 같이 이미지를 저장할 수 있습니다.

FROM python:3.8

ADD requirements.txt .

RUN pip install -r requirements.txt

ADD templates templates

ADD app.py .

CMD ["python", "app.py"]

 

FROM 은 이 환경에서 실행을 하겠다는 뜻입니다.

 

ADD는 호스트머신에 있는 파일을 Docker 이미지에 넣겠다는 의미입니다. 

즉, requirements.txt를 . 위치에 넣겠다는 뜻입니다.

 

RUN 은 쉘에서 해당 커맨드를 실행해서 환경을 만들겠다는 뜻입니다.

 

 

방금 만든 Dockerfile로 이미지를 빌드해보겠습니다.

빌드하고자 하는 어플리케이션에서 다음 명령어를 실행합니다.

docker build .

이미지를 만들 때 필요한 디펜던시들을 다운 받게 될겁니다.

 

여기서 'docker scan' 을 하라고 나오는데 이것은 이미지에 보안결함이 있는지 확인해주는 command입니다. 당분간은 무시하셔도 됩니다.

 

다음과 같이 docker 이미지에 이름을 붙여서 빌드할 수 있습니다.

docker build . -t docker-memo:version1

 

docker에는 레이어라는 개념이 존재하는데

다음 명령어를 쓰면 각각의 레이어가 어떻게 생성되었는지를 볼 수 있습니다.

docker history docker-memo:version1

 

그리고 도커 이미지를 실행하기 위해서는 다음과 같이 씁니다.

docker run -d -p 3000:3000 docker-memo:version1

 

도커이미지는 레포지토리와 태그의 조합으로 바뀌지 않는 것이 원칙입니다. 그 이유는 이미지를 측정할 때 레포지토리와 태그로 특정짓는데 이게 바뀌게 되면 똑같은 레포지토리와 똑같은 태그를 갖고있는것을 실행했을 때 실행이 될 수도 있고 안될 수도 있습니다.

 

따라서 도커이미지는 한번 생성한다음에 오버라이드해서 생성하는 것은 권장하지 않습니다.

 

다음과 같이 다시 빌드해 보겠습니다.

docker build . -t docker-memo:version2

그러면 고쳐진 파일만 새로 빌드가 됩니다.

 

 

그리고 기존의 3000번 포트에서 돌고 있는 container를 닫고 새로 빌드한 이미지를 실행합니다.

docker stop [ID]
docker run -d -p 3000:3000 docker-memo:version2

 

반응형