Docker 이미지와 컨테이너

데브코스

목록 보기
109/131

도커 이미지 (Docker images)

  • 응용을 실행하는 데 필요한 모든 파일들과 그것을 실행하는 방법을 한데 묶어 놓은 것
  • 상태를 저장하지 않는 (stateless) 방식 - 네트워크로 전송, 레지스트리에 저장, 이름 및 버전 지정 가능
  • 계층화되어 있다는 특징을 갖고 있으며, 어떤 이미지로부터 다른 이미지를 만드는 것이 가능

도커 컨테이너 (Docker containers)

  • 이미지의 실행 인스턴스
  • 하나의 이미지로부터 여러 컨테이너 (인스턴스)를 만들어 동일한 응용을 여러 개 실행할 수 있음(각각은 독립)
  • 상태를 저장하는 (stateful)방식 - 컨테이너를 사용하면서 상태를 변경할 수 있음
    - 그러나 컨테이너가 소멸하면 이 상태도 잊어버림

도커 이미지를 이용해서 컨테이너를 만들어 실행할 수 있다.

1. 도커 이미지는

  • 계층 구조를 가지고 있음
  • 컨테이너를 만드는 데 이용되는 거푸집으로서 상태를 저장하고 있지 않음.
  • 이미지 레지스트리를 통하여 네트워크를 통해 전송 가능

2. 도커 컨테이너는

  • 이미지를 이용하여 만들어진, 응용 소프트웨어를 실제로 실행하는 격리된 환경
  • 도커 엔진에 의해서 관리되며 마치 컴퓨터 하나가 새로 생겨서 정해진 일을 수행하는 것과 같은 모습을 보여줌
  • 이미지의 실행 인스턴스
  • 실행 상태를 유지함

docker images : 내가 어떤 이미지를 가지고 있는지 보여줌.

docker ps : 현재 실행 중인 컨테이너들이 뭐가 있는가를 보고 싶으면.

docker rmi [삭제할 이미지 이름, ID] : 삭제하고 싶은 이미지가 있다면 삭제하는 법, 이미지 이름 말고 id를 넣으면 id로도 삭제 가능

아마 실행을 껐어도 어디서 사용 중이라 라고 하면서 삭제가 안되는 경우가 있음.
그럴때에는 docker ps -a 를 확인해서 컨테이너 id를 확인하고 삭제 요망

만약 컨테이너 id로 삭제하고 싶으면 : docker rm [컨테이너 id]
위의 명령어로 names를 가지고 삭제할 수도 있음 : docker rm [컨테이너 names]

rmi에서 i가 있으면 images를 나타내기에 이미지를 삭제하는 것이고
rm은 컨테이너를 삭제하는 것임.

docker stop [컨테이너 이름/id] : 현재 실행 중인 컨테이너의 실행을 중단, 컨테이너가 없어지지는 않음


이미지 생성 자동화

Docker file

  • 계층 구조를 이용하여 도커 이미지를 만드는 절차를 기술하는 파일(텍스트)
  • FROM [--platform=][AS]
  • RUN
  • ENTRYPOINT["executable", "param1", "param2"]
  • 이미지 빌드 명령어
    • docker build [OPTIONS] PATH | URL |

요약 정리

  1. 도커의 편리함( CI/CD 관점에서 생각해보기)
  • 응용을 실행하는 데 이용되는 실제 (물리적) 컴퓨터 환경과 독립적으로 통일된 실행 환경 제공 가능
  • 이미지로부터 여러 개의 동일한 컨테이너 인스턴스를 만들고 실행 가능
  • 필요한 소프트웨어 도구 및 설정 파일 등을 사전에 지정해두고 알려진 상태로 컨테이너 생성 가능(자동화!)
  1. 남아있는 일들
  • 환경 변수의 이용
  • 컨테이너들 사이 및 호스트와 컨테이너 사이에 TCP/IP 를 이용한 통신 가능하게 하기
  • 호스트와 컨테이너 사이의 불륨 공유
  • 도커 클린업

컨테이너 이름 지정하기
1. 도커 컨테이너는 이름과 ID (고유 해시 값)에 의하여 식별

  • 이름을 지정하지 않으면 docker가 컨테이너를 만들 때 이름을 자동 부여
  • 그러나 관리 편의 및 자동화를 위해서 이름을 지정하는 것이 필요해짐
    • 명령어 : docker run --name <컨테이너 이름><이미지>
  • 이미지 전체 삭제
  • docker image prune -a

컨테이너 안의 파일들에 접근하는 방법
1. 실행하고 있는 컨테이너와 호스트 사이의 파일 복사

  • 명령어 docker cp 를 이용
  1. 이미지 빌드할 때 호스트로부터 파일을 컨테이너에 추가
  • dockerfile 안에 ADD 지시자를 활용
  1. 바인드 마운트
  • docker -v 옵션으로 호스트의 특정 디렉토리를 컨테이너와 공유
  1. 도커 볼륨
  • docker -v 옵션으로 호스트와 공유하는 것은 비슷하지만 컨테이너가 마운트하는 것은 추상화된 볼륨
profile
Dive Head First | Work Super Hard | Attract Great People

0개의 댓글