궁금한게 많은 코린이의 Developer 노트

Docker의 개념과 Docker Desktop 사용하기 본문

TIL

Docker의 개념과 Docker Desktop 사용하기

lemonarr🍋 2024. 4. 7. 23:54

Docker란?

도커는 컨테이너화된 프로그램을 개발, 배포 및 실행하기 위한 플랫폼이다.

컨테이너 : 프로그램과 그에 필요한 모든 종속성(환경설정, 라이브러리 등)을 포함하는 실행 가능한 단위로 패키징된 것.

Docker의 특징

  • 도커 이미지는 도커 허브(도커 이미지 저장소)에서 다운로드하여 가져온다.
  • 도커는 어떠한 이미지 위에 또 다른 이미지를 생성할 수 있다.

Dockerfile이란?

  • 도커 이미지를 생성하기 위한 지시사항들을 포함하는 텍스트 파일.
  • 사용하면 도커 이미지를 구성하는 과정을 자동화하고, 이미지가 어떻게 빌드되어야 하는지 세부사항을 정의할 수 있다.
  • 이미지 빌드를 반복 가능하게 한다.
  • 버전관리 시스템을 통해 이미지 구성을 관리하기 편하다.

Dockerfile build

  • 이미지를 빌드하는데 필요한 모든 설정과 단계를 하나의 파일에 정의하므로, 이미지의 구성을 쉽게 유지보수할 수 있다.
  • 버전관리 시스템을 통해 관리가 가능하다.

Docker 를 설치해보자.

1. npm -g create-react-app my-project --use-npm 으로 실행 파일 만든 후, 실행 파일로 루트 옮기기.

> npm -g create-react-app my-project --use-npm
> cd my-project
> npm start

2. docker 홈페이지에서 docker를 다운받는다.

3. docker가 설치 되었는지 확인한다.

//해당 명령어로 docker가 설치 되었는지 확인해보자.
> docker -v

docker가 설치되었는지 확인

4. Dockerfile 파일을 새로만들어 내용을 작성한다.

FROM node:18.12.0-alpine3.16 as build

WORKDIR /app

COPY package.json ./package.json
COPY package-lock.json ./package-lock.json

RUN npm ci

COPY . ./

EXPOSE 3000

CMD ["npm", "start"]

RUN npm run build

책에 있는 그대로 작성이 아닌, EXPOSE, CMD 명령어를 입력했더니 도커 데스크 톱에서 정상으로 돌아간다.
(책에 있는 그대로 작성하게되면 도커 데스크톱에서 1초 있다가 꺼지는, 제대로 작동하지 않는 이슈가 발생한다.)

명령어 의미

  • FROM: 어떤 베이스 이미지에서 실행될지를 결정한다.
  • 베이스 이미지: 이 이미지를 실행하는데 필요한 이미지.
  • node:18.12.0 : Node.js 18.12.0 버전이 설치되어 있는 이미지를 의미.
  • alpine3.16: 해당 이미지가 해당 버전의 운영체제 위에서 실행되는 이미지.
  • alpine: 알파인 리눅스를 의미/ 일반 리눅스보다 가볍고 깔끔한 리눅스.
  • WORKDIR: 작업 디렉토리 설정
  • COPY: 호스트 파일 시스템에서 파일이나 디렉토리를 이미지 내부로 복사.
  • RUN: 컨테이너 내에서 실행할 명령어 정의, 패키지 설치, 파일 복사, 응용프로그램 빌드 등.

5. 빌드에 필요한 Dockerfile을 작성한 후 도커이미지를 빌드해보자.

옵션과 경로의 위치가 바뀌어도 되는가?

> docker build [옵션] <경로>
> docker build -t cra:test . 

(모던리액트 딥 다이브에서는 옵션과 경로의 위치가 거꾸로 소개가 되어있긴 하다..)

명령어 의미

-t로 이름과 태그로 각각 cra(create-react-app)와 test를 부여하고 .에서 빌드를 수행한다는 의미이다.

  • cra: 사용자가 정한 이미지의 이름, 특정 프로젝트나 애플리케이션을 나타낼 수 있다.
  • test: 해당 이미지의 버전이나 용도(예: 테스트용)를 나타내는 태그.

태그 지정은 이미지 관리와 배포과정을 효율적으로 만들어준다!


Dockerfile 빌드 과정 에러 이슈 해결

Dockerfile 빌드 에러

처음에 빌드 명령어를 입력하고 에러가 났다. 구글갓에게 물어보며 블로그 전전하면서 이것저것 다 해봤지만,
제일 정확한 것은 에러 메시지를 분석하는 것.

결론 - Docker Desktop을 켜두고 build 해야 한다.

빌드된 이미지(비주얼스튜디오 코드 터미널)

빌드된 이미지(도커 데스크톱)

도커 데스크톱을 사용하면서 알게된 점

  • 빌드 후 생성된 이미지를 액션하게 되면, 컨테이너에 랜덤 이름이 지정된다.
  • 컨테이너를 삭제해야 도커 이미지를 삭제할 수 있다.



[참고자료 목록]

https://khj93.tistory.com/entry/Docker-Docker-%EA%B0%9C%EB%85%90

Dokerfile 작성 참고 자료

[Docker] 도커 데스크탑 설치 + mlflow 웹서버 환경 구축해보기