도커 파일 (Dockerfile)을 통해 이미지를 만들고, 이를 실행시켜 컨테이너를 만들 수 있다.
Dockerfile
Dockerfile은 컨테이너를 만들 수 있도록 도와주는 명령어의 집합이다.
즉, 이미지를 생성하기 위한 용도로 작성하는 파일을 말한다.
- 쉽고 간단 명확한 구문을 가진 text file 로 top-down 해석
- 컨테이너 이미지를 생성할 수있는 고유의 지시어를 가진다.
- 대소문자를 구분하지 않으나 가독성을 위해 사용한다.
문법
- FROM : 컨테이너의 Base Image
- MAINTAINER : 이미지를 생성한 사람의 이름 및 정보
- LABEL : 컨테이너 이미지에 컨테이너의 정보를 저장
- RUN : 컨테이너 빌드를 위해 base image에서 실행할 commands
- COPY : 컨테이너 빌드시 호스트의 파일을 컨테이너를 복사
- ADD : 컨테이너 빌드시 명령이 실행될 작업 디렉토리 설정
- WORKDIR : 컨테이너 빌드시 명령이 실행될 작업 디렉토리 설정
- ENV : 환경변수 지정
- USER : 명령 및 컨테이너 실행 시 적용할 유저 설정
- VOLUME : 파일 또는 디렉토리를 컨테이너의 디렉토리로 마운트
- EXPOSE : 컨테이너 동작 시 외부에서 사용할 포트 지정
- CMD : 컨테이너 동작 시 자동으로 실행할 서비스나 스크립트 지정
Dockerfile
FROM openjdk:17-oracle
ARG JAR_FILE=build/libs/shop-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} myboot.jar
ENTRYPOINT ["java","-jar","/myboot.jar"]
- From : 이미지를 생성할 때 사용할 이미지이다.
- ARG: 변수선언으로 해당 경로에 있는 shop-0.0.1-SNAPSHOT.jar 이름의 파일을 변수로 선언한다는 의미한다.
- COPY : 변수로 설정한 실행할 jar파일을 도커 컨테이너 내부에 myboot.jar이라는 이름으로 복사한다.
- ENTRYPOINT : 컨테이너가 시작될 떄 실행할 스크립트 혹은 명령을 정의한다.
image 빌드하기
docker build -t shop .
docker images
- -t : 특정 이름으로 이미지를 빌드한다는 의미다. 여기서는 shop이라는 이름으로 빌드했다.
- . : Dockerfile의 경로를 나타낸다.
이제 이미지를 확인해보면 정상적으로 shop이라는 이름으로 이미지가 생성되었음을 확인할 수 있다.
container 실행
docker run -it -p 8081:8080 --name test shop
shop이라는 이름의 이미지를 test라는 컨테이너로 실행한다는 의미이다.
- -p <external host port>: <container host port> : 로컬의 8081 포트를 컨테이너의 8080 포트와 매핑한다는 의미이다.
- i : 컨테이너쪽 셀에 들어가서 명령을 가능하게 함
- t : 터미널 기능 활성화
만든 이미지 도커 허브에 배포하기
#1. 로그인 및 도커허브에 Repository 만들기
docker login -u [계정]
#2.이미지에 태그를 달아 새로운 이미지를 만든다
docker tag 이미지이름 [계정]/[repository이름]:0.1
#3. push
docker tag [계정]/test:0.1
push 하기 전에 도커 허브에 레포를 만들고, 올릴 이미지를 태그를 달아 새로운 이미지를 만든 후에 해당 이미지를 push 한다.
'CS > 서버' 카테고리의 다른 글
도커 컨테이너 하드웨어 리소스 제한 관리 - Memory, CPU (0) | 2023.05.23 |
---|---|
Docker로 mysql 설치 및 접속하기 (0) | 2023.05.23 |
AWS - EC2, Elastic Beanstalk, Fargate, ECR, Lambda, ECS (1) | 2023.05.08 |
AWS - VPC, NAT,ELB, S3, CloudFront (0) | 2023.05.08 |
도커(docker) - 가상화(VM)과 컨테이너(Container) (0) | 2023.04.05 |