AI 부트캠프/챕터4(12.05~12.27)

TIL 59

musukie 2024. 12. 10. 08:22

도커 강의에서 여러 가지 실습을 진행했다. 실습한 내용은 제외하고 배웠던 여러 가지 개념들을 간단하게 정리하겠다.

AWS( Amazon Web Services)

AWS는 아마존이 제공하는 클라우드 컴퓨팅 서비스 플랫폼이다. 기업이나 개인이 데이터를 저장하거나 애플리케이션을 개발하고 실행할 수 있는 서버, 데이터베이스, 스토리지, 네트워킹 같은 IT 자원을 인터넷을 통해 제공해준다. 쉽게 말해, 인터넷을 통해 필요한 컴퓨터 자원을 빌려 쓸 수 있는 서비스인 것이다. 예를 들어, 서버를 직접 사서 운영하지 않아도 AWS에서 필요한 만큼만 쓰고 비용을 지불하면 된다. 대표적인 서비스는 아래와 같다.

  • EC2 : 가상 서버
  • S3 : 데이터 저장소
  • RDS : 데이터베이스 서비스
  • Lambda : 코드 실행 서비스

Docker Volume

Docker Volume을 사용하는 가장 큰 이유는 Docker Container를 실행하면서 데이터를 보존하기 위해서다. Volume을 쓰면 Container가 사라져도 데이터는 그대로 남아있다. Docker 공식 사이트에서는 volume, bind mount, tmpfs mount(temporary file system mount) 중에서 volume을 가장 추천한다고 한다.

 

Container가 volume이나 bind mount를 쓰는 경우에는, Host에 있는 Filesystem에 데이터를 저장하게 된다. bind mount는 Filesystem의 어딘가를 절대 경로를 통해서 가리키게 된다. volume은 Filesystem의 특정 공간, Docker와 관련된 특정 공간에 데이터를 보관하게 된다.

Docker Network

도커 네트워크는 도커 컨테이너끼리 서로 통신할 수 있게 도와주는 네트워크다. 이걸 쓰면 컨테이너들이 서로 통신하는 걸 더 쉽게 할 수 있고, 보안도 더 강하게 만들 수 있다. 컨테이너 네트워크 모델(CNM)은 Sandboxes, Network, Endpoints로 구성된다. Sandboxes는 컨테이너를 외부 세계로부터 완전히 분리한다. Sandboxes로는 어떤 연결도 들어올 수 없다. Endpoints는 외부 세계와 Sandboxes 사이의 연결점으로 Sandboxes Network에 연결한다. 즉, Network Endpoint에서 다른 Endpoint로, 결국은 컨테이너에서 다른 컨테이너로 데이터를 소통하는 길이다.

Container

Container는 앱을 실행하는 데 필요한 모든 것을 담은 박스다. 앱 실행에 필요한 코드, 프로그래밍 언어, 라이브러리같은 것들이 모두 포함돼있다. Docker에서는 'Dockerfile'이라는 것을 사용해서 container를 만든다. 컨테이너는 컴퓨터 자원을 효율적으로 쓸 수 있게 하고, 컨테이너가 어디에서 실행되든 똑같이 잘 돌아가게 한다. 또 컨테이너는 서로 독립적이어서 한 컨테이너가 문제가 생겨도 다른 컨테이너에는 영향을 주지 않는다. 과거에는 OS와 라이브러리와 프레임워크와 앱을 다 같이 배포했었다. 그러나 가상화를 거쳐서 Container만 배포하는 방식으로 바꼈다.

'AI 부트캠프 > 챕터4(12.05~12.27)' 카테고리의 다른 글

TIL 61  (1) 2024.12.13
TIL 60  (1) 2024.12.11
WIL 9  (1) 2024.12.06
TIL 57  (0) 2024.12.06
TIL 56  (0) 2024.12.05