도커 (소프트웨어)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
도커(Docker)는 애플리케이션과 해당 의존성을 가상 컨테이너로 패키징하여 모든 운영체제에서 실행할 수 있게 해주는 소프트웨어 플랫폼이다. 프랑스에서 시작된 도커는 2013년 오픈 소스로 공개되었으며, 컨테이너 가상화를 통해 자원 효율성을 높이고 애플리케이션 개발 및 배포를 간소화한다. 도커는 도커 엔진, 이미지, 컨테이너, 레지스트리 등의 구성 요소로 이루어져 있으며, 도커 컴포즈, 도커 스웜과 같은 도구를 제공하여 컨테이너 기반 애플리케이션의 관리와 확장을 지원한다. 다양한 클라우드 플랫폼 및 자동화 도구와의 통합을 통해 애플리케이션 개발 환경 구축, 컨테이너화된 애플리케이션 배포에 활용되며, 자원 효율성, 쉬운 환경 구축, 삭제 및 복구의 용이성을 제공하지만, 호스트 리눅스 커널과의 관계에서 제약이 있을 수 있다.
더 읽어볼만한 페이지
- 컨테이너화 소프트웨어 - 쿠버네티스
쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈 소스 시스템으로, 구글의 Borg 시스템에서 영감을 받아 설계되었으며 파드, 서비스 등의 기능을 제공하여 클라우드 네이티브 환경에서 중요한 역할을 한다. - 컨테이너화 소프트웨어 - 오픈시프트
레드햇이 개발한 오픈시프트는 도커 컨테이너와 쿠버네티스를 기반으로 컨테이너 기반 애플리케이션 개발, 배포, 관리를 간소화하는 컨테이너 플랫폼 서비스다. - Go로 작성된 자유 소프트웨어 - 쿠버네티스
쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈 소스 시스템으로, 구글의 Borg 시스템에서 영감을 받아 설계되었으며 파드, 서비스 등의 기능을 제공하여 클라우드 네이티브 환경에서 중요한 역할을 한다. - Go로 작성된 자유 소프트웨어 - 테라폼 (소프트웨어)
테라폼은 해시코프에서 개발한 IaC 도구로, 선언적 구성을 통해 클라우드 인프라 및 서비스를 관리하며, 라이선스 변경 후 OpenTofu 프로젝트로 포크되어 리눅스 재단의 지원을 받고 있다. - 자유 가상화 소프트웨어 - LXC
LXC는 리눅스 커널의 cgroup과 네임스페이스 격리 기능을 이용하여 운영 체제 수준의 가상화를 제공하는 기술로, IBM 연구원들이 개발했으며 보안 강화 및 LXD 컨테이너 관리자 프로젝트를 통해 발전해왔다. - 자유 가상화 소프트웨어 - 커널 기반 가상 머신
커널 기반 가상 머신(KVM)은 리눅스 커널의 가상화 확장 기능으로, CPU와 메모리 가상화를 지원하며 QEMU와 함께 완전한 가상화 솔루션을 구성하고 다양한 관리 도구를 제공한다.
| 도커 (소프트웨어) - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 종류 | 운영 체제 수준 가상화 |
| 라이선스 | 아파치 2.0 라이선스 (도커 엔진, 리눅스 전용) 최종 사용자 사용권 계약 (도커 데스크톱) |
| 웹사이트 | 도커 공식 웹사이트 |
| 개발 | |
| 작성자 | 솔로몬 하익스 |
| 개발자 | 도커 주식회사 |
| 프로그래밍 언어 | Go |
| 플랫폼 | x86-64, ARM, s390x, ppc64le |
| 운영 체제 | 리눅스, 윈도우, macOS |
| 출시일 | 2013년 3월 20일 |
| 기타 | |
| 상태 | 자주 업데이트됨 |
2. 역사
솔로몬 하익스는 프랑스에서 PaaS 기업인 닷클라우드의 내부 프로젝트로 도커를 시작했다.[97] 닷클라우드는 2010년 Y Combinator 여름 스타트업 인큐베이터 그룹 기간 동안 Kamel Founadi, 솔로몬 하익스, Sebastien Pahl에 의해 설립되었으며 2011년에 출시, 2013년에 Docker Inc.로 이름이 변경되었다.
도커는 2013년 3월 오픈 소스로 출시되었고,[72] 같은 해 캘리포니아주 산타클라라에서 열린 PyCon에서 처음으로 공개되었다. 초기에는 기본 실행 환경으로 LXC를 사용했다. 1년 후인 2014년, 버전 0.9 출시와 함께 LXC를 Go 프로그래밍 언어로 작성된 자체 구성 요소인 ''libcontainer''로 대체했다.
2017년에 도커는 오픈 연구 및 개발을 위해 Moby 프로젝트|모비 프로젝트영어를 만들었다.
2. 1. 초기 개발
솔로몬 하익스는 프랑스에서 PaaS 기업인 닷클라우드의 내부 프로젝트로 도커를 시작했다.[97]도커는 2013년 3월 오픈 소스로 출시되었고,[72] 캘리포니아주 산타클라라에서 열린 PyCon에서 처음으로 공개되었다. 당시에는 기본 실행 환경으로 LXC를 사용했다. 1년 후, 버전 0.9 출시와 함께 Docker는 LXC를 Go 프로그래밍 언어로 작성된 자체 구성 요소인 ''libcontainer''로 대체했다.
2. 2. 오픈 소스 공개
도커는 2013년 3월에 오픈 소스로 공개되었으며,[72] 같은 해 캘리포니아주 산타클라라에서 열린 PyCon에서 처음으로 공개되었다. 초기에는 기본 실행 환경으로 LXC를 사용했다. 1년 후인 2014년, 버전 0.9 출시와 함께 LXC를 자체 구성 요소인 ''libcontainer''로 대체했는데, 이는 Go 프로그래밍 언어로 작성되었다.2. 3. libcontainer 도입
2014년, 버전 0.9 출시와 함께 Docker는 LXC를 자체 구성 요소인 ''libcontainer''로 대체했다. ''libcontainer''는 Go 프로그래밍 언어로 작성되었다.2. 4. 주요 파트너십
- 2013년 9월 19일: 레드햇(Red Hat)과 도커는 페도라, 레드햇 엔터프라이즈 리눅스(Red Hat Enterprise Linux)(RHEL) 및 오픈시프트(OpenShift)를 중심으로 협력 관계를 발표했다.
- 2014년 10월 15일: 마이크로소프트(Microsoft)는 도커 엔진을 윈도우 서버(Windows Server)에 통합하고 윈도우에서 도커 클라이언트 역할을 기본적으로 지원한다고 발표했다.
- 2014년 11월: 도커 컨테이너 서비스가 아마존 일래스틱 컴퓨트 클라우드(Amazon Elastic Compute Cloud)(EC2)에 발표되었다.
- 2014년 11월 10일: 도커는 스트라토스케일(Stratoscale)과의 파트너십을 발표했다.
- 2014년 12월 4일: IBM(IBM)은 도커가 IBM 클라우드와 더 긴밀하게 통합할 수 있도록 하는 도커와의 전략적 파트너십을 발표했다.
2. 5. 표준화 노력
2015년 6월 22일, 도커와 여러 회사들은 소프트웨어 컨테이너 표준화를 위한 오픈 컨테이너 이니셔티브(OCI) 설립에 참여하여, 벤더 및 운영 체제 독립적인 표준 개발을 위해 협력하고 있다고 발표했다.2. 6. Moby 프로젝트
2017년에 도커는 오픈 연구 및 개발을 위해 모비 프로젝트를 만들었다.2. 7. 주요 인수 및 채택
- 2015년 12월, 오라클 클라우드(Oracle Cloud)는 도커 컨테이너 스타트업인 스택엔진(StackEngine)을 인수 후 도커 컨테이너 지원을 추가했다.[5]
- 2016년 4월, Windocks는 도커의 오픈 소스 프로젝트를 윈도우로 포팅하여 SQL Server 지원을 확장했다.
- 2019년 5월, 마이크로소프트는 Windows Subsystem for Linux(WSL) 2 버전을 발표하고, 도커가 WSL 2에서 실행될 수 있도록 지원했다.
- 2023년 12월, 도커는 AtomicJar를 인수하여 테스트 기능을 확장했다.[7]
3. 기술적 특징
도커는 리눅스 커널의 가상화 기능에 접근하기 위해 여러 인터페이스를 사용한다.[70] 고급 API를 구현하여 프로세스들을 별도의 장소에서 실행할 수 있는 가벼운 컨테이너를 제공한다.[72]
도커는 유니온 파일 시스템 계층을 만들고 문서화하여 이미지를 가볍게 유지한다. 각 계층은 액션 재생성 방법을 완벽하게 기술하며, 레이어 업데이트만 전파하면 되므로 효율적이다. 451 리서치에 따르면, 도커는 응용 프로그램과 의존성을 가상 컨테이너에 담아 모든 리눅스 서버에서 구동 가능하게 하여 유연성과 이식성을 제공한다.[71]
도커 컨테이너는 가상 머신과 달리 별도의 운영 체제를 요구하지 않고, 커널 기능을 활용하여 리소스(CPU, 메모리, 블록 입출력, 네트워크 등) 및 격리된 이름공간을 사용한다. 이를 통해 운영 체제에 대한 응용 프로그램의 관점을 격리시킨다.[71] 도커는 `libcontainer` 라이브러리를 사용하거나, libvirt, LXC (리눅스 컨테이너), systemd-nspawn을 통해 간접적으로 리눅스 커널의 가상화 기능에 접근한다.[70][73]
도커는 매우 가볍기 때문에 하나의 서버나 가상 머신에서 여러 컨테이너를 동시에 실행할 수 있다. 컨테이너는 리소스 격리, 서비스 제한, 프로세스 예비를 통해 운영 체제에 대한 거의 완전한 개인화된 관점을 갖는다. 여러 컨테이너는 동일한 커널을 공유하지만, 각 컨테이너는 정의된 양의 리소스만 사용할 수 있다.
도커를 사용하면 여러 응용 프로그램, 작업, 프로세스들이 자율적으로 하나의 물리 머신이나 여러 가상 머신에서 구동될 수 있어 고도의 분산 시스템 생성이 단순해진다. Apache Cassandra, 몽고DB, Riak 같은 시스템을 위한 PaaS 스타일 배치 및 규모 증강이 가능하며, 작업 큐, 기타 분산 시스템 생성 및 운영도 단순화한다.[74][75] 컨테이너는 격리되어 자체 소프트웨어, 라이브러리, 구성 파일을 묶고, 잘 정의된 채널을 통해 통신하며, 단일 운영 체제 커널 서비스를 공유하여 가상 머신보다 리소스를 덜 사용한다.
3. 1. 컨테이너 가상화
리눅스 커널의 cgroups, 네임스페이스 기능을 활용하여 프로세스와 파일 시스템을 격리하는 컨테이너 가상화 기술을 제공한다. 이를 통해 리소스 격리 및 격리된 환경을 구현한다. 이전에는 LXC가 사용되었으나, 현재는 Go 언어로 구현된 `libcontainer`가 주로 사용된다.도커는 호스트 커널을 직접 사용하면서 프로세스 및 파일 시스템을 격리하며, 가상화는 `libcontainer`([https://github.com/opencontainers/runc/tree/master/libcontainer])에 의해 수행된다.
3. 2. 유니온 파일 시스템
도커의 파일 시스템은 여러 드라이버에 의해 제공된다. 현재 권장되는 overlay2[26]와 한때 권장되었던 Aufs에서는, 도커 컨테이너 내에 생성된 파일이 원래의 도커 이미지 (원형)의 차분으로 축적된다[27]。 차분만 디스크 용량을 소비하므로, 더 적은 리소스로 컨테이너를 생성하고 실행하는 것이 가능하다. 이로 인해 다른 가상화 기법과 비교하여 쉽고 빠른 가상화 환경의 생성/파기가 가능해졌다. 또한, 처음에는 aufs만 지원했지만, 이후 btrfs, Device Mapper, OverlayFS, vfs, ZFS가 선택 가능하게 되었다.3. 3. Dockerfile
도커에서는 `Dockerfile`이라는 설정 파일을 사용하여 컨테이너 이미지를 생성할 수 있다. `Dockerfile`에는 이미지 생성에 필요한 명령어와 설정을 정의한다.[1]3. 4. 표준 사양
도커 컨테이너는 오픈 컨테이너 이니셔티브(OCI)가 제정한 OCI 런타임 및 OCI 이미지 형식 사양을 기반으로 하며, 현재 도커 컨테이너는 OCI를 준수한다.[1] OCI 준수를 통해 OCI 런타임을 구현하는 임의의 런타임을 사용할 수 있으므로, 보안을 중시하는 런타임이나 속도를 중시하는 런타임으로 전환하는 것이 가능하다.[1]3. 5. 영속성
도커는 휘발성 컨테이너에 대해 영구적인 스토리지를 제공한다. 마운트는 구현 방식에 따라 다음과 같이 분류된다.- 볼륨(Volumes): 호스트 파일 시스템 내에서 ''도커가 관리하는'' 영역에 저장된다. 권장되는 마운트 유형이다.
- 바인드 마운트(Bind mounts): 호스트의 임의의 위치에 저장된다. 도커 이외의 호스트 프로세스도 조작할 수 있다.
- `tmpfs` 마운트: 호스트의 메모리에 저장된다(호스트에서 휘발성).
3. 6. 네트워킹
도커는 네트워크 격리된 컨테이너 간의 통신을 위한 네트워킹 기능을 제공한다.도커 컨테이너는 리눅스 네임스페이스를 이용하여 컨테이너를 호스트 네트워크로부터 격리시킨다. 따라서 네트워크 설정을 none으로 설정한 경우, 외부로부터의 네트워크 접근이 불가능하다. 이는 격리 환경이라는 측면에서는 이상적이지만, 컨테이너 간의 협력을 통한 기능 제공은 불가능하게 만든다. 그래서 도커 엔진은 네트워크 드라이버를 통한 네트워크를 제공하고 있다.
주로 사용되는 드라이버는 bridge이다. 사용자 정의 bridge 네트워크는 소속 컨테이너에 IP 주소를 제공하고 컨테이너 이름에 의한 도메인명 해결 (''자동 서비스 검색'')을 제공한다.[33] 또한 `--alias` 옵션을 이용하여 하나의 도메인명에 복수의 컨테이너를 연결할 수 있으며,[34] DNS 라운드 로빈이 가능하다.
3. 7. 컨테이너 연계
도커는 컴포즈(docker-compose영어)를 사용하여 여러 컨테이너의 실행 및 연계를 지원한다.[35] `docker-compose.yml` 파일을 통해 컨테이너 세트 및 네트워크를 정의하여 단일 호스트 머신에 컨테이너 그룹을 배포할 수 있다.[36] 도커 스웜을 사용하면 멀티 호스트 환경으로 배포할 수도 있다.[37]실제 앱은 여러 컨테이너가 서로 협력하는 경우가 많기 때문에,[45] 다수의 컨테이너를 자동으로 관리(오케스트레이션)하는 소프트웨어가 필요하다. 쿠버네티스나 도커 스웜이 이러한 기능을 제공한다.
도커사는 2018년 1월 쿠버네티스를 도커에 통합한 버전의 베타 버전을 제공하기 시작했다.[46]
컴포즈는 멀티 컨테이너 도커 애플리케이션을 정의하고 실행하는 도구이다.[98] YAML 파일을 사용하여 애플리케이션의 서비스를 구성하며, 하나의 명령으로 모든 컨테이너를 생성하고 시작하는 프로세스를 수행한다. 도커 스웜은 도커 컨테이너의 네이티브 클러스터링 기능을 제공하며, 여러 도커 엔진을 하나의 가상 도커 엔진으로 만든다.[99]
도커 1.12 이상부터는 스웜 모드가 도커 엔진에 통합되었다.[100]
3. 8. 로깅
도커는 컨테이너에서 발생한 데이터 로그/서버 로그를 처리하는 기능(로깅 기능)을 제공한다. 도커 데몬은 기본적으로 컨테이너의 stdout/stderr을 캡처하며, `docker logs` 명령으로 로그를 표시할 수 있다. 로깅은 커스터마이징 가능한 '''로깅 드라이버'''로 구현되어 있으며, 로깅 드라이버 플러그인을 사용하면 자체 구현도 가능하다. 기본 로깅 드라이버는 `json-file`이며, 그 외에 `syslog`, `fluentd`, 특정 클라우드 프로바이더에 특화된 `awslogs`나 `gcplogs` 등이 존재한다.[1]`fluentd` 로깅 드라이버는 컨테이너 로그를 데이터 수집기인 Fluentd로 전송한다. 기본적으로 TCP로 `localhost:24224`로 전송하지만, 옵션을 통해 다른 TCP 포트 또는 UNIX 도메인 소켓으로 전송이 가능하다. fluentd 데몬은 호스트 머신의 프로세스, 또는 포트 매핑을 수행한 컨테이너로 기능하게 한다.[1]
4. 구성 요소
도커 서비스는 소프트웨어, 객체, 레지스트리의 세 가지 주요 구성 요소로 이루어져 있다.
- 소프트웨어:
- 데몬(dockerd): 도커 데몬은 도커 컨테이너를 관리하고 컨테이너 객체를 처리하는 지속적인 프로세스이다. 데몬은 도커 엔진 API를 통해 전달되는 요청을 받아 처리한다.
- 클라이언트(docker): 도커 클라이언트 프로그램은 사용자가 도커 데몬과 상호 작용할 수 있는 명령줄 인터페이스(CLI)를 제공한다.
- 객체: 도커 객체는 도커에서 애플리케이션을 구성하는 데 사용되는 다양한 요소들이다. 주요 객체로는 이미지, 컨테이너, 서비스가 있다.
- 컨테이너: 애플리케이션을 실행하는 표준화되고 캡슐화된 환경이다.
- 이미지: 컨테이너를 구축하는 데 사용되는 읽기 전용 템플릿이다. 이미지는 애플리케이션을 저장하고 배포하는 데 사용된다.
- 서비스: 여러 도커 데몬에서 컨테이너를 확장할 수 있게 해준다. 그 결과는 도커 API를 통해 통신하는 협력적인 데몬 집합인 "스웜"으로 알려져 있다.
- 레지스트리: 도커 레지스트리는 도커 이미지 저장소이다. 도커 클라이언트는 레지스트리에 연결하여 사용할 이미지를 다운로드("풀")하거나 빌드한 이미지를 업로드("푸시")한다. 레지스트리는 공개 또는 비공개일 수 있다. 주요 공개 레지스트리는 도커 허브이며, 도커는 기본적으로 도커 허브에서 이미지를 찾는다.
4. 1. 도커 엔진
도커 엔진은 클라이언트-서버형 애플리케이션으로,[50] 컨테이너를 생성하고 관리하는 핵심 구성 요소이다. 주요 구성 요소는 다음과 같다.- 서버: 호스트 머신에서 작동하는 데몬(daemon영어)이다.[51]
- (고수준) 컨테이너 런타임
- (저수준) 컨테이너 런타임, OCI 런타임
- REST API: 데몬이 제공하는 인터페이스이다.[52]
- CLI 클라이언트: CLI 클라이언트이다.[53] 내부적으로 도커 REST API를 호출한다.[54]
현재 도커는 컨테이너 런타임, 데몬, CLI, GUI, 이미지 레지스트리 등 여러 (교체 가능한) 구성 요소로 이루어져 있다.
현재 도커 (플랫폼)는 다음 소프트웨어 스택을 기본으로 사용하고 있다.
- 도커 엔진: `docker-ce`(Linux), `Docker Desktop` (Windows, MacOS)
- 서버/데몬: `dockerd`[51]
- runtime: [https://containerd.io/ `containerd`][56]
- OCI runtime: [https://containerd.io/ `runc`]
- cli 클라이언트: `docker`[53]
- 레지스트리: 도커 허브[57]
2013년에 "도커"가 등장했을 때는 단일 애플리케이션의 명칭이었다. 그러나 표준화를 포함한 발전에 따라 위와 같이 여러 (교체 가능한) 구성 요소로 구성되게 되었으며, 현재 "도커"는 애플리케이션이 아니라 "플랫폼"이라고 여겨진다.[58] "도커"라는 단어가 가리키는 의미는 매우 모호하다.
도커 구성 요소는 위에서 제시된 기본값 외에도 다른 것을 이용할 수 있다. 다음은 그 예시이다.
"컨테이너 오케스트레이션"을 수행할 때는 사용자가 `docker` CLI를 직접 이용하는 것이 아니라, 오케스트레이션 툴에서 `dockerd`나 `containerd`가 사용된다.
4. 2. 도커 이미지
도커 '''이미지'''는 컨테이너를 만드는 데 사용되는 읽기 전용 템플릿이다. 이미지는 애플리케이션을 저장하고 배포하는 데 사용된다.4. 3. 도커 컨테이너
도커 컨테이너는 도커 이미지를 기반으로 만들어진 실행 가능한 인스턴스이다. 컨테이너는 격리된 환경에서 애플리케이션을 실행한다.도커는 고급 API를 구현하여 프로세스들을 별도의 장소에서 실행할 수 있는 가벼운 컨테이너들을 제공한다.[72]
리눅스 커널이 제공하는 기능들(주로 cgroups와 이름공간) 위에 빌드되기 때문에 도커 컨테이너는 가상 머신과는 달리 별도의 운영 체제를 요구하거나 포함하지 않는다.[71] 그 대신, 커널의 기능에 의존하며 리소스 격리(CPU, 메모리, 블록 입출력, 네트워크 등) 및 격리된 이름공간을 사용하여 운영 체제에 대한 응용 프로그램의 관점을 격리시킨다. 도커는 도커 0.9대부터 이용 가능한 라이브러리를 사용하거나, libvirt, LXC (리눅스 컨테이너), 또는 systemd-nspawn을 통해 간접적으로 리눅스 커널의 가상화 기능들에 접근한다.[70][73]
도커는 매우 가볍기 때문에, 하나의 서버나 가상 머신이 여러 컨테이너들을 동시에 구동할 수 있다.
컨테이너를 사용하여 리소스를 격리시키고, 서비스를 제한시키며, 프로세스를 예비할 수 있으며, 이렇게 하여 자신만의 프로세스 ID 공간, 파일 시스템 구조, 네트워크 인터페이스를 갖고서 운영 체제에 대하여 거의 완전히 개인화된 관점을 갖게 한다. 여러 개의 컨테이너들은 동일한 커널을 공유하지만 각 컨테이너는 CPU, 메모리, 입출력과 같이 오직 정의된 양의 리소스에만 제한을 받을 수 있다.
도커(소프트웨어) 서비스는 세 가지 구성 요소로 구성된다.
- '''소프트웨어:''' `dockerd`라고 하는 도커 '''데몬'''은 도커 컨테이너를 관리하고 컨테이너 객체를 처리하는 영구적인 프로세스이다. 데몬은 도커 엔진 API를 통해 전송된 요청을 수신 대기한다. `docker`라고 하는 도커 클라이언트 프로그램은 사용자가 도커 데몬과 상호 작용할 수 있는 명령줄 인터페이스 (CLI)를 제공한다.
- '''객체:''' 도커 객체는 도커에서 애플리케이션을 조립하는 데 사용되는 다양한 엔티티이다. 도커 객체의 주요 클래스는 이미지, 컨테이너 및 서비스이다.
- 도커 '''컨테이너'''는 애플리케이션을 실행하는 표준화되고 캡슐화된 환경이다. 컨테이너는 도커 API 또는 CLI를 사용하여 관리된다.
- 도커 '''이미지'''는 컨테이너를 구축하는 데 사용되는 읽기 전용 템플릿이다. 이미지는 애플리케이션을 저장하고 배포하는 데 사용된다.
- 도커 '''서비스'''를 사용하면 여러 도커 데몬에서 컨테이너를 확장할 수 있다. 그 결과는 도커 API를 통해 통신하는 협력적인 데몬 집합인 "스웜"으로 알려져 있다.
- '''레지스트리:''' 도커 레지스트리는 도커 이미지 저장소이다. 도커 클라이언트는 레지스트리에 연결하여 사용할 이미지를 다운로드("풀")하거나 빌드한 이미지를 업로드("푸시")한다. 레지스트리는 공개 또는 비공개일 수 있다. 주요 공개 레지스트리는 도커 허브이다. 도커 허브는 도커가 이미지를 찾는 기본 레지스트리이다. 도커 레지스트리를 사용하면 이벤트를 기반으로 알림을 생성할 수도 있다.
4. 4. 도커 레지스트리
도커 레지스트리는 도커 이미지 저장소이다. 도커 클라이언트는 레지스트리에 연결하여 사용할 이미지를 다운로드("풀")하거나 빌드한 이미지를 업로드("푸시")한다. 레지스트리는 공개 또는 비공개일 수 있다. 주요 공개 레지스트리는 도커 허브이다. 도커 허브는 도커가 이미지를 찾는 기본 레지스트리이다. 도커 레지스트리를 사용하면 이벤트를 기반으로 알림을 생성할 수도 있다.도커 이미지는 레지스트리를 사용하여 공개 및 공유가 가능하다. 공개된 이미지는 `docker pull` 명령어를 통해 가져와 컨테이너화할 수 있다. 널리 사용 가능한 레지스트리의 존재로 인해, Dockerfile을 사용한 이미지 생성 시 레지스트리에 등록된 이미지를 베이스 이미지로 사용할 수 있게 되었다. `docker pull`은 URL과 유사한 이미지 식별자 (URL에서 프로토콜 이름을 제외한 것. 예:
quay.io/assemblyline/ubuntu)를 받기 때문에 다양한 레지스트리를 이용할 수 있다.도커 허브는 `docker pull`이 기본적으로 사용하는 공개 레지스트리이다. 2014년에 Docker 컨테이너 공유 서비스로 발표되었다.[48] 도커 허브의 이미지를 이용할 때는 레지스트리 주소를 생략할 수 있다([organization/]image:tag 형식. 예: `fluent/fluentd`, `ubuntu`).
Amazon ECR은 아마존 웹 서비스(Amazon Web Services)가 제공하는 프라이빗 레지스트리이다.[49] 프라이빗, 즉 비공개 레지스트리이며, `docker login`을 통한 인증 정보 로딩이 필수이다. 레지스트리 주소는 `
도커는 컨테이너 런타임, 데몬, CLI, GUI, 이미지 레지스트리 등 수많은 (교체 가능한) 구성 요소로 이루어져 있으며, 레지스트리는 도커 이미지의 저장소[55]이다.
"도커"는 2013년에 등장했을 때, 단일 애플리케이션의 명칭이었다. 그러나 표준화를 포함한 발전에 따라 위와 같이 여러 개의 (교체 가능한) 구성 요소로 구성되게 되었으며, 현재의 "도커"는 애플리케이션이 아니라 "플랫폼"이라고 여겨진다.[58]
도커를 구성하는 요소는 위의 기본값 외의 것을 이용할 수 있다. 다음은 그 예시이다.
5. 도구
도커 생태계는 여러 도구들로 구성되어 있다. 주요 도구로는 도커 컴포즈(Docker Compose)와 도커 스웜(Docker Swarm)이 있다.
5. 1. Docker Compose
Compose는 여러 컨테이너로 구성된 도커 애플리케이션을 정의하고 실행하기 위한 도구이다.[98] YAML 파일을 사용하여 애플리케이션의 서비스를 구성하며, 단일 명령으로 모든 컨테이너를 생성하고 시작하는 프로세스를 수행한다.`docker-compose` CLI 유틸리티를 사용하면 여러 컨테이너에 대해 한 번에 명령을 실행할 수 있다. 예를 들어 이미지 빌드, 컨테이너 확장, 중지된 컨테이너 실행 등이 가능하다. 이미지 조작 또는 사용자 상호 작용 옵션과 관련된 명령은 단일 컨테이너를 처리하기 때문에 도커 컴포즈에서는 관련이 없다.
`docker-compose.yml` 파일은 애플리케이션의 서비스를 정의하는 데 사용되며 다양한 구성 옵션을 포함한다. 예를 들어 `build` 옵션은 Dockerfile 경로와 같은 구성 옵션을 정의하고, `command` 옵션을 사용하면 기본 도커 명령을 재정의할 수 있다.
도커 컴포즈의 첫 공개 베타 버전(0.0.1 버전)은 2013년 12월 21일에 출시되었다. 첫 번째 프로덕션 준비 버전(1.0)은 2014년 10월 16일에 출시되었다.
5. 2. Docker Swarm
Docker Swarm은 도커 컨테이너를 위한 네이티브 클러스터링 기능을 제공하며, 여러 도커 엔진을 단일 가상 도커 엔진으로 만든다.[99] 도커 1.12 이상에서는 Swarm 모드가 도커 엔진과 통합되었다.[100]`docker swarm` CLI 유틸리티를 사용하면 사용자가 스웜 컨테이너를 실행하고, 검색 토큰을 생성하며, 클러스터의 노드를 나열하는 등의 작업을 수행할 수 있다. `docker node` CLI 유틸리티를 사용하면 사용자가 스웜의 노드를 관리하기 위한 다양한 명령을 실행할 수 있는데, 예를 들어 스웜의 노드를 나열하고, 노드를 업데이트하며, 스웜에서 노드를 제거하는 등이 가능하다. 도커는 Raft 합의 알고리즘을 사용하여 스웜을 관리한다. Raft에 따르면 업데이트를 수행하려면 스웜 노드의 대다수가 업데이트에 동의해야 한다.
6. 활용
도커는 리눅스 커널의 가상화 기능에 접근하기 위해 각기 다른 인터페이스를 사용할 수 있다.[70] 도커 베이스 이미지에 액션을 취하면 유니언 파일 시스템 계층들이 만들어지고 문서화되어, 각 계층은 액션 재생성 방법을 완전하게 기술하게 된다. 이러한 전략은 완전한 VM과 비교해 도커 이미지를 가볍게 만들며, 오직 레이어 업데이트만 전파하면 된다.
산업 애널리스트 기업 451 리서치에 따르면, "도커는 응용 프로그램과 그 의존성을 가상 컨테이너에 담을 수 있는 도구이며, 이 컨테이너는 어떠한 리눅스 서버에서라도 구동이 가능하다. 이것은 사내, 공용 클라우드, 개인 클라우드, 베어 메탈 등 응용 프로그램을 실행할 수 있는 곳에서 유연성과 이식성을 적용하는데 도움을 준다.[71]
도커는 고급 API를 구현하여 프로세스들을 별도의 장소에서 실행할 수 있는 가벼운 컨테이너들을 제공한다.[72]
리눅스 커널이 제공하는 기능들(주로 cgroups와 이름공간) 위에 빌드되기 때문에, 도커 컨테이너는 가상 머신과는 달리 별도의 운영 체제를 요구하거나 포함하지 않는다.[71] 대신 커널의 기능에 의존하며 리소스 격리(CPU, 메모리, 블록 입출력, 네트워크 등) 및 격리된 이름공간을 사용하여 운영 체제에 대한 응용 프로그램의 관점을 격리시킨다. 도커는 도커 0.9대부터 이용 가능한 라이브러리를 사용하거나 , (리눅스 컨테이너), 또는 을 통해 간접적으로 리눅스 커널의 가상화 기능들에 접근한다.[70][73]
도커는 매우 가볍기 때문에, 하나의 서버나 가상 머신이 여러 컨테이너들을 동시에 구동할 수 있다. 컨테이너를 사용하여 리소스를 격리하고, 서비스를 제한하며, 프로세스를 예비할 수 있으며, 자신만의 프로세스 ID 공간, 파일 시스템 구조, 네트워크 인터페이스를 갖고 운영 체제에 대하여 거의 완전히 개인화된 관점을 갖게 한다. 여러 컨테이너는 동일한 커널을 공유하지만 각 컨테이너는 CPU, 메모리, 입출력과 같이 정의된 양의 리소스에만 제한을 받을 수 있다.
도커를 사용하면 다수의 응용 프로그램, 작업자의 작업, 다른 프로세스들이 자율적으로 하나의 물리 머신이나 여러 가상 머신을 통해 구동될 수 있게 되므로 고도의 분산 시스템을 생성하는 일이 단순해진다. 리소스가 사용 가능해질 때 또는 더 많은 노드가 필요할 때 노드가 배치될 수 있게 하므로 Apache Cassandra, 몽고DB, Riak와 같은 시스템을 위한 PaaS 스타일의 배치 및 규모 증강이 가능해진다. 또, 도커는 작업이나 워크로드 큐, 기타 분산 시스템들의 생성 및 운영을 단순하게 한다.[74][75]
도커는 컨테이너 가상화를 핵심으로 하는 애플리케이션을 위한 오픈 플랫폼이다. 환경 및 애플리케이션을 '''도커 이미지'''로 묶어, 도커 엔진을 통해 '''도커 컨테이너'''로 배포 및 실행할 수 있다. 리눅스, 윈도우, 맥을 모두 지원하는 도커 엔진은 개발, 테스트, 운영, 디버깅 등 다양한 환경에서 쉽고 빠르게 애플리케이션을 배포하고 실행할 수 있게 한다. 또한 도커 이미지의 레지스트리 등록, 도커 이미지를 기반으로 한 파생 이미지 생성, 차분 관리를 통한 파생 이미지의 저용량화 기능을 통해, 자체 이미지의 손쉬운 생성과 빠르고 가벼운 컨테이너 생성이 가능하다. 게다가 표준 사양화를 포함한 도커 소프트웨어의 컴포넌트화로, 컨테이너 가상화 수준 자체를 제어하는 독자적인 컨테이너 가상화 시스템 구축이 가능해졌다.
도커가 제공하는 환경/애플리케이션 전개의 효율성은 지속적 통합(CI) 및 지속적 배포(CD)를 통한 서비스 제공 빈도 증가를 더욱 가속화했다. 또한 클라우드 컴퓨팅이 제공하는 매니지드 서비스와 배포 컨테이너 수 조절을 통해 서비스 스케일링이 용이해졌으며, 서비스의 유연성 및 비용 구조에도 영향을 미치고 있다.
도커는 애플리케이션 개발 환경 구축 및 컨테이너화된 애플리케이션 배포에 활용된다.
6. 1. 애플리케이션 개발 환경
도커 컨테이너는 애플리케이션 개발 환경 구축에 활용될 수 있다.[18] 컨테이너는 격리된 환경을 제공하므로, 개발 환경 설정이 기존 환경에 영향을 주지 않는다. 이러한 특성 덕분에 애플리케이션 개발용 샌드박스로 도커 컨테이너를 이용할 수 있다('development container').[19]여러 개발자가 동일한 개발 환경을 공유하고, 신속하게 개발 환경을 복구할 수 있다는 장점도 있다. 컨테이너는 이미지로부터 생성되기 때문에 배포가 가능하며, 여러 개발자가 각자 개발 환경을 준비할 필요 없이 배포된 이미지로부터 컨테이너를 생성하여 개발 환경을 이용할 수 있다. 개발 환경에 문제가 발생한 경우에도 해당 컨테이너를 폐기하고 배포된 이미지로부터 다시 생성하면 되므로, 신속하게 개발 환경을 복구할 수 있다.
컨테이너는 가반성을 가지므로 호스트 OS에 관계없이 일관된 개발 환경을 유지할 수 있다.[20] 컨테이너는 도커 런타임 상에서 동작하기 때문에 호스트 OS나 설정에 영향을 받지 않으며, 동일 이미지로부터 윈도우 사용자나 리눅스 사용자나 모두 개발 환경 컨테이너를 이용할 수 있다.
개발 컨테이너는 다음과 같이 다양한 방식으로 활용할 수 있다.
- 모든 것을 컨테이너 내에서 완결: 컨테이너 상의 터미널에서 컨테이너 내의 코드를 편집한다.
- 볼륨 마운트 이용: 호스트 상의 코드를 컨테이너의 볼륨에 마운트하여 코드 편집은 호스트에서 하고, 실행은 컨테이너 환경에서 한다.
- 호스트-컨테이너 간 연계: 컨테이너 내의 에디터 서버를 통해 호스트의 에디터 UI로부터 컨테이너 내 코드를 조작하고 실행한다.
모든 것을 컨테이너 내에서 완결하는 방식을 사용하면 호스트는 도커만으로 동작한다. 볼륨 마운트를 이용하는 방식은 실행 환경 격리에 가깝다. 호스트-컨테이너 간 연계를 하는 경우에는 호스트는 도커와 에디터에만 의존한다.
6. 2. 컨테이너화된 애플리케이션
도커 컨테이너는 애플리케이션과 실행 환경을 결합한 일체형으로 사용할 수 있다.[21] 도커 이미지를 기반으로 컨테이너를 생성하면 즉시 애플리케이션을 실행할 수 있다. 도커 이미지는 이식성이 뛰어나, 다양한 환경에 쉽게 배포할 수 있다.도커 이미지는 파일 시스템과 런타임 설정을 결합한 것이다. (오픈 컨테이너 이니셔티브#OCI Image 참고) 애플리케이션 및 실행에 필요한 소프트웨어, 실행 시 설정이 포함된 도커 이미지를 기반으로 컨테이너를 생성하면 컨테이너를 시작하는 즉시 애플리케이션으로 기능한다. 이로 인해 도커 컨테이너는 모든 도커 환경에서 그대로 작동하는 애플리케이션으로 배포할 수 있다.
도커 이미지는 '''배포'''할 수 있으며, 환경에 관계없이 기능하는 '''이식성'''을 가지므로 애플리케이션을 도커 컨테이너로 만들면 테스트, 스테이징, 프로덕션의 각 환경에 의존하지 않고 쉽게 배포할 수 있다.
7. 장점
도커는 OS 수준 가상화를 기반으로 하는 컨테이너 가상화를 통해 애플리케이션 개발 및 배포 환경을 개선했다. 개발, 테스트, 운영 등 다양한 환경에서 도커 엔진을 통해 컨테이너를 쉽고 빠르게 배포하고 실행할 수 있다.
도커는 이미지를 레지스트리에 등록하고, 이를 기반으로 파생 이미지를 생성하며, 차분 관리를 통해 이미지 용량을 최소화하여 자체 이미지를 쉽게 만들고, 빠르고 가볍게 컨테이너를 생성할 수 있다. 또한, 도커 소프트웨어의 구성 요소를 표준화하여 컨테이너 가상화 수준을 제어하는 독자적인 시스템 구축도 가능하다.
도커는 지속적 통합(CI) 및 지속적 배포(CD)를 가속화하여 서비스 제공 빈도를 높였다. 또한 클라우드 컴퓨팅의 매니지드 서비스와 결합하여 서비스 확장성을 용이하게 하고, 유연성과 비용 효율성을 향상시켰다.
7. 1. 자원 효율성
도커는 리눅스 커널의 기능을 활용하여 프로세스를 격리된 환경에서 실행하는 가벼운 컨테이너를 제공한다.[72] 이러한 컨테이너는 가상 머신과 달리 별도의 운영 체제를 필요로 하지 않고, 호스트 OS의 커널을 공유한다.[71]여러 개의 컨테이너는 동일한 커널을 공유하지만, CPU, 메모리, 입출력 등 정의된 양의 리소스만 사용하도록 제한된다. 컨테이너는 서로 격리되어 자체 소프트웨어, 라이브러리, 구성 파일을 포함하며, 잘 정의된 채널을 통해 통신한다.
이러한 특징 덕분에 도커 컨테이너는 가상 머신보다 훨씬 적은 리소스를 사용한다. 하나의 서버나 가상 머신에서 여러 컨테이너를 동시에 실행할 수 있어 자원 활용도를 높일 수 있다.
가상화 기술은 이전부터 존재했지만, 가상 환경마다 OS를 통째로 설치해야 하는 방식은 자원 낭비였다.[14] 컨테이너형 가상화는 호스트 OS의 커널을 공유함으로써 이 문제를 해결한다.[15] 각 가상 환경은 도커 컨테이너로 불리며, 하나의 서버에서 격리되어 여러 인스턴스가 작동하는 것처럼 보인다.[15]
7. 2. 쉬운 애플리케이션 실행 환경 구축
도커는 애플리케이션과 라이브러리를 컨테이너에 함께 묶어 배포하므로, 환경 설정에 필요한 복잡하고 번거로운 작업을 줄여준다.[27] 한번 묶인 컨테이너는 가볍기 때문에 이동이 쉬우며, 어떤 환경에서든 빠르게 애플리케이션을 실행할 수 있다.[27] 도커사(Docker Inc.)는 이를 '''Build, Ship, and Run Any App, Anywhere'''라고 표현한다.[16] 도커 데스크톱을 통해 컨테이너는 윈도우, macOS 모두에서 작동하며, 이식성이 높다.[17]7. 3. 쉬운 삭제 및 복구
복잡한 시스템에서는 설정을 한 번 잘못하면 그 영향 범위를 특정하고 복구하는 데 시간이 오래 걸릴 수 있다. 도커에서는 이처럼 손쓸 수 없는 시스템을 즉시 삭제할 수 있다. 또한 이미지를 단계적으로 백업해 두었다면 설정 오류 이전으로 되돌리는 것도 쉽다. 이러한 경우 위에서 언급한 자원의 효율성과 구축의 용이성이 효과를 발휘한다.8. 한계점
도커는 여러 가지 장점을 가지지만, 호스트 Linux 커널과의 관계 등 몇 가지 한계점도 존재한다.[43][44]
8. 1. 호스트 Linux 커널과의 관계
컨테이너 가상화는 컨테이너 내부에서 호스트 커널을 직접 사용하기 때문에, 호스트 커널의 버전과 도커에 의존한 문제가 발생할 수 있다. (이는 다른 가상화 기법에서도 유사하게 나타난다.)[43][44]도커 이미지는 주로 우분투 같은 리눅스 배포판 이미지를 기반으로 만들어진다. 그런데 리눅스 배포판은 특정 버전의 리눅스 커널을 포함하고 있다. 예를 들어, 우분투 18.04.4LTS는 v5.3 커널을, 데비안 10은 v4.19 커널을 포함한다. 따라서 어떤 도커 이미지가 우분투 18.04.4LTS '''이미지'''를 기반으로 할 때, 커널 버전이 v5.3이라고 생각하기 쉽지만, 컨테이너 가상화는 호스트 커널을 사용하므로 데비안 10 호스트에서 도커를 실행하면 실제 동작 커널은 v4.19가 된다. 또한 도커도 커널 v4.19에서 동작한다.
컨테이너 가상화의 이러한 특성 때문에 몇 가지 주의할 점과 단점이 있다.
먼저, 다른 호스트 OS를 사용할 때 이식성 문제가 발생할 수 있다. 도커 컨테이너는 높은 이식성을 가지지만, 서로 다른 호스트 OS (예: 우분투 호스트와 데비안 호스트)에서 같은 컨테이너를 실행할 때 커널 버전 차이로 인해 컨테이너 동작이 일관되지 않을 수 있다. 예를 들어, 데비안 8 호스트에서 발생한 커널 버그가 데비안 9 호스트에서는 수정되어 나타나지 않을 수 있다.
또한, 새로운 버전의 리눅스 커널에 의존하는 이미지가 오래된 리눅스 커널의 호스트에서는 작동하지 않을 수 있다. 우분투 18.04.4LTS 이미지(커널 v5.3)를 기반으로 만든 애플리케이션이 데비안 10 (커널 v4.19)에 없는 커널 기능을 사용한다면, 데비안 10 호스트에서 이 컨테이너를 실행했을 때 오류가 발생한다. 리눅스 커널은 하위 호환성이 매우 높기 때문에, 반대로 오래된 기능이 새로운 커널의 호스트에서 작동하지 않는 경우는 매우 드물다.
마지막으로, 호스트 커널 버전과 도커 엔진 버전의 조합에 따라 버그가 발생할 수도 있다. 커널 패닉을 일으키는 경우도 보고되고 있다. (모든 가상화는 호스트와 가상화 엔진 간의 불일치 위험을 안고 있다.)
9. 통합
도커는 아마존 웹 서비스,[76] Ansible,[77] Chef,[79] 구글 클라우드 플랫폼,[80] 마이크로소프트 애저,[85] 오픈스택 노바[86] 등 다양한 인프라 도구 및 플랫폼과 통합될 수 있다.
클라우드 파운드리 Diego 프로젝트는 도커를 클라우드 파운드리 PaaS에 통합한다.[94] 레드햇의 오픈시프트 PaaS는 도커 및 관련 프로젝트(Kubernetes, Geard, Project Atomic 등)를 v3 (2015년 6월)부터 통합한다.[95] Apprenda PaaS는 제품 버전 6.0에 도커 컨테이너를 통합한다.[96]
참조
[1]
웹사이트
Docker Desktop license agreement
https://docs.docker.[...]
2024-09-11
[2]
웹사이트
How to Install Docker on Raspberry Pi
https://gizmoxo.com/[...]
2022-10-13
[3]
웹사이트
Get Docker
https://docs.docker.[...]
2024-09-11
[4]
웹사이트
Dockerfile reference
https://docs.docker.[...]
2023-11-14
[5]
웹사이트
Oracle Acquires Docker Container Startup StackEngine, Plans Austin-Based Cloud Computing Center
https://www.crn.com/[...]
2015-12-22
[6]
웹사이트
Docker Desktop is no longer free for enterprise users
https://www.infoworl[...]
2021-08-31
[7]
웹사이트
Docker acquires AtomicJar, a testing startup that raised $25M in January
https://techcrunch.c[...]
2023-12-11
[8]
웹사이트
Docker FAQs
https://www.docker.c[...]
2021-11-23
[9]
웹사이트
Docker Software End User License Agreement
https://www.docker.c[...]
2021-11-23
[10]
웹사이트
IT用語辞典 e-Words
http://e-words.jp/w/[...]
2018-01-03
[11]
문서
Docker Documentations - Docker overview
https://docs.docker.[...]
[12]
문서
Docker Documentations - Docker overview
https://docs.docker.[...]
[13]
문서
Docker Documentations - Docker overview
https://docs.docker.[...]
[14]
웹사이트
第1回 Dockerとは
https://atmarkit.itm[...]
2018-01-03
[15]
웹사이트
さわって理解するDocker入門
https://www.ogis-ri.[...]
2018-01-03
[16]
웹사이트
Docker
https://www.docker.c[...]
2018-01-03
[17]
웹사이트
Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 5つの関門
https://qiita.com/ka[...]
2018-02-11
[18]
문서
Docker container as a full-featured development environment
https://code.visuals[...]
[19]
문서
This container can be used to run an application or to sandbox tools, libraries, or runtimes needed for working with a codebase
https://code.visuals[...]
[20]
문서
Docker Containers Are Everywhere: Linux, Windows, Data center, Cloud, Serverless, etc.
https://www.docker.c[...]
[21]
문서
Deploying a containerized web application
https://cloud.google[...]
[22]
문서
Container Deployed Applications: You deploy your application into one or more containers and would like to work locally in the containerized environment
https://code.visuals[...]
[23]
웹사이트
いまさら聞けないDocker入門(1):アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識
https://atmarkit.itm[...]
ITmedia
2014-05-16
[24]
웹사이트
"「ITインフラテクノロジーAWARD 2015」を発表"
http://corporate.nik[...]
日経BP社
2017-01-03
[25]
웹사이트
すでにGoogleは全部のソフトウェアをコンテナに乗せており、毎週20億個ものコンテナを起動している
http://www.publickey[...]
2017-01-03
[26]
문서
overlay2 is the preferred storage driver, for all currently supported Linux distributions, and requires no extra configuration.
https://docs.docker.[...]
[27]
웹사이트
Dockerを理解するための8つの軸
https://thinkit.co.j[...]
2018-01-03
[28]
문서
Volumes are stored in a part of the host filesystem which is managed by Docker
https://docs.docker.[...]
[29]
문서
Volumes are the best way to persist data in Docker.
https://docs.docker.[...]
[30]
문서
Bind mounts may be stored anywhere on the host system.
https://docs.docker.[...]
[31]
문서
Non-Docker processes on the Docker host or a Docker container can modify them at any time.
https://docs.docker.[...]
[32]
문서
tmpfs mounts are stored in the host system’s memory only, and are never written to the host system’s filesystem.
https://docs.docker.[...]
[33]
문서
containers can not only communicate by IP address, but can also resolve a container name to an IP address. This capability is called automatic service discovery.
https://docs.docker.[...]
[34]
문서
Create a network alias for a container
https://docs.docker.[...]
[35]
문서
Compose is a tool for defining and running multi-container Docker applications.
https://docs.docker.[...]
[36]
문서
Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.
https://docs.docker.[...]
docker docs - Overview of Docker Compose
[37]
문서
Docker Swarm, a Docker-native clustering system, exposes the same API as a single Docker host, which means you can use Compose against a Swarm instance and run your apps across multiple hosts.
https://docs.docker.[...]
[38]
문서
By default, docker logs shows the command’s STDOUT and STDERR.
https://docs.docker.[...]
docker docs
[39]
문서
Each Docker daemon has a default logging driver, which each container uses unless you configure it to use a different logging driver. In addition to using the logging drivers included with Docker, you can also implement and use logging driver plugins.
https://docs.docker.[...]
docker docs
[40]
문서
The fluentd logging driver sends container logs to the Fluentd collector as structured log data.
https://docs.docker.[...]
docker docs
[41]
문서
By default, the logging driver connects to localhost:24224. Supply the fluentd-address option to connect to a different address. tcp(default) and unix sockets are supported.
https://docs.docker.[...]
docker docs
[42]
문서
To use this logging driver, start the fluentd daemon on a host. We recommend that you use the Fluentd docker image.
https://docs.docker.[...]
docker docs
[43]
문서
Ubuntu 18.04.4 ships with a v5.3 based Linux kernel
https://wiki.ubuntu.[...]
[44]
문서
Linux kernel 4.19 series
https://wiki.debian.[...]
[45]
웹사이트
Kubernetesとは
https://www.redhat.c[...]
2018-01-03
[46]
웹사이트
Kubernetesを統合したDockerがついにリリース。Docker for Mac with Kubernetesのベータ版が公開
http://www.publickey[...]
2018-01-11
[47]
문서
By default, docker pull pulls images from Docker Hub. It is also possible to manually specify the path of a registry to pull from.
https://docs.docker.[...]
docker docs
[48]
웹사이트
Dockerコンテナをクラウドサービス上で共有できる「Docker Hub」を使ってみる
https://knowledge.sa[...]
2018-01-03
[49]
문서
Amazon Elastic Container Registry (ECR) は、完全マネージド型の Docker コンテナレジストリです。
https://aws.amazon.c[...]
Amazon Elastic Container Registry
[50]
문서
Docker Engine is a client-server application with these major components:
https://docs.docker.[...]
[51]
문서
A server which is a type of long-running program called a daemon process (the dockerd command).
https://docs.docker.[...]
[52]
문서
A REST API which specifies interfaces that programs can use to talk to the daemon and instruct it what to do.
https://docs.docker.[...]
[53]
문서
A command line interface (CLI) client (the docker command).
https://docs.docker.[...]
[54]
문서
The CLI uses the Docker REST API to control or interact with the Docker daemon through scripting or direct CLI commands.
https://docs.docker.[...]
[55]
문서
A Docker registry stores Docker images.
https://docs.docker.[...]
[56]
문서
By default, the Docker daemon automatically starts containerd.
https://docs.docker.[...]
[57]
문서
Docker Hub is a public registry that anyone can use, and Docker is configured to look for images on Docker Hub by default.
https://docs.docker.[...]
[58]
문서
Docker is an open platform for developing, shipping, and running applications.
https://docs.docker.[...]
[59]
문서
Docker Trusted Registry (DTR) is the enterprise-grade image storage solution from Docker.
https://docs.docker.[...]
[60]
웹인용
Docker source code
https://github.com/d[...]
Docker, Inc.
2015-10-12
[61]
문서
https://docs.docker.[...]
[62]
문서
https://docs.docker.[...]
[63]
문서
https://www.docker.c[...]
[64]
웹인용
Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud
https://web.archive.[...]
SYS-CON Media
2013-07-26
[65]
웹인용
docker/docker
https://github.com/d[...]
[66]
웹인용
Docker Documentation: Kernel Requirements
http://docker.readth[...]
2014-01-04
[67]
웹인용
Yet Another Reason Containers Don't Contain: Kernel Keyrings
http://www.projectat[...]
[68]
웹인용
Docker libcontainer unifies Linux container powers
http://www.zdnet.com[...]
ZDNet
2014-06-11
[69]
웹인용
libcontainer - reference implementation for containers
https://github.com/d[...]
[70]
웹인용
Docker 0.9: Introducing execution drivers and libcontainer
https://web.archive.[...]
2014-03-10
[71]
웹인용
Docker: A 'Shipping Container' for Linux Code
http://www.linux.com[...]
Linux.com
2013-08-09
[72]
웹인용
Docker: Automated and Consistent Software Deployments
http://www.infoq.com[...]
InfoQ
2013-08-09
[73]
웹인용
Docker drops LXC as default execution environment
http://www.infoq.com[...]
InfoQ
2015-01-20
[74]
웹인용
OSCON : Conversations, Deployments, Architecture, Docker and the Future?
http://www.cloudave.[...]
CloudAve
2013-08-09
[75]
웹인용
How Docker Helped Us Achieve the (Near) Impossible
http://blog.iron.io/[...]
Iron.io
2014-07-25
[76]
웹인용
Amazon EC2 - Docker Documentation
https://docs.docker.[...]
2014-10-18
[77]
웹인용
ansible/library/cloud/docker
https://github.com/a[...]
GitHub
2014-01-20
[78]
웹인용
CFEngine
http://docs.docker.c[...]
CFEngine
2014-06-06
[79]
웹인용
thoward/docker-cookbook
https://github.com/t[...]
GitHub
2014-01-20
[80]
웹인용
Containers on Google Cloud Platform
https://cloud.google[...]
Google Inc
[81]
웹인용
Bluemix Launches IBM Containers Beta Based on Docker
https://developer.ib[...]
IBM
2015-04-20
[82]
웹인용
Jelastic Announces Docker Integration to Provide the Most Advanced Orchestrated Application Delivery
http://www.prweb.com[...]
PRWeb
2014-12-03
[83]
웹인용
georgebashi/jenkins-docker-plugin
https://github.com/g[...]
GitHub
2017-01-09
[84]
뉴스
Containerizing Docker on Kubernetes
https://www.linkedin[...]
LinkedIn
2015-11-02
[85]
웹인용
The Docker Virtual Machine Extension for Linux on Azure
https://azure.micros[...]
Microsoft
2015-08-11
[86]
웹인용
OpenStack Community Weekly Newsletter (May 31 – June 7) » The OpenStack Blog
http://www.openstack[...]
Openstack.org
2014-01-20
[87]
웹인용
OpenSVC Docker
http://docs.opensvc.[...]
OpenSVC
2014-05-29
[88]
웹인용
Oracle Container Cloud Service Explained By Oracle.com
https://cloud.oracle[...]
[89]
웹인용
garethr/docker
http://forge.puppetl[...]
Puppet Forge
2014-01-20
[90]
웹인용
saltstack/dockerio
http://docs.saltstac[...]
2014-01-20
[91]
웹인용
philspitler/vagrant-docker
https://github.com/p[...]
GitHub
2014-01-20
[92]
웹사이트
VMware vSphere Integrated Containers (VIC)
http://searchserverv[...]
[93]
웹사이트
VMware’s Photon Platform and How it Treats Containers
http://thenewstack.i[...]
[94]
웹인용
Cloud Foundry: Diego Explained By Onsi Fakhouri
https://community.sp[...]
ActiveState
2015-04-20
[95]
뉴스
Red Hat to update Docker container tech for enterprises: Open source vendor plans to incorporate advanced Linux tools such as systemd and SELinux into Docker
http://www.computerw[...]
Computerworld, Inc.
2014-05-29
[96]
뉴스
PaaS and Docker Containers Work Together in Latest Apprenda Release
http://www.datacente[...]
Data Center Knowledge
2015-12-06
[97]
웹인용
One home for all your apps
https://www.dotcloud[...]
2014-05-08
[98]
웹인용
Overview of Docker Compose
https://docs.docker.[...]
2017-07-06
[99]
웹인용
8 Container Orchestration Tools to Know
https://www.linux.co[...]
2017-07-06
[100]
웹인용
Docker Swarm
https://docs.docker.[...]
2017-07-06
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
