🤓 스터디/🐳 [Udemy] Docker & Kubernetes 실전가이
[ Udemy : Docker & Kubernetes 실전가이드 (2) ] 이미지, Dockerfile 이란?
Mr.Baobab
2025. 2. 23. 17:20
반응형
이미지
컨테이너의 정보를 담은 것으로, 블루 프린트(청사진)으로 이해하면 되는데, 한개의 이미지로 여러개의 컨테이너를 복제할 있다.
이미지는 기존에 만들어진 즉, 다른사람이 Docker Hub라는 사이트에 올려진 이미지를 사용해도 되고 직접 만들어도 된다.
이미지 만들기 with Dockerfile
직접 이미지를 만든다고 했을때, 사용할 수 있는건 Dockerfile이다. Dockerfile이라는 이름의 파일을 만들고 아래와 같은 형식으로 작성한다.
FROM [baseImage]
// 기반이 되는 이미지 : docker 허브 이미지 또는 내 이미지
WORKDIR /app
COPY . /app
// 첫 번째 . : 복사할 파일 지정, 이 프로젝트 파일에 모든 파일을 복사 하겠다
// 두 번째 /app : 복사할 경로, .은 루트 폴더를 뜻함
RUN npm install
// COPY를 끝낸 후 명령어 실행 여기서는 "npm install"
// 명령어가 루트에서 실행되기 때문에 경로가 지정돼있는 경우 WORKDIR로 미리 지정해 놔야함
RUN node server.js
// 이미지의 종속성을 위해 이런 명령어는 X
CMD ["node", "server.js"]
// 이미지가 생성 될때가 아닌, 컨테이너가 실행될때 실행 이거 사용이 좋음
EXPOSE 80
//로컬 환경 포트와, 컨테이너 포트는 분리되어 있기 때문에 이렇게 지정 해줘야함
이후 cmd(터미널)를 키고 Dockerfile이 있는 위치로 이동해 docker build . 명령어를 입력하면 Dockerfile을 찾아 작성된 내용을 바탕으로 이미지를 생성한다.
도커 이미지는 읽기 전용
도커의 이미지는 읽기 전용이다. 만약 이미지를 생성한 다음 이미지에 포함된 다른 파일을 수정했다고 가정하자. 그렇게 되면 이미 생성된 이미지에는 수정사항이 반영되지 않는다. 즉, 다시 이미지를 생성해야하는 것이다.
도커는 레이어(Layer) 기반
Docker는 이미지를 생성할시 Dockerfile의 각 명령어 줄 마다 레이어를 생성하고 관리하는데 이는 이미지를 만드는 속도를 증가시키기 위함이다. 작은 변경사항이 생길시 변경된 사항만 업데이트 시킨다는 것이다. 이 방식은 컨테이너 운영에도 영향을 끼치는데 컨테이너는 이러한 이미지의 레이어 위에서 실행레이어 하나를 얹기만 하는 것이다.
도커 명령어
- docker run
- 컨테이너를 만들고 실행
- 터미널 입력을 막음
- docker start
- 컨테이너 실행
- 터미널 입력을 막지 않음
- docker rm
- 컨테이너 제거
- docker rmi
- 이미지 제거
- docker cp 복사할파일 붙여넣기할경로
- 로컬 파일을 실행중인 컨테이너 파일에 복사
- 반대로도 가능
🙄 느낀점
이해는 되지만 아직 활용할 수 있는 방법이 많이 떠오르지 않는다. 해당 강의가 끝나갈 때 쯤 작은 프로젝트를 진행해야 겠다.
반응형