Docker Desktop 유료화와 대응방법

Yeonggyoo Jeon·2021년 12월 22일
2
post-custom-banner

1. 도커(Docker) 유료화?!

정확히는 도커 데스크탑(Docker Desktop) 유료화라고 보아야 할 것 같습니다.

지난 9월1일 아래와 같은 메일을 받았었습니다. 아마도 도커허브에 계정을 가지신 분들은 모두 같은 메일을 받으셨을 것 같은데요.

동시에 IT News 사이트들도 기사는 내기 시작했던 것 같습니다. 아래 링크는 그러한 기사 중에 하나입니다.
"도커 데스크톱, 대기업 사용자에게는 유료화된다"

무료로 사용할 수 있었던 Docker Free 구독 정책의 이름을 Personal 플랜으로 변경한다는 내용입니다. Docker Desktop은 Free 계정에서 다운받아서 무료로 사용할 수 있었는데 변경된 정책이 적용되면 개인 사용자나 250인 이하 그리고 $1000만 달러미만 매출의 회사에서만 사용할 수 있게 됩니다. 이 조건을 넘어가는 회사 소속의 사용자들은 유료 플랜을 구독해야합니다. 2022년 1월 31일까지가 유예기간이고 2022년 2월 1일부터 적용받게 됩니다.

2. 어떤 대안이 있을가?

a. Docker 사용을 위한 별도의 VM환경 설정

Docker Desktop은 윈도우와 맥에서 별도의 복잡한 환경설정없이 간편하게 Docker를 사용할 수 있게 해주는 툴이라고 볼 수 있습니다. Docker의 가반 기술인 리눅스 Containerd는 오픈소스인 리눅스를 사용함으로 자유롭게 사용가능하고 Docker client툴인 Docker Cli 또한 오픈소스이므로, HyperVisor를 통한 리눅스 VM(Virtual Machine)사용 환경을 만들고 거기에 Docker Engine을 설치하고 Docker Cli를 통해 Docker Desktop 없이 맥/윈도우 환경에서 Docker를 사용할 수 있습니다. 검색을 해보면 환경을 설정하는 구체적이 방법이 여러가지가 나옵니다.

위의 링크들에서 확인할 수 있듯이 맥/윈도우 환경에서 가상머신(VM)을 환경을 구축할 때 사용하는 여러가지 툴이 있고 그만큼 여러가지 방법을 통해 Linux Docker를 사용하는 환경을 구성할 수 있습니다.

b. Docker 유료 플랜의 구독

유료구독을 지불할 환경이 된다면 편하게 그냥 Docker Pro / Team / Business 구독 플랜 중에 하나를 구독하면 Docker Desktop을 라이센스 제한에 관계없이 사용할 수 있습니다. Docker Desktop을 사용하면 로컬머신에 별도의 가상화 환경을 구축할 필요없이 Docker를 사용할 수 있습니다. 이는 위에서 사용하는 방법들에서 사용하는 각 툴의 설치 및 버전 간 Dependency 등을 신경 쓸 필요없이 Docker Desktop에서 하나로 관리되므로 편리한 이점이 있는 것 같습니다. 또한 유료구독에서 Docker hub의 Private Repository사용이 가능하고 동시 Docker Build시 등에서 좀 더 이점을 가질 수 있습니다.

Docker 구독 플랜 : https://www.docker.com/pricing


3. Docker Desktop의 대안을 사용해보자

위의 2-a에서 첫번째 'Minikube를 사용한 환경구성'을 사용해서 로컬에 환경을 구성해 사용해 보았다.
Docker Desktop을 삭제하지 않아도 되고, 프로세스를 꺼둔 상태에서 환경구성을 하였습니다.

a. Virtualbox 설치

    brew install virtualbox
    brew install virtualbox-extension-pack
  • Docker-cli관련 툴과 minikube도 설치해 줍니다.
    brew install docker
    brew isntall docker-compose
    brew install minikube
    brew install docker-credential-helper
    brew install docker-credential-helper-ecr

b. Minikube 구동

Minikube 구동없이 docker를 실행하면 실행되지 않습니다.

docker-cli만 있고 연결할 host(docker-engine)가 없는 상태입니다.

virtualbox를 가상머신 구동을 위한 hypervisor로 설정하여 minikube를 구동합니다.
(minikube실행시 기본 config를 설정하는 방법과 Docker의 기본 환경으로 설정하는 방법은 2-a 의 링크를 참고해주세요.)

minikube start --vm-driver=virtualbox --cpus 4 --memory 8192 --disk-size=60g

그리고 Docker-cli에서 minikube를 host로 사용할 수 있도록 설정합니다.

eval $(minikube docker-env)

자 이제, docker 명령을 사용해보면,

Docker desktop 구동없이 docker 명령이 사용 가능하게 됩니다. 그런데 좀 이상합니다. 기존에 빌드해두었던 image들은 사라지고 없고 처음보는 image들만 보이네요.

그래서 다시 docker desktop을 켜고 minikube의 docker-env에 영향을 받지 않는 새로운 shell을 열고 docker image들을 확인해봅니다.

