전은성 Dev
AI
AWS
업무에 바로쓰는 AWS 입문
Database
Postgresql
Develop
Docker
Etc
Git
Java
Live-Study
Kubernetes
Linux
React
처음 만난 리액트
Sap
Spring
Home
Contact
Copyright © 2024 |
Yankos
Home
> Docker
Now Loading ...
Docker
도커 교과서 4장
애플리케이션 소스 코드에서 도커 이미지까지 Dockerfile 가 있는데 빌드서버가 필요할까? 빌드 툴 체인을 통해 한번에 패키징해서 공유하면 편리 도커만 갖춰진다면 컨테이너를 통해 어떤 환경에서든 애플리케이션 빌드, 실행 가능 도커허브를 통해 빌드도구가 내장된 공식 이미지 제공 애플리케이션 빌드 실전 예제 ```dockerFile FROM diamol/maven AS builder WORKDIR /usr/src/iotd COPY pom.xml . RUN mvn -B dependency:go-offline COPY . . RUN mvn package app FROM diamol/openjdk WORKDIR /app COPY –from=builder /usr/src/iotd/target/iotd-service-0.1.0.jar . EXPOSE 80 ENTRYPOINT [“java”, “-jar”, “/app/iotd-service-0.1.0.jar”] ``` FROM 인스트럭션 이 여러개 있으므로 멀티 스테이지 빌드 적용된 스크립트빌드 절차가 정의 builder 하는 일 diamol/maven 메이븐 OpenJDK 포함 이미지에 작업 디렉토리 만든 다음 pom.xml 파일 복사하며 시작. 메이븐 수행할 빌드절차 정의 첫번쨰 RUN 인스트럭션에서 메이븐이 실행돼 필요한 의존 모듈 다운. 상당한 시간이 걸리기에 별도 단계 분리하여 레이어 캐시 활용 새로운 의존 모듈이 추가될 경우, 이 단계 다시 실행, 없으면 이미지 캐시 재사용 COPY . . 인스트럭션 통해 소스 코드 복사 => 도커 빌드가 실행중인 디렉터리에 포함된 모든 파일과 서브 디렉터리를 현재 이미지 내 작업 디렉토리로 복사 mvn package 명령어 실행. builder 단계 이후 작업 디렉터리 만든 후, builder 단계에서 만든 JAR 파일 복사 80포트를 주시하는 애플리케이션 -> EXPOSE 인스트럭션을 통해 외부로 공개 ENTRYPOINT 인스트럭션 : CMD 인스트럭션 같은 기능 멀티 스테이지 Dockerfile 스크립트 이해하기(왜 유용한지) 표준화 : 버전 차이로 인한 실패 감소 성능 향상 : 캐싱 빌드과정을 조정해 이미지를 가능 한 작게 유지
Docker
· 2025-07-06
도커 교과서 3장
도커 이미지 만들기 도커 허브에 공유된 이미지 사용하기 web-ping 어플리케이션 이미지 pull 명령어 docker image pull diamol/ch03-web-ping 도커 이미지를 다운받을 때 각각의 파일을 이미지 레이어 라고 부른다. 환경변수 도커 컨테이너도 별도의 환경변수를 가질 수 있다. 컨테이너의 호스트명, IP 주소처럼 Docker 가 부여해준다. 환경변수를 사용한 docker 명령어 docker rm -f web-ping docker container run --env TARGET=google.com diamol/ch03-web-ping # google 도메인을 타겟으로 요청 보내는 명령어 Dockerfile 작성하기 web-ping 애플리케이션 Dockerfile 스크립트 FROM diamol/node -- 이미지 시작점 (web-ping 어플리케이션 실행위한 런타임 Node.js) ENV TARGET="도메인" -- 환경 변수 값을 지정하기 위한 인스크럭션 ENV METHOD="HEAD" ENV INTERVAL="3000" WORKDIR /web-ping -- 해당 디렉터리를 작업 디렉토리로 지정 COPY app.js . -- 로컬 파일 시스템의 파일 혹은 디렉터리를 컨테이너 이미지로 복사하는 인스트럭션 CMD ["node", "/web-ping/app.js"] -- 컨테이너가 시작될 때 실행할 명령어를 지정하는 인스트럭션 컨테이너 이미지 빌드하기 이미지 빌드를 위해선, 이미지 이름, 파일 경로 추가 지정해줘야함 docker image build --tag web-ping . -- tag 옵션은 이미지 이름을 지정하는 옵션 -- .은 현재 디렉터리에서 Dockerfile을 찾겠다는 의미 ※문제 발생 시, 도커 엔진 -> 현재 작업 디렉토리 -> build 명령어 정확한지 확인 이미지 목록 확인 docker image ls 'w*' -- w로 시작하는 이미지 목록 도커 이미지와 이미지 레이어 이해하기 #이미지 히스토리 확인하기 docker image history web-ping 도커 이미지는 이미지 레이어가 모인 논리적 대상 레이어는 도커 엔진의 캐시에 물리적으로 저장된 파일 이미지 레이어는 여러 이미지와 컨테이너에서 공유 docker 에서는 이미지가 비슷한 용량을 가진 것으로 보이지만, Node.js 런타임을 포함한 이미지가 런타임을 공유하였을 때, 각 Image의 실제 용량은 image ls로 호출한 SIZE 값아랑 다르다. (system df로 확인 가능) 따라서 공유되는 레이어는 수정할 수 없어야 한다. (읽기전용으로 구현) 이미지 레이어 캐시를 이요한 Dockerfile 스크립트 최적화 # 이미지의 파일을 수정 후 다시 빌드 시, 새로운 이미지 레이어 생성. docker image build -t web-ping:v2 . Docker 스크립트 인스트럭션은 각 하나의 이미지 레이어와 1:1 연결 결과가 이전과 같다면 이전 캐시된 레이어 사용 따라서 잘 수정하지 않는 인스트럭션이 앞으로 오도록 작성하는 것이 좋다. 최적화 한 스크립트 (핵심) FROM diamol/node CMD ["node", "/web-ping/app.js"] ENV TARGET="도메인" METHOD="HEAD" INTERVAL="3000" WORKDIR /web-ping COPY app.js . ## 현재 명령어 빼고 모든 레이어를 캐시에서 재사용
Docker
· 2025-05-28
도커 교과서 2장
도커의 기본적인 사용법 컨테이너 실행 컨테이너로 애플리케이션 실행 명령어 애플리케이션은 미리 도커로 실행되도록 패킹돼 누구나 사용되도록 공유된 것 docker container run diamol/ch02-hello-diamol 애플리케이션을 컨테이너에서 실행할 수 있도록 패키징(빌드) -> 다른사람들과 공유(공유) -> 패키지 내려받은 사람이 컨테이너를 통해 애플리케이션 실행(실행) 컨테이너란 무엇인가? 애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성을 패키징 하는 표준 소프트웨어 단위입니다. 가상머신 : 호스트 컴퓨터의 운영체제를 공유하지 않음 컨테이너 : 호스트 컴퓨터의 운영체제 공유 컨테이너를 원격 컴퓨터처럼 사용하기 --tty : 터미널 세션을 통해 컨테이너 조작 --ìnteractive : 컨테이너에 접속된 상태 docker container run —interactive —ty diamol/base 실행중인 모든 컨테이너 정보 docker container ls 컨테이너에서 실행중인 프로세스 목록 docker container top [컨테이너 ID prefix] 컨테이너에서 수집된 모든 로그 출력 docker container logs [컨테이너 ID prefix] 컨테이너의 상세한 정보 docker container inspect [컨테이너 ID prefix] 컨테이너 사용해 웹사이트 호스팅하기 상태 상관없이 모든 컨테이너의 목록 확인 docker container ls —all 컨테이너 실행하고 백그라운드에서 계속 동작하게 하려면 간단한 웹사이트 호스팅 docker container run —detach —publish 8088:80 diamol/ch02-hello-diamol-web --detach : 컨테이너 백그라운드에서 실행 --publish : 컨테이너의 포트를 호스트 컴퓨터에 공개 컨테이너의 상태 확인 docker container stats [컨테이너 ID prefix] 도커가 컨테이너를 실행하는 원리 도커엔진 도커의 관리 기능을 맡은 컴포넌트 -> 이미지 pull, 도커 리소스 만드는 일도 담당 API 통해 맡은 기능 수행 (도커 API) 도커 명령행 인터페이스 : 도커 API의 클라이언트 (docker 호출하도록 도와주는 CLI)
Docker
· 2025-05-28
<
>
Touch background to close