Docker Hub
베이스 이미지 : ubuntu, centos, debian
공식 이미지 : ruby golang java python
회원가입만 하면 대용량의 이미지를 무료로 저장할 수 있고 다운로드 트래픽 또한 무료이다.
단, 기본적으로 모든 이미지는 공개되어 누구나 접근 가능하므로 비공개로 사용하려면 유료 서비스를 이용해야 함 (한개는 무료)
hub에서는 "Created Automated Build" 기능을 이용할 수 있음
Docker hub는 maven repository와 같이 외부에 공개되어 있는 도커 이미지 레포지토리로
docker pull 명령을 이용하여 컨테이너를 로컬에 받아 오거나, Docker image 빌드 시 베이스 이미지 등을 받아오는데 주로 사용됨
Docker Registry
- Docker hub는 반드시 public으로만 이미지를 push 할 수 있으며, 개인사용자는 하나의 이미지만 private으로 사용할 수 있음
- 도커 이미지 등이 회사 내부에서 비공개적으로 사용되거나, 사설 네트워크 등에서 사용되기 위해서는 내부 서버에 도커 Registry를 구축해야함
도커 서비스 환경
- docker-compose라는 여러 Docker 컨테이너를 통합적으로 관리하는 cli 프로그램으로서 docker를 설치하면 번들로써 제공한다
- 컨테이너 기반을 이용하여 단순한 저장공간 컨테이너를 만들어 저장공간을 container끼리 연결할 수 있으며, 실행한 호스트의 저장공간에도 접근 가능함
- Docker는 게스트 OS를 설치하지 않음
- Docker는 하드웨어 가상화계층이 존재하지 않기 때문에 메모리접근, 파일접근 등 관련한 기능에서 직접 접근하기 때문에 가상화보다 빠른 성능을 보여줌
- Docker 프로그램에서 다양한 APID를 제공하기 때문에 원하는 만큼 자동화가 가능함
도커 서비스 환경 장점
1. 확장성
- 이미지만 만들어 놓으면 컨테이너만 관리
- 개발서버나 테스트서버 운용 간편
2. 표준성
- 컨테이너라는 표준으로 서버를 배포하므로 모든 서비스들의 배포과정이 동일
3. 이미지
- 이미지에서 컨테이너를 생성하기 때문에 반드시 이미지를 만드는 과정이 필요
- 이미지를 저장할 곳이 필요
4. 설정
- 설정은 보통 환경변수로 제어
- 컨테이너를 띄울 때 환경변수를 같이 지정
- 하나의 이미지가 환경변수에 따라 동적으로 설정파일을 생성하도록 만들어야 한다.
5. 공유자원
- 컨테이너는 삭제 후 새로 만들면 모든 데이터가 초기화 됨
- 업로드 파일을 외부 스토리지와 링크하여 사용하거나 S3같은 별도의 저장소 필요
- 세션이나 캐시를 파일로 사용 시 memcached나 redis와 같은 외부로 분리
서비스 빌드 및 배포 (Docker 에서 제시하는 개발-배포 Flow)
1. 초기 구축
- 코드가 배포될 클라우드의 인프라를 구축하는 일을 의미함
2. 스케일 조정
- docker 로드밸런싱 (Cluster의 worker node추가, Service의 Task Container 수를 늘림)
- Swarm Cluster의 로드 밸런싱
3. 코드 배포
- 소스 코드 수정 후 docker image build 하기
- Docker Hub Repository 에 새로 만든 이미지 push 하기
docer-compose라는 여러 Docker 컨테이너를 통합적으로 관리하는 cli 프로그램으로써 docker를 설치하면 번들로써 제공한다.
도커 컴포즈를 사용하면 컨테이너 실행에 필요한 옵션을 docker-compose.yml이라는 파일에 적어둘 수 있고, 컨테이너 간 실행 순서나 의존성도 관리할 수 있습니다.
'Docker' 카테고리의 다른 글
| [Docker] 도커 컨테이너 (Docker Container) (0) | 2022.06.15 |
|---|---|
| [Docker] Docker 개요 (0) | 2022.06.15 |