컨테이너란 애플리케이션 레벨에서 필요한 소스코드, 라이브러리 등 모든 파일을 하나의 런타임 환경으로 패키징 하는 기술
도커란 컨테이너 가상실행 환경을 제공해주는 대표적인 오픈소스 플랫폼
이미지란 컨테이너를 정의하는 읽기 전용 템플릿
Dockerfile이란 도커 이미지를 생성하기 위한 명세서
도커파일 작성
•
FROM : 기반 이미지 지정
•
MAINTAINER : 이미지 관리자 지정
•
LABEL : 이미지의 메타데이터 지정
•
USER : 명령어 실행 계정
•
WORKDIR : 명령어를 실행할 작업 디렉터리 지정
•
RUN : 컨테이너 안에서 명령어를 실행
•
EXPOSE : 컨테이너 실행시 Listen할 포트 지정
•
ADD : 파일을 이미지에 추가
•
COPY : 로컬 디렉터리에서 읽어 들인 컨텍스트로부터 이미지에 파일을 복사
•
CMD : 컨테이너 기동시 실행할 명령어 인수
•
ENTRYPOINT : 컨테이너 기동시 실행할 명령어
•
예시 파일
# Node.js v18를 기반 이미지로 설정
FROM node:18
# 작업 디렉토리를 /usr/src/app으로 설정
WORKDIR /usr/src/app
# package.json 파일을 컨테이너에 복사
COPY package*.json ./
# 의존성 패키지들을 설치합니다.
RUN npm install
# 애플리케이션의 소스 코드를 컨테이너에 복사
COPY . .
# 애플리케이션이 3000번 포트에서 동작한다고 선언
EXPOSE 3000
# 애플리케이션을 실행하는 CMD를 정의
CMD [ "npm", "run", "start:dev" ]
Docker
복사
•
Commands
# nginx 이미지 찾기
docker search nginx
# 이미지의 스타가 100개 이상인 이미지 찾기
docker search nginx --filter stars=100
# 이미지가 오피셜 이미지 인것만 찾기
docker search nginx --filter is-official=true
# 이미지 가져오기
docker pull ubuntu:latest
# 도커 이미지 목록 확인하기
docker images
# 컨테이너 실행하기
docker run nginx
docker run -p 8080:80 nginx # 포트포워딩
docker run -d -p 8080:80 nginx # 백그라운드 실행
docker run -d -p 8080:80 --name webserver nginx # 이름 지정
docker run -it ubuntu:latest /bin/bash # bash 실행 (-it 옵션 : i -> interactive (입출력 허용), t -> tty)
# 볼륨 생성
docker volume create --name web
# 실행중인 컨테이너에 접속
docker exec -it webserver /bin/bash
# 실행중인 컨테이너 확인
docker ps
# 중지된 컨테이너도 확인
docker ps -a
# 컨테이너 중지
docker stop webserver
# 컨테이너 삭제
docker rm webserver
# 실행중이지 않은 continer 삭제
docker container prune
# 실행중이여도 삭제
docker rm -f webserver
# 컨테이너 상세 정보 확인
docker inspect webserver
# 컨테이너 로그 확인
docker logs webserver
# 모든 프로세스 다 삭제
docker rm -f $(docker ps -qa)
# 실시간 로그 확인
docker logs -f webserver
# 5줄만 확인
docker logs --tail 5 webserver
# 자세히 로그보기
docker logs -t webserver
# 현재 디렉토리에 있는 Dockerfile을 이용하여 이미지 생성
docker build -t mynginx .
# 도커 허브 로그인
docker login
# 도커 허브에 이미지 올리기
docker push mynginx
# 네트워크 모드 보기
docker network ls
Docker
복사