...

다행히 기존이 빌드해 두었던 이미지들이 보입니다. Docker 이미지들이 각 Docker runtime환경에 각각 관리되기 때문인 것으로 보입니다. 새로운 환경을 설정할때 간과할 수 있는 부분인데 유의해야 할 것 같습니다.

c. Docker Runtime의 종료

여기까지 동일하게 실행하였으면, 새로 설정한 Minikube를 이용한 Docker runtime환경과 Docker desktop의 runtime환경을 둘다 종료해주어야 로컬 머신의 리소스가 반환이 됩니다.

  • Minikube의 종료
    - minikube를 종료하고 쉘 닫기
	minikube stop
  • Docker desktop 종료

4. Docker 유료구독의 사용

위에서 언급한 기존 이미지들의 사용과 기존에 도커빌드하며 배포까지했던 레거시 솔루션과의 정합성, 그리고 추후에 있을지도 모를 버전관리 등의 위험성 등 때문에 Docker유료 구독을 통해 Docker desktop을 계속 사용하기로 했습니다. Docker hub의 업그레이드된 사용성은 덤이구요.

팀구성원들과 같이 한번에 구독하여 사용하기 위해 Team 플랜을 사용하였습니다.

Team플랜의 'Buy Now' 버튼을 클릭하면 먼저 조직(Organization)을 설정하는 페이지가 나옵니다.

조직의 Namespace를 설정하면,

결재페이지가 뜹니다.

Organizations 탭에서 설정된 조직을 확인하고,

같은 조직으로 Team구독을 함께 사용할 구성원의 Docker-hub ID를 Member로 추가

이렇게하면, 이제 같은 Team구독으로 Docker를 사용할 준비가 완료되었습니다!

5. 마치며...

Docker Desktop의 유료화로 인한 대응방법으로 여러가지 대체수단을 찾아보았습니다. 여러가지 방법들이 많이 나와있었지만 "docker-cli + VM + Docker engine"이라는 동일한 방법론으로 사용하는 프레임워크나 툴만 다른 것으로 보입니다. 여러가지 툴들의 조합을 선택해서 사용할 수 있었지만 Docker desktop은 그러한 선택의 고민과 각 툴의 버전들 간의 호환성, 파편화 등에 대한 버든 들을 알게 모르게 해결해주고 있었습니다. Docker desktop을 이용하는 것은 아주 간단해서 개발환경 구성에 익숙하지 않은 구성원간에 환경구성을 공유하기에도 간단했습니다. Docker 환경구성은 그 자체로 목적이 아니고 개발진행을 위한 기본 단계이므로 비용이 들더라도 이 단계는 빠르고 효율적으로 사용할 수 있는 방법을 이용하는 것도 나쁘지 않다고 생각했습니다.. 기존에 사용하던 빌드 이미지들과 레거시 개발 프로세스들이 꼬여서 전체 구성원의 개발환경에 혼란을 주는 것 또한 피하기 위해 저는 현재 프로젝트에서는 유료 플랜을 구독하기로 결정하였습니다. 그러나 유료화를 피하고 싶고 가상화 개발환경에 구성 등에 익숙한 개발팀이나 소수로 개발하는 팀 등에서는 위에서 언급한 대체방법들을 사용하는 것도 괜찮을 것 같습니다.

감사합니다. 끝


참고자료

  1. https://www.ciokorea.com/news/206529
  2. https://blog.bsk.im/2021/09/07/macos-docker-without-docker-feat-minikube-ko/
  3. https://marcusnoble.co.uk/2021-09-01-migrating-from-docker-to-podman/
  4. https://github.com/lima-vm/lima#lima-linux-virtual-machines-on-macos-in-most-cases
  5. https://itnext.io/utilizing-docker-cli-without-docker-desktop-4933f3473d5e
  6. https://jybaek.tistory.com/934
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 2월 22일

안녕하세요 운영자님
인카토스입니다.
먼저, 댓글로 인사를 드리게 된 점 양해 부탁 드립니다.
이렇게 연락 드린 이유는 이번에 저희가 제작한 도커 각티슈케이스 제품 협찬을 제안드리고 싶어서 연락 드렸습니다.
개발자들에게 많은 사랑은 받은 각티슈케이스입니다.
저희 상품 블로그 포스팅이 가능하실지 여쭙고자 연락드렸습니다.
아니면 클리앙,서버포럼, okky,2cpu,그누보드 등 가입되어 있으신 개발자 커뮤니티가 있으시다면 해당 커뮤니티에 아래와 비슷하게 게시글을 올려주실수 있을까요?

클리앙 : https://www.clien.net/service/board/park/17797443

연락드릴수 있는방법이 댓글밖에 보이지 않아 이렇게 먼저 연락드립니다.

협찬제안에 긍정적인 검토 부탁드리고 제안이 마음에 드신다면 하기 메일로 메일주시면 제품 보내드리도록 하겠습니다.

sungjh0726@naver.com

협찬제품 링크 : https://incatos.shop/surl/P/11

답글 달기