::: IT인터넷 :::

윈도우 10에서 Docker Desktop 없이 Docker 사용하기

곰탱이푸우 2021. 9. 3. 17:51

Docker Desktop 유료 전환 발표

Docker Inc.는 2021년 8월 31일에 Docker Desktop이 2022년 2월부터 유료로 전환 된다고 발표했다.

 

Docker is Updating and Extending Our Product Subscriptions - Docker Blog

Learn from Docker experts to simplify and advance your app development and management with Docker. Stay up to date on Docker events and new version announcements!

www.docker.com

 

Docker Inc.의 유료화 발표는 처음이 아닌데, 올해 1월부터 Docker Hub의 Pull 빈도에 대한 제한을 걸고 유료로 전환했다. 익명/무료 사용자는 6시간에 100/200 Pull만 허용하며, 그 외에는 유료 계정을 사용하라는 것이었다.

 

도커허브 무제한시대 끝…클라우드 대혼란 벌어진다

도커가 무료 및 익명 사용자의 도커 허브 사용량을 제한하는 조치를 이달부터 시행했다. 대중적 컨테이너 이미지를 알게 모르게 사용해온 클라우드 이용자들의 시스템 운영...

zdnet.co.kr

 

이 경우 가장 좋은 방법은 사설 Docker 저장소를 구축하여 사용하는 것으로 구축 방법은 다음을 참고한다.

 

Nexus3를 이용한 Docker 사설 저장소 구축

Nexus3를 이용한 Docker 사설 저장소 구축은 3개의 저장소가 필요하다. hosted (Local) - 내부에서 생성한 Docker 이미지 파일을 배포 (Push)한다. proxy (Remote) - 외부의 Docker 저장소의 이미지들을 저장하고..

www.bearpooh.com

 

 

DockerHub에 이어 다음 단계인 Docker Desktop을 유료로 전환하는 것이다.

앞으로 어디까지 유료화 할지는 의문이다. 나중엔 Docker Engine까지 유료화 할 수도 있겠는데...

 

Docker Desktop의 무료 사용 대상은 다음과 같다.

  • 소규모 회사(직원 수 250명 미만 및 연간 매출 천만 달러 미만)
  • 개인적인 사용
  • 교육 및 학습(학업적 또는 전문적 환경에서 학생 또는 강사로서)
  • 비상업적 오픈 소스 프로젝트
  • 2021년 8월 31일 이전에 다운로드한 Docker Desktop을 사용하는 경우

 

그나마 다행인 점은 대부분의 개인 사용자는 Docker Desktop을 무료로 사용할 수 있다는 점이다.

회사에서 업무적인 목적으로 윈도우나 Mac 환경에서 Docker Desktop을 사용하는 경우, 위에 언급한 무료로 사용 가능한 회사 규모에 포함되지 않는다면 문제가 될 수 있다.

 

이번 발표는 2019년 1월부터 Oracle이 Java SDK를 유료 구독으로 전환한 것과 유사하다.  (2018년 8월 발표)

 

오라클 자바 SE, 2019부터 전면 유료화…라이선스->구독 모델 전환

[디지털데일리 백지영기자] 오라클 자바 스탠다드 에디션(SE)이 전면 유료화된다. 자바 SE는 그동안 유료와 무료 버전이 혼재돼 있어 사용자가 혼란을 겪었다. 이에 따라 오라클은 2019년 1월부터

www.ddaily.co.kr

 

무료 사용 범위도 유사하다.

개인 사용자는 그대로 사용할 수 있었고, 기업들은 유료로 전환하거나 오픈소스 버전인 OpenJDK로 전환했다.

 

 

회사 PC에서 Docker Desktop을 사용하는 경우

Docker Desktop을 개인적인 목적으로 사용하는 경우는 계속해서 무료 사용이 가능하므로 큰 문제가 되지는 않는다.

 

현재 Docker Engine만 설치하여 Docker CLI로 사용하는 것은 유료화 대상이 아니므로, CLI 버전을 사용하면 충분히 사용 가능하다.

  • 리눅스 사용자 (또는 리눅스 기반 서버)는 docker.io를 설치해서 사용하면 되므로 Pass
  • Mac OS도 대부분 개인 사용자가 사용하므로 일단 Pass
  • 윈도우 환경의 개인 사용자도 일단 Pass

 

회사에서 윈도우 환경에서 Docker Desktop을 사용하는 경우가 이번 발표의 적용 대상인데 아래와 같이 전환할 수 있다.

  • 윈도우 7 이하 사용자는 docker machine 사용 (윈도우 10으로 업그레이드 권장!!)
  • 윈도우 10 이상 사용자는 WSL로 docker.io를 설치해서 사용

 

