본문 바로가기
Docker/Udemy Docker & Kubernetes

섹션2. Docker 이미지 & 컨테이너: 코어 빌딩 블록

by YoonJong 2023. 11. 24.
728x90

### 이미지
모든 설정 명령과 모든 코드가 포함된 공유 가능한 패키지
이미지는 멀티 레이어를 포함한다.


### 컨테이너
이미지의 구체적인 실행 인스턴스
이미지를 기반으로 컨테이너를 실행한다.
이미 존재하는 이미지를 사용한다. -> Docker Hub

- Docker run node
- Docker ps -a
- Docker run -it node  -> 대화형 세션을 노출하고 싶을 때 ( 터미널로 들어감 )

### Dockerfile 을 사용하여 자체 이미지 빌드하기
==이미지는 컨테이너의 템플릿이어야 한다.==
==이미지를 실행하는 것이 아니라, 이미지를 기반으로 컨테이너를 실행한다.==
- DockerFile 파일 생성

FROM node

WORKDIR /app  
// 작업 디렉토리 설정 -> 이후 명령어는 /app 폴더 안에서 실행된다.

COPY . /app
// 첫번째 . 은 이 프로젝트의 모든 폴더, 하위 폴더 및 파일을 복사해야한다는 것을 의미
// 두번째 . 은 이미지 내부의 경로 / 컨테이너 내부의 /app 에 복사된다.

RUN npm install

EXPOSE 80
// 포트 설정

CMD ["node", "server.js"]
// 이미지가 생성될 때 실행되지 않고 이미지를 기반으로 컨테이너가 시작될 때 실행된다.



- Docker build -> DockerFile 기반으로 새 커스텀 이미지를 빌드
- docker run -p 3000:80 이미지 -> 3000 로컬 , 80 노출 포트 
- 코드를 변경할 때 마다 이미지를 다시 빌드해야한다. -> 쉽게 하는 방법을 배울 예정
- docker build 를 할 때 해당 결과값을 캐싱한다.
    -> 코드를 변경하지 않고 다시 build 하면 순식간에 완료.
    -> 코드를 변경하고 다시 build 하면 캐시의 일부분만 사용하기 때문에 시간이 더 걸린다.
- --help 명령어를 이용해서 옵션을 확인할 수 있다.
- docker run 의 디폴트 모드는 attached(연결) 모드이다 -> 실행하면 커맨드에 입력 불가 , console.log 는 찍힌다.
- docker start 의 디폴트 모드는 detached 이다.
- -d 옵션을 사용해서 detached(분리)로 실행할 수 있다. -> 다른 작업 수행 가능
- docker logs 옵션을 사용해서 로그를 확인 할 수 있다. -f 옵션을 추가 하면 이전의 로그와 다음에 찍히는 것을 볼 수 있다.

- 실행중인 컨테이너와 컨테이너로 실행중인 애플리케이션은 상호작용할 수 없다.
- -it 옵션을 이용한다 -> 무언가 입력할 수 있다. 컨테이너는 입력을 받을 수 있고 컨테이너에 의해 노출되는 터미널도 얻을 수 있다. ( interactive, tty )
- docker start -ai 를 이용해서 다시 시작하면서 입력받을 수 있다.

- 컨테이너에 속한 이미지는 삭제할 수 없으므로, 컨테이너를 먼저 제거해야 한다.
- 아래 명령어(삭제) 공백을 기준으로 한번에 삭제 가능
- docker rm 컨테이너명 -> 컨테이너 삭제
- docker rmi 이미지ID  -> 이미지 삭제 
- docker image prune -> 사용하지 않는 이미지 모두 삭제
- —rm -> 컨테이너가 종료될때 자동 제거 
- docker image inspect 이미지 -> 이미지 점검

### 컨테이너/컨테이너로 파일 복사하기
- docker cp 


### 컨테이너와 이미지에 이름 지정 & 태그 지정하기
- docker run —name 컨테이너이름 -> 컨테이너 이름 설정
- FROM node:12 -> 12버전 태그 설정
- docker build -t 레포지토리이름:태그이름 . -> 레포지토리, 태그 이름 설정


### 이미지 공유하기 ( docker hub )
- docker login -> 도커허브에 푸시하기 위해서는 로그인 해야한다.


### 이미지 가져오기
- docker pull 도커허브 이미지경로 -> 도커허브에서 이미지 풀

728x90

댓글