Search

KnowLedge

컨테이너란 애플리케이션 레벨에서 필요한 소스코드, 라이브러리 등 모든 파일을 하나의 런타임 환경으로 패키징 하는 기술
도커란 컨테이너 가상실행 환경을 제공해주는 대표적인 오픈소스 플랫폼
이미지란 컨테이너를 정의하는 읽기 전용 템플릿
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
복사