벡엔드/docker

[docker] 도커란? 도커의 기본

코딩하는이씨 2023. 10. 24. 19:57
728x90
반응형

도커란?


 도커란 컨테이너 환경을 도입해서 데이터와 프로그램을 격리 시키는 기능을 제공하는 소프트 웨어이다.

 도커는 컨테이너 환경을 손쉽게 만들 수 있는 기능과 각 컨테이너를 손쉽게 동작시킬 수 있는 도커 엔진을 제공하며 도커만 설치되어 있다면 운영체제가 달라도 컨테이너를 옮길 수 있다. 

 도커를 이용한다면 물리적 서버의 차이, 서버 구성의 차이를 무시할 수 있다. 이로 인해 개발 서버와 운영서버 간의 환경차이로 인한 문제를 방지할 수 있다.

 

컨테이너

 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술이다.

도커 이미지

 컨테이너 실행에 필요한 파일, 설정 값 들을 포함하고 있다. 

 컨테이너의 상태가 바뀌거나 삭제되어도 이미지는 변하지 않는다.

 

도커를 이용해 데이터와 프로그램을 격리시켜야 하는 이유는 무엇일까?

 데이터와 프로그램을 격리시키지 않는다면 서로에게 영향을 줄 수 있고 서로에게 강한 의존성을 가질 가능성이 있다. 이로인해 한개의 프로그램만을 위해 수정을 할 때 오류발생 가능성이 있다.

 

도커의 장점

1. 한대의 물리 서버에 여러대의 서버를 띄울 수 있다.

2. 서버 관리가 용이하다.

3. 다루기 쉽다

도커의 단점

1. 호스트 서버에 문제가 생기면 모든 컨테이너에 영향을 미친다.

도커의 구조는

물리서버 - 리눅스 운영체제 - 도커 엔진 - 컨테이너 형태이다.

 

 

파일 복사


파일 복사가 필요한 경우는 일반적으로 데이터 복원, 파일 공유시에 필요하다.

데이터 복원

 컨테이너 에서 호스트로 데이터를 백업하고, 호스트에서 컨테이너로 데이터를 복원할 때 파일 복사가 사용된다. 이렇게 하면 중요한 데이터를 안전하게 보관하고 컨테이너가 삭제되더라도 데이터를 유지할 수 있다.

파일 공유

 호스트와 컨테이너간 파일 공유시에도 파일 복사를 사용한다. 

파일 복사 명령어

  • 양방향 모두 가능하다

 컨테이너로 파일을 복사하는 커맨드 ( 호스트 —> 컨테이너 )

  • docker cp [호스트 경로] [컨테이너 이름] : [컨테이너 경로]
  • ex) docker cp ~/example_html/index.html apa000ex19:/usr/local/apache2/htdocs/

 호스트로 파일을 복사하는 커맨드

  • docker cp [컨테이너 이름] : [컨테이너 경로] [호스트 경로]

 

볼륨 마운트


컨테이너의 휘발성

 컨테이너가 시작되고 실행되는 동안 컨테이너 내의 데이터와 상태는 보존된다. 컨테이너가 종료되게 되면 데이터와 상태가 사라지게 되는데 이를 컨테이너의 휘발성이라 한다.

 컨테이너의 이러한 휘발성을 극복하기 위해 볼륨이라는 저장 공간을 이용해 데이터의 영속성을 보장한다.

볼륨

  • 컨테이너와 호스트 머신 간 데이터를 안전하게 저장, 관리 및 공유하기 위한 독립적인 저장 공간
  • 도커 엔진에 의해 관리되며 호스트머신의 파일 시스템과는 분리되어 작동
  • 데이터의 영속성을 보장하고 여러 컨테이너 간에 데이터를 공유 및 백업이 가능

데이터 퍼시스턴시

  • 데이터를 옮기는 작업 대신 처음부터 컨테이너 외부에 데이터를 보관하고 이를 컨테이너에서 사용하는 개념

마운트

  • 호스트의 파일 시스템이나 볼륨을 도커 컨테이너 내부의 특정 경로에 연결하는 작업

마운트 종류

  1. 바인드 마운트
    • 호스트 머신의 디렉토리를 컨테이너 내부에 마운트하여 데이터를 실시간으로 동기화 하는 방식
    • 주로 개발중인 소스코드나 파일을 컨테이너와 컴퓨터 간에 실시간으로 공유하고 변경내용을 바로 확인할 때 사용
    • 개발 작업을 편리하게 하고 컨테이너와 호스트 간에 데이터를 손쉽게 주고받을 수 있음
  2. 볼륨 마운트
    • 볼륨을 컨테이너에 디스크 형태로 마운트되어 안전하게 데이터를 저장하고 공유하는 방식
    • 데이터베이스나 중요한 설정 파일과 같은 컨테이너 안의 파일을 안전하게 보관하고 다른 컨테이너와 공유할 때 사용
    • 컨테이너 간 데이터를 안전하게 공유하고 영속성을 확보
728x90
반응형

'벡엔드 > docker' 카테고리의 다른 글

[docker] 도커 기본 명령어  (0) 2023.10.24