Dockerfile 활용해 이미지 직접 만들기
1일 전
Dockerfile이란?
Docker 이미지를 만들게 해주는 파일.
FROM : 베이스 이미지 생성
FROM은 베이스 이미지를 생성하는 역할을 한다.
Docker 컨테이너를 특정 초기 이미지를 기반으로 추가적인 셋팅을 할 수 있다.
여기서 예기한 '특정 초기 이미지'가 곧 베이스 이미지이다.
사용법
# 문법
FROM [이미지명]
FROM [이미지명]:[태그명]
[실습] FROM : 베이스 이미지 생성
Dockerfile 만들기
# JDK 17
FROM openjdk:17-jdk
Dockerfile을 기반으로 이미지 만들기
docker build -t my-jdk17-server .
이미지를 기반으로 컨테이너 띄우기
docker run -d my-jdk17-server
컨테이너 조회하기
docker ps # 실행되고 있는 컨테이너가 없다.
docker ps -a # 확인해보니 컨테이너가 종료되어 있다.
Docker의 컨테이너는 내부적으로 필요한 명령을 다 수행하면 컨테이너가 저절로 종료된다.
컨테이너 내부로 들어가서 jdk가 잘 깔렸는지 확인해보기
종료된 컨테이너에 들어가서 디버깅하고 싶을때
FROM openjdk:17-jdk
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 500초 동안 시스템을 일시정지 시키는 명령어
docker build -t my-jdk17-server . # 이미지 빌드
docker run -d my-jdk17-server # 컨테이너 실행
docker ps # 실행 중인 컨테이너 조회
docker exec -it [컨테이너 ID] bash # 컨테이너 접속
java -version # JDK 설치되어 있는 지 확인
COPY : 파일 복사( 이동 )
# 문법
COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로]
# 예시
COPY app.txt /app.txt
-- 와일드 카드 사용해보기
FROM ubuntu
COPY *.txt /text-files/
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용 코드
-- .dockerignore 사용해보기
.dockerignore
readme.txt
Dockerfile
FROM ubuntu
COPY ./ /
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용 코드
--> readme.txt만 복사가 안된다.
ENTRYPOINT : 컨테이너가 시작할때 실행되는 명령어
# 문법
ENTRYPOINT [명령문...]
# 예시
ENTRYPOINT ["node", "dist/main.js"]
예제
FROM ubuntu
ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
docker build -t my-server .
docker run -d my-server
docker ps -a
docker logs [Container ID]
댓글을 작성해보세요.