이 명령어로 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
'Docker' 카테고리의 다른 글
[docker] m1 맥에서 docker mysql 에러해결 (0) | 2022.04.24 |
---|---|
[Docker] docker로 mysql 설치하고 접속하기 (0) | 2022.04.21 |
[Docker] docker 시작하기(1) (0) | 2022.04.09 |