안녕하세요 임오군란과 민씨입니다.
오늘은 도커에 대해 알아보는 시간을 가져보도록 하겠습니다.
도커에 대한 개념은 다른 게시글에서도 상세히 다뤄진 부분이라 넘어가도록 하겠습니다.
1. docker container 를 실행하는 방법
1. docker run abcdefg
이 명령 대신
2. docker run abc
이 명령을 실행할 수도 있습니다.
또는 "a"로 시작하는 다른 이미지 ID가 없으면, 다음과 같은 명령을 실행할 수도 있습니다.
3. docker run a
이는 ID를 필요로 하는 모든 Docker 명령어에 적용됩니다.
2. Image Layer
docker의 컨테이너 빌드는 Dockerfile에 의해 이루어지게 됩니다. 이때 파일명은 반드시 Dockerfile이여야한다는 점 유의해주세요.
FROM node
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE 80
CMD ["node", "server.js"]
이미지를 빌드 시 이미지를 빌드하고 닫습니다. 무언가를 업데이트를 해야할 경우 다시 빌드해야만 합니다.
도커는 레이어 기반입니다. 이미지를 빌드하거나 다시 빌드할 때 모든 코드들은 다시 재검토됩니다.
[+] Building 0.1s (9/9) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 31B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/node:latest 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 184B 0.0s
=> [1/4] FROM docker.io/library/node 0.0s
=> CACHED [2/4] WORKDIR /app 0.0s
=> CACHED [3/4] COPY . /app 0.0s
=> CACHED [4/4] RUN npm install 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:1b81e20c0f344e734bf408220d5d833ecdff351914c2e9ac0617a7015d6bcab6 0.0s
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
캐시를 사용하여 명령어가 동일할 경우 명령을 재실행하지 않습니다.
대신 매 빌드시 모든 명령을 캐시하여 재사용할지 검토하고 또한 모든 명령은 도커파일의 레이어를 기반으로 합니다.
감사합니다.
댓글