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
'개발 노트 > Etc.' 카테고리의 다른 글
[Oracle Cloud] 오라클 Compute instance 에 Postgresql 셋팅 (0) | 2024.08.26 |
---|---|
[프로그램] 키즈노트 백업 프로그램 (31) | 2024.02.25 |
[Docker] Windows 에서 Docker Engine 설치 방법 (w/o Docker Desktop) (0) | 2024.02.22 |
[OS] Windows 캡처 및 스케치 알림오지 않을 때 조치 방법 (0) | 2023.09.22 |
[개발환경] 오라클 자율운영 DB 접속 (w/ SQL Developer) (0) | 2022.09.25 |