본문 바로가기

개발 노트/Etc.

[Docker] Windows 에서 Docker Engine 만 설치 (w/o Docker Desktop)

반응형

Docker Desktop 이 유료로 전환되며 회사에서 라이센스 구매 프로세스가 귀찮기도 하고, 기존에도 Cmd 가 익숙해 Docker GUI 를 사용하지 않고 있었기에 Docker Desktop 을 설치하지 않고 Docker Engine 만 설치하여 사용하는 방법을 찾아 보았다.

 

내가 찾은 포스팅은 Running Windows and Linux containers without Docker Desktop 이다.

 

링크가 잘릴수도 있기에 내 블로그에도 해당 방법을 옮겨 놓는다.

 

Windows Containers

Docker 에서 Docker CLI 로 stand-alone Docker daemon 바이너리를 제공하기에 이를 사용하여 docker 를 실행할 수 있다.

Powershell 에서 아래 명령어를 입력하여 windows 용 docker daemon 을 설치할 수 있다.

# Optionally enable required Windows features if needed
Enable-WindowsOptionalFeature -Online -FeatureName containers –All
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

curl.exe -o docker.zip -LO https://download.docker.com/win/static/stable/x86_64/docker-20.10.13.zip 
Expand-Archive docker.zip -DestinationPath C:\
[Environment]::SetEnvironmentVariable("Path", "$($env:path);C:\docker", [System.EnvironmentVariableTarget]::Machine)
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
dockerd --register-service
Start-Service docker
docker ps -a

 

Linux Containers

Linux Container 를 실행하기 위한 docker daemon 은 WSL2 를 사용하는 방법이다. 이 방법은 수 많은 블로그에도 나와 있지만 간단하게 기록하기 위해 명령어를 옮겨 놓는다.

WSL 2 설치는 Powershell 에서 간단하게 명령어 한줄로 할 수 있다.

wsl --install

 

위 명령어로 WSL2 를 설치 후 재부팅하면 windows 시작프로그램에서 wsl 을 실행할 수 있다.

 

실행한 wsl prompt 에서 아래 명령어로 Linux container 용 docker daemon 을 설치한다.

sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo docker run hello-world
# Hello from Docker!

# Automatically start on startup
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

 

 

Easily run Windows and Linux containers simultaneously

참고한 포스팅에서는 친절하게도 windows 와 linux 컨테이너를 동시에 실행하고 사용할 수 있는 방법도 정리해 두었다.

 

우선 WSL 에서 아래 명령어로 필요한 설정 (expose) 을 한다.

sudo cp /lib/systemd/system/docker.service /etc/systemd/system/
sudo sed -i 's/\ -H\ fd:\/\//\ -H\ fd:\/\/\ -H\ tcp:\/\/127.0.0.1:2375/g' /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo systemctl restart docker.service

 

Powershell 에서 아래 명령어로 docker context 를 추가한다.

docker context create lin --docker host=tcp://127.0.0.1:2375

 

이렇게 하면 Windows Powershell 에서도 아래 명령어로 context 를 지정하며 동시에 Windows / Linux 컨테이너를 사용할 수 있다고 한다. (사실 나도 해보진 않았다. 기회되면 해봐야지 .. )

> docker ps
CONTAINER ID   IMAGE                                       COMMAND               CREATED         STATUS        PORTS     NAMES
edb2101c52ed   mcr.microsoft.com/windows/nanoserver:1809   "ping -t localhost"   2 seconds ago   Up 1 second             wincontainer

> docker -c lin ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
94e165427f9c   nginx     "/docker-entrypoint.…"   4 seconds ago   Up 3 seconds   80/tcp    lincontainer

 

반응형