2022. 6. 13. 18:20ㆍETC/Server
내용출처 : https://docs.docker.com/get-started/
Part1. Getting started
여기서 배울내용
- 이미지를 컨테이너로 Build 및 Run 하는것
- Docker Hub를 사용해서 이미지를 공유하는 것
- DB를 가지고있는 여러 개의 컨테이너를 사용해서 Docker application을 배포하는 것
- Docker compose를 사용하여 application을 실행하는 것
step1
도커 설치하고 WSL2 세팅 및 리눅스 배포판 설치 & Windows Terminal 추가다운로드
# docker/getting-started 란 Image를 사용하여 컨테이너 생성
# -d : 컨테이너를 detached mode (background) 로 사용
# -p 80:80 : host의 80번 포트를 컨테이너의 80번 포트와 연결
# docker/getting-started : 사용할 image
docker run -d -p 80:80 docker/getting-started
# -d -p 라는 하나의 flag를 붙여서 -dp로 사용할 수 있다.
docker run -dp 80:80 docker/getting-started
detached mode / attached mode 이해하기 추가
step2
Docker Dashboard 이해하기
Docker Dashboard 제공 기능
- 실행되고 있는 컨테이너 목록 빠르게 확인 가능
- 컨테이너 로그에 쉽게 접근가능
- 컨테이너 내부에 shell을 가져올 수 있음 (?)
step3
Container 와 Images 이해하기
Container 란?
호스트 시스템의 다른 모들 Processed와 격리된 sandboxed process를 의미한다.
"격리"는 Linux에 있었던 Kernel namespaces와 cgroups을 활용함
종합하자면
- 이미지의 실행가능한 instance로써, create/start/stop/move/delete 등이 가능하다.
- 로컬과 가상머신에서 실행하거나, 클라우드에 배포가능
- portable하여 모든 OS에서 실행 가능
- 컨테이너끼리 서로 격리되어 그들만의 software, binaries, configurations 을 지님
Container 이미지란?
컨테이너를 실행할때, 격리된 filesystem을 사용한다. 이때 filesystem은 컨테이너 이미지로부터 제공받는것.
이미지가 컨테이너의 파일시스템을 가지고 있기 때문에, 이미지는 Application 실행을 위한 모든 것을 담고있다.
Part2. Sample application
간단한 todo list 프로그램 생성하기
step1
Get the app
https://github.com/docker/getting-started
위 경로에서 app 폴더 clone 해온다.
step2
Docker file 준비
application을 build하기 위해서는 Dockerfile 이 필요하다.
Docker file은 컨테이너 이미지를 생성할때 사용되는 텍스트로 쓰여진 명령어들의 script 이다.
아래처럼 텍스트를 작성하여 저장한다. (확장자명 .dockerfile)
여기서 주의할점은, 내가 이미지로 만들 프로그램/파일 들이 있는 경로에 dockerfile을 생성해야한다는 점
# syntax=docker/dockerfile:1
# FROM : 해당 이미지에서 시작하고 싶을 때 사용
FROM node:12-alpine
RUN apk add --no-cache python2 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
# CMD는
CMD ["node", "src/index.js"]
EXPOSE 3000
step3
dockerfile 을 build하여 Image 생성
# 1. 해당 경로로 이동
# 2. 이미지 빌드
docker build -t getting-started .
위 명령어는 Dockerfile을 컨테이너 이미지로 빌드할때 사용하는 명령어
'ETC > Server' 카테고리의 다른 글
Docker File 사용하여 Docker image 만들기 (0) | 2022.07.12 |
---|