1. 도커(docker) 이미지(image) 만들기
1) Dockerfile 생성
- 도커 이미지를 만들기 위해서 Dockerfile이 필요함
- Dockerfile이란 도커 이미지를 어떻게 생성할 것인지 정의한 파일
- FROM: 도커 이미지를 생성할 때 기본적으로 사용할 base image를 작성, 주로 OS이미지, 런타임 이미지를 지정
- ADD src dst: 호스트 머신에 있는 파일이나 폴더를, dst라는 위치에 저장(만약, 이미지에 복사하려는 디렉토리가 없을 시 도커가 자동 생성해줌 )
- RUN script: 스크립트 실행, 이미지를 빌드할 때 사용하는 커맨드
- CMD: 생성된 도커 이미지를 실행할 때 자동으로 실행되는 커맨드
기타
EXPOSE: 이미지가 통신에 사용할 포트 지정
ENV: 환경변수 지정
ENTRYPOINT: 도커 이미지가 실행될 때 사용되는 기본 커맨드 지정, CMD와 다른 것은 추가 옵션을 지정할 수 있음
// property 파일 지정
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod", "/app.jar"]
// 프로파일 활성화
-Dspring.profiles.active=prod,logging
// 외부 설정 파일 지정
-Dspring.config.location=file:/path/to/external/application.properties
// 서버 포트 지정
-Dserver.port=8081
// 로거 레벨 지정
-Dlogging.level.com.example=DEBUG
// JMX 활성화/비활성화
-Dcom.sun.management.jmxremote
// 메모리 설정
-Xms256m -Xmx512m
WORKDIR: RUN, CMD, ENTRYPOINT 등 사용한 커맨드를 실행하는 디렉토리 지정 -w옵션으로 오버라이딩 할 수 있음
VOLUME: 퍼시스턴스 데이터를 저장할 경로를 지정, 호스트 디렉토리를 도커 컨테이너에 연결
2) 도커 이미지 빌드하기
dockerfile을 실행하기 위해서는 docker build 커맨드 사용
docker build {OPTIONS} {PATH}
'.' 옵션: 도커 빌드를 어느 위치에서 실행할 것인지 정의
이 위치에 따라 ADD 커맨드에서 호스트의 파일 위치를 사용하는것이 바뀔 수 있음
3) REPOSITORY와 TAG 설정 후 빌드
-t 옵션을 사용하면 이미지에 원하는 이름을 붙일 수 있음
tag를 붙이지 않을 경우 자동으로 latest됨
-t {image_name}:{tag}
4) 이미지 리스트 확인
5) 히스토리 확인
이미지는 레이어로 관리됨
6) 버전 관리
- TAG로 버전 관리 할 수 있음, 코드가 수정되어 재 빌드하게 되면 같은 태그를 사용하지 않는 것이 좋음
왜? 같은 리포지토리명과 태그명이지만 코드의 변경 등의 이유로 다른 실행 결과가 나올 수 있음
2. 어플리케이션 이미지 공유하기
1) docker hub 접속
2) 리포지토리 생성
3) 로그인
docker login
4) 빌드
docker build -t {Docker_id}/리포지토리명:태그
- 이미지의 이름을 리포지토리와 동일하게 맞춰야함(? 강의에서 맞추라고했는데 리포지토리 이름을 빼먹음..;)
5) push
docker push 리포지토리명:태그
👏🏻 위에서 리포지토리명을 빼먹었는데 어떻게 push가 되는거지??? 했는데 Docker Hub 확인 했더니 리포지토리가 생성됨(리포지토리를 Docker Hub 들어가서 직접 만들지 않아도 되는거군)
'Docker' 카테고리의 다른 글
도커(docker) 컨테이너 리소스 사용량 제한하기 (0) | 2022.12.16 |
---|---|
[Docker] 도커(docker) 편리하게 실행하기 - Docker-compose (0) | 2022.12.15 |
[Docker] 여러개의 컨테이너 연결하기 - Docker network (0) | 2022.12.15 |
도커(Docker) 컨테이너에서 생성된 데이터 유지하기- named volume (0) | 2022.12.15 |
도커(Docker) 개념 잡기 (0) | 2022.12.14 |