티스토리 뷰
docker에 대해 학습한 내용을 기록합니다.
인프런 따라하며 배우는 도커와 CI 환경 강의를 수강하고 있습니다.
Dockerfile이란?
이미지를 생성하는 방법
도커 이미지는 허브에서 가져올 수도 있지만, 직접 만들 수도 있습니다!
1. Dockerfile 작성하기
Dockerfile은 도커 이미지를 만들기 위한 설정 파일입니다.
컨테이너가 어떻게 행동해야 하는지에 대한 설정들을 정의합니다 ⭐
FROM
FROM 이미지:태그
베이스 이미지를 지정합니다. 도커 이미지는 여러개의 레이어 층으로로 구성되어있습니다. 이미지 위에 새로운 이미지를 중첩해가며 만들어지죠. 그중에서도 기반이 되는 레이어를 베이스 이미지라고 합니다. 간단히 OS라고 생각해면 됩니다. 태그를 명시하지 않으면 자동으로 최신버전이 지정됩니다.
COPY
COPY 리소스 디렉토리
해당 경로에 있는 파일이나 디렉토리를 복사하여 컨테이너의 파일 시스템에 추가합니다.
RUN
RUN 커맨드
이미지 빌드 과정에서 실행이 필요한 커맨드를 작성합니다. 보통 이미지 안에 특정 소프트웨어를 설치하기 위해 사용됩니다.
CMD
CMD ["커맨드", "파라미터1", "파라미터2"]
컨테이너가 시작되었을때, 실행할 실행 파일 또는 쉘 스크립트를 작성합니다.
WORKDIR
WORKDIR 디렉토리
작업 디렉토리를 지정할 수 있습니다.
`RUN``CMD``ENTRYPOINT``COPY``ADD` 명령어는 `WORKDIR`로 지정한 디렉토리에서 실행하게 됩니다.
2. Dockerfile 빌드하기
build 명령어로 Dockerfile을 도커 클라이언트에 전달시킬 수 있습니다.
Dockerfile이 있는 디렉토리에서 해당 명령어를 실행합니다.
docker build .
docker build ./
* `.`과 `./` 모두 현재 디렉토리를 의미합니다!
build 명령어가 실행되면 도커는 Dockerfile에 적힌 베이스 이미지와 명령어들을 바탕으로 임시 컨테이너를 생성합니다.
그리고 임시 컨테이너를 토대로 새로운 이미지를 만들어 줍니다. (이미지가 생성한 뒤 임시컨테이너 자동으로 삭제됩니다.)
도커 2.4.0+ 버전 업데이트로 인해서 Buildkit을 기본적으로 사용할 수 있게 되었습니다.
Buildkit을 사용하면 도커 빌드하는 과정에서 다른 출력 문구를 나타나게 됩니다.
기존 빌드 프로세스에서 나오는 출력 문구 :
---> bd70880ecc90
Successfully built bd70880ecc90
Buildkit이 기본으로 사용될 때 빌드 프로세스에서 나오는 출력 문구 :
=> => exporting layers 0.0s
=> => writing image sha256:aa19c32ksj94839dj2-2039ccbd9cddd 0.0 s
두 개의 ID 모두 컨테이너를 실행할 수 있는 아이디입니다.
docker run bd70880ecc90
docker run aa19c32ksj94839dj2-2039ccbd9cddd
이 둘 모두 같은 컨테이너를 실행하게 됩니다.
이제 도커가 만들어준 이미지의 해시를 넣어 run 명령어를 실행할 수 있습니다!
3. 이미지에 이름 주기
해시코드를 사용해 이미지를 사용하는 것은 상당히 불편한 일 입니다. 이름이 있으면 좋겠죠?
build시 t 옵션을 주어 이미지의 이름을 정할 수 있습니다.
docker build -t 이미지이름
아무렇게나 지어도 상관은 없지만 보통 사용되는 네이밍 규칙은 다음과 같습니다.
docker build -t 도커ID/프로젝트이름:버전 ./
# ex)
docker build -t rimo030/hello:1.0.0 ./
간단히 콘솔에 hello를 출력하는 이미지를 만들고 실행시켜 보겠습니다.
아래와 같은 Dockerfile을 작성하였습니다.
FROM alpine
CMD ["echo", "hello"]
echo 명령어를 이용하기 위해 리눅스 배포판중 하나인 alpine을 베이스 이미지로 지정하였습니다.
빌드 시 별도의 설치가 필요하지 않기 때문에 RUN은 생략하였고, 실행 명령어는 echo hello로 작성하였습니다.
Dockerfile이 있는 곳에서 터미널을 켜고 build 명령어로 이미지를 생성합니다. t 옵션으로 이름을 지정하였습니다.
docker build -t rimo030/hello:1.0.0 ./
생성된 이미지를 run 명령으로 실행합니다.
hello가 잘 출력된 것을 확인.
Dockerfile 설정옵션에 대한 내용은 계속 추가할 예정입니다. 감사합니다.
공부한 내용을 복습/기록하기 위해 작성한 글이므로 내용에 오류가 있을 수 있습니다.
'기타' 카테고리의 다른 글
[Issue Report] Axios Blob 응답과 에러 파싱 문제: 엑셀 다운로드 API 이슈 (3) | 2024.10.13 |
---|---|
[Git] Git 브랜치 전략 (0) | 2024.03.27 |
[Docker] 도커 명령어 정리 (0) | 2023.12.14 |
[Docker] 도커 시작하기 (0) | 2023.12.08 |
[Git] .gitignore이란? (0) | 2023.11.03 |