"HP-UX 에서 Docker 가 도는가" 같은 질문에 답하려면 컨테이너가 무엇에 기대는지부터 봐야 한다. 리눅스 컨테이너는 커널의 네임스페이스(pid · net · mnt · uts · ipc · user) · cgroup · OverlayFS · seccomp · capabilities 를 조합해 만든 프로세스 격리다. 이 기능은 리눅스 커널에만 있으므로 리눅스 컨테이너는 리눅스 커널이 있는 곳에서만 돈다.
| 플랫폼 | 리눅스 컨테이너 | 방식 |
|---|---|---|
| Linux | 가능 | 엔진이 커널 기능을 직접 쓴다 |
| Windows | 가능 | Docker Desktop 이 WSL 2 또는 Hyper-V 안의 리눅스 VM 에서 돌린다. Windows Server 에는 Windows 커널 기반 Windows 컨테이너도 있으나 Windows 전용 이미지만 쓴다 |
| macOS | 가능 | Docker Desktop · Colima 등이 리눅스 VM 을 띄운다 |
| HP-UX · AIX · Solaris | 불가 | 리눅스 커널이 없고 OCI 런타임 포팅도 없다 |
Windows 와 macOS 에서 컨테이너가 도는 것은 그 OS 가 컨테이너를 지원해서가 아니라 리눅스 커널을 하나 더 띄워 두기 때문이다. 전통 유닉스에는 그런 계층이 없다. HP-UX 의 vPars · nPars · Integrity VM 이나 AIX WPAR, Solaris Zones 는 파티셔닝 또는 자체 격리 기술이라 OCI 이미지와 호환되지 않는다.
따라서 전통 유닉스 위에서 컨테이너 기반 제품(Kubernetes · Kafka · NiFi · Cloudera · SAS Viya 등)을 돌리려면 리눅스 서버를 옆에 두고 연동하거나 리눅스로 이전하는 수밖에 없다. Kubernetes 도 컨트롤 플레인은 리눅스 노드가 필수이고, Windows 노드는 워커로만 그것도 Windows 컨테이너 전용으로 붙는다.