Docker machine은 현재 Deprecated 되어 권장하지는 않지만, 사용하는 방법은 다음 문서를 참고한다.

 

Docker Machine overview

 

docs.docker.com

 

윈도우 10에서는 WSL을 통해 Linux를 Subsystem으로 사용할 수 있다.

WSL의 리눅스 환경에서 docker.io를 설치해서 사용하면 Docker Desktop 없이도 docker 사용이 가능하다.

 

한 문장으로 요약하면 "윈도우에서 WSL을 통해 리눅스 환경으로 우회해서 Docker를 사용하는 방법"이다.

 

 

Docker 사용을 위한 WSL 환경 설정

윈도우 환경에서 Docker를 사용하기 위해서는 WSL이 활성화 되어 있어야 한다.

 

Docker Desktop을 설치할 때도 WSL을 활성화 해야 하므로, 이미 Docker Desktop을 사용하고 있었다면 추가로 설정할 내용은 없다.

 

WSL을 설정하는 방법은 아래 문서를 참고하고, Docker Desktop 설치 부분은 제외하고 진행한다.

 

WSL2(Windows Subsystem for Linux 2) 설치 및 사용 방법

지난 5월 윈도우10의 대규모 업데이트가 있었습니다. 이번 업데이트에는 WSL2 정식 릴리스가 포함되어있습니다. WSL은 경략 가상화 기술을 통해 윈도우에서 리눅스 배포판을 사용할 수 있게 도와

www.44bits.io

 

윈도우 10 Home 버전 사용자의 경우 빌드 19603 부터 WSL2를 지원하므로, 먼저 해당 버전으로 윈도우 업데이트를 진행해야 한다.

 

이후 과정은 WSL 활성화까지 적용한 것을 전제로 진행한다. WSL에서 Ubuntu 20.04를 Subsystem으로 사용했다.

 

 

WSL 환경에 docker.io 설치

먼저 cmd 또는 powershell 창에서 wsl 또는 bash를 실행하여 WSL (Ubuntu) 환경으로 진입한다.

powershell 창에서 Ubuntu 탭을 선택해도 가능하다.

 

아래 포스팅의 APT 클라이언트 설정 부분을 참고하여 APT 저장소를 설정한다.

인터넷 환경인 경우에는 변경하지 않아도 된다.

 

Nexus3를 이용한 APT 사설 저장소 구축

APT 저장소는 우분투 (데비안 계열) 패키지의 공식 저장소이다. Nexus3를 이용한 APT 사설 저장소 구축은 1개 저장소만 필요하다. proxy (Remote) - 외부의 APT 저장소의 패키지를 저장하고 내부 사용자에

www.bearpooh.com

 

다음 명령으로 APT 패키지들을 최신 버전으로 업데이트 하고, docker.io를 설치한다.

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install docker.io

 

설치 완료 후 docker 명령을 실행하면 docker 도움말이 출력된다.

 

docker-ce로 설치를 원하는 경우 apt 저장소 추가를 해야 한다.

아래 포스팅을 참고한다.

 

우분투에 Docker 설치하기

docker-ce 설치 기본적으로 cli 기반의 docker-ce를 많이 사용한다. docker-ce는 별도의 APT 리파지토리를 사용하므로 추가 작업이 필요하다. $ sudo apt update # apt가 HTTPS를 통해 저장소를 사용할 수 있도록..

www.bearpooh.com

 

 

Docker 데몬 실행

docker ps 또는 docker image list 명령을 실행하면 다음과 같은 오류 메시지가 나온다.

docker 데몬이 실행된 상태가 아니기 때문이다.

 

다음 명령으로 docker 데몬을 실행해 본다.

$ sudo dockerd

 

다음과 같이 실행된다.

 

다시 docker ps와 docker image list 명령을 실행해 보면 정상적으로 실행 되는 것을 확인할 수 있다.

 

Docker 컨테이너 생성

docker 명령을 이용하여 임의의 Docker 컨테이너를 생성해본다.

 

테스트를 위해 아래 컨테이너를 생성했다.

