성장, 그리고 노력

부족하더라도 어제보다 더 잘해지자. 노력은 절대 배신하지 않는다.

Docker

[Docker] 도커 입문하기 4 - 도커 이미지 만들기

제이콥(JACOB) 2021. 12. 14. 03:39

도커 이미지 만들기

 도커 컨테이너는 docker create [이미지 이름] 명령을 통해 만들 수 있다. 아래에서는 도커 이미지를 만드는 방법 먼저 배워보자.
예제 코드는 공식 홈페이지에 있는 것을 사용할 예정이다. [getting-started]

1. 도커 파일(Dokerfile) 만들기

도커 파일은 컨테이너 이미지를 만드는데 사용되는 단순한 텍스트 기반 지침 스크립트이다. Dockerfile이라는 이름의 파일을 만들자.
만약 vscode를 사용중이라면 docker extenstion을 설치하면 자동 완성 기능도 같이 사용할 수 있다.

# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python3 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]

각 명령어는 하나의 레이어를 생성한다.

  • FROM: 베이스 이미지이다. 간단하게 말해 OS라고 생각하면 되며, 참고로 Alpine은 매우 작은 Linux 배포판인 Alpine Linux를 기반으로 하는 기본 이미지이다. node:12-alpine의 의미는 노드 12에 설치된 알파인 기반 이미지를 의미하며, node:alpine 사용시 최신 버전의 알파인을 사용할 수 있다. (지금은 테스트이기 때문에 무거운 베이스 이미지 대신 알파인을 사용한 것이다.)
  • RUN: 도커 이미지가 생성되기 전에 수행할 쉘 명령어이다.
  • COPY: Docker클라이언트의 현재 디렉토리에서 파일을 추가한다. (COPY (source) (dist))
  • CMD: 컨테이너 내에서 실행할 명령을 지정하며, 도커 파일 내에서 한 번만 사용할 수 있다.

이미지를 실행하고 컨테이너를 생성할 때 베이스 이미지(레이어) 위에 쓰기 가능한 새 레이어("컨테이너 레이어")를 추가한다.

2. docker build 명령을 사용하여 컨테이너 이미지를 빌드하기

아래 명령을 통해 도커파일을 사용하여 새 컨테이너 이미지를 빌드할 수 있다.

$ docker build -t getteing-started .
  • -t: 이 플래그는 이미지에 태그를 지정해준다. 사람이 읽을 수 있는 최종 이미지의 이름으로 생각하면 되고, 이미지 이름을 지정했기 때문에 컨테이너를 실행할 때 해당 이미지를 참조할 수 있다.
  • .: 현재 디렉터리에서 Dockerfile을 찾아야 한다고 알려준다.

위 명령을 실행하면 이미지가 빌드 된다.

참고) Error: Can't find Python executable "python", you can set the PYTHON env variable

 위와 같은 에러가 발생했을 수도 있다. 일단 검색을 해본 결과 나와 같은 mac M1 프로세스 노트북에서 나타나는거 같다. 해결 방법은 내가 에러를 잡기 위해 노력한 시간보다는 차암 쉽다..

위의 Dockerfile 스크립트에서 python3 -> python2로 바꿔주자.

https://github.com/docker/getting-started/issues/222#issuecomment-979057033

3. docker run - 만든 이미지로 애플리케이션 실행하기.

아래 명령어를 통해 컨테이너를 시작한다.

$ docker run -dp 3000:3000 getting-started
$ docker ps
  • -dp: 이 플래그는 새 컨테이너를 분리된 모드(백그라운드)에서 실행하고 호스트의 포트 3000과 컨테이너의 포트 3000 간에 매핑을 생성하고 있다. 포트 매핑이 없으면 애플리케이션에 접근할 수 없다.

status가 Up으로 잘 실행되고 있음을 알 수 있다. 이제 그럼 브라우저에서 http://localhost:3000을 열어 확인해 보자.

도커 대시보드에서도 잘 실행되고 있음을 한번 더 확인할 수 있따.


공식 문서에 있는 예제를 통해 기본 예제에 대한 실습을 해봤다. 이제 다음 글에서 좀 더 도커에 대해 알아보자.


깃북으로 보기

https://ajdkfl6445.gitbook.io/study/devops/docker/make-image

 

도커 이미지 생성하기 - 콥 노트

FROM: 베이스 이미지이다. 간단하게 말해 OS라고 생각하면 되며, 참고로 Alpine은 매우 작은 Linux 배포판인 Alpine Linux를 기반으로 하는 기본 이미지이다. node:12-alpine의 의미는 노드 12에 설치된 알파인

ajdkfl6445.gitbook.io

반응형