docker run -d -p 9997:8080 -p 9998:4040 --rm \
  -v /mnt/d/docker/zeppelin/zeppelin_logs:/logs \
  -v /mnt/d/docker/zeppelin/zeppelin_notebook:/zeppelin/notebook \
  -v /mnt/d/docker/zeppelin/zeppelin_data:/data \
  -e ZEPPELIN_LOG_DIR=/logs \
  --add-host dl.bintray.com:127.0.0.1 \
  --add-host repo1.maven.org:127.0.0.1 \
  --name zeppelin
  Docker저장소URL:Port/apache/zeppelin:0.8.1  # ex. docker.test.com/apache/zeppelin:0.8.1

 

다음과 같이 정상적으로 컨테이너가 생성되었다.

 

다음과 같이 정상적으로 접속 된다.

 

 

명령 프롬프트 (cmd)에서 docker 명령어 사용

명령 프롬프트에서 docker 명령을 사용하면 다음과 같이 오류 메시지가 출력된다.

 

docker 데몬은 WSL로 Ubuntu 환경에서 실행 중이기 때문에, 윈도우 명령 프롬프트에서 사용이 불가능하다.

대신 명령어 앞에 wsl을 추가하면 실행 가능하다.

 

WSL에 Docker 데몬 서비스 등록

위의 방법으로 진행하면 윈도우 환경에서 Docker 사용이 가능하지만, 매번 Docker 데몬을 실행해야 하므로 번거롭다.

 

WSL의 Ubuntu에 서비스로 등록하면 해결할 수 있다.

그러나 systemctl 명령을 지원하지 않아서 service 명령을 사용하도록 추가 작업이 필요하다.

 

스크립트 작성과 서비스 실행

다음과 같은 간단한 스크립트를 작성하고, docker.sh로 저장한다.

#!/bin/bash
dockerd

 

파일을 아래 경로로 복사한다.

> wsl
$ sudo cp docker.sh /etc/init.d/docker.sh

 

아래 명령으로 서비스를 시작할 수 있다.

> wsl
$ sudo service docker.sh start

 

그러나 자동 시작 대상이 아니어서 매번 실행해야 한다.

이 부분도 귀찮으므로 자동 시작하도록 설정한다.

 

 

윈도우 자동 시작 등록

visudo 수정

먼저 sudo 명령을 실행할 때 암호를 묻는 부분을 해결하기 위해 visudo를 수정한다.

 

아래 명령으로 visudo를 실행한다.

> wsl
$ sudo visudo

 

가장 마지막 부분에 아래 구문을 추가하고 Ctrl+X를 눌러 저장한다.

%sudo ALL=NOPASSWD: /usr/sbin/service

 

배치파일 작성

메모장을 열어서 다음 명령을 작성하고 docker.bat로 저장한다.

@echo off
"C:\Windows\System32\bash.exe" -c "sudo service docker.sh start"

 

배치 파일 복사

탐색기를 열고 docker.bat 파일을 아래 경로로 복사한다.

  • 현재 사용자만 적용
    - C:\Users\사용자계정\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  • 전체 사용자 적용
    - C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

 

docker 정상 동작 확인

재부팅하면 아래 창이 생성되며 서비스가 자동 시작된다.

WSL에서 서비스로 동작중이므로 해당 창을 닫아도 정상 동작 된다. (Ctrl + X는 주의한다.)

 

 

아래 명령으로 docker가 정상 동작하는지 확인한다.

> wsl docker image list

 

 

정상적으로 실행되는 것을 확인할 수 있다.

 

회사에서 Mac 환경의 Docker를 사용하는 경우

Mac 환경에서 개발 업무를 수행하며 Docker를 사용하는 경우가 있어 방법을 찾아봤지만 뚜렷한 대안은 찾지 못했다.

다음 방법이 가능하지 않을까 싶다.

  • docker machine 사용
  • 리눅스 가상머신을 생성해서 docker를 사용 (VMware나 Paralles는 라이센스 필요, 정 안되면 VirtualBox라도...)
  • 유료 구독 서비스 가입 (ㄷㄷㄷ)

 

또는 PodMan과 Vagrant, VirtualBox 조합으로 사용해 보는 것도 좋을 것 같다.

아래 포스팅을 참고한다.

 

MacOS 환경에서 podman 설치하기 #1

지난 번 Docker 유료화 구독 모델 발표 이후 작성한 글에서 Docker Desktop 대신 사용할 podman이라는 것을 이야기 했었다. 그래서 podman을 설치해 보기로 하고 podman 홈페이지에 접속을 했다. https://podman..

mc500.tistory.com

 

문서 초반에 언급했듯이 개인 환경에서는 무료이므로, 개인 장비로 Mac이나 Mac Book을 사용하는 경우라면 크게 걱정하지 않아도 될 것 같다.