본문 바로가기

Window를 사용할수 밖에 없다면..

기존에 Mac 또는 Linux 계열에 익숙한 유저의 경우 어쩔수 없이 Windows PC를 사용해야 하는 경우가 발생할수 있다.

 

회사에서 Windows를 기본으로 제공한다던가 사용하는 프로그램이 윈도우만 호환되어서 어쩔수 없이 윈도를 사용해야 하는 경우들이 종종 발생하고는 한다. 

 

Linux 시스템을 관리에 익숙한 사람에게는 Windows CMD 창은 최악에 가깝다. 

(사실 어찌 보면 Windows Powershell 이나 Windows 서버 시스템을 관리 하지 않았다는 쪽에 가깝다.)

 

나도 어쩔수 없이 환경때문에 윈도우즈를 회사에서 사용해하는 경우였다. 이때 Docker를 윈도우에 설치해서 사용할 경우 Windows의 CMD 창으로 Docker를 컨트롤 하는게 너무나 익숙하지 않았다. 아니 최악에 가까웠다. 기존에 Docker를 사실 Windows 환경에서 사용한 경우가 거의 없기 때문이다. 

 

또한 Windows에서 Docker를 사용하려면 Hyper-V를 사용해야 하기 때문에 아무래도 리소스의 소모가 발생하며, 또한 Tool-Box를 사용할 경우에는 Oracle Virtual Box를 사용해야 한다. 이럴 경우 더 최악이다. ;;;

 

개인적으로 VM을 띄워서 사용하는걸 사실 그닥 좋아 하지도 않지만, 기존에 굉장히 리소스 소모로 인해서 삽질을 많이 경험했던 나였다. 

그래서 Docker는 Linux 또는 Mac에서 띄워서 하는 걸 선호 한다. 

 

하지만 현재 어쩔수 없이 Windows환경에서 Docker를 띄워서 내부에서 테스트 하는 환경에 맞닥드렸다. 

 

WSL에서는 바로 Docker를 실행할 수가 없다....

Windows의 CMD 창에 적응을 못한 나는 결국 Windows에서 제공하는 WSL(Windows Sub System)을 이용해서 Ubuntu를 사용하였다. 

 

아마 일반적으로 WSL을 이용해서 apt를 이용해서 Docker를 설치 하더라도 아래와 같은 Error Message를 맞닥드릴 것이다. 

더보기

Cannot connect to the Docker daemon at unix://var/run/docker.sock. Is the docker daemon running?

 

WSL의 제약 조건들..

아 그렇다 WSL의 경우 가상화 기술을 지원하지 않는 것이다. 

간단히 WSL에서 불가능한 리스트를 살펴 보면 아래와 같다. 

 

WSL에서 Docker 실행 환경 구성하기..

일단 서두가 길었는데 이제 WSL에서 docker를 바로 실행 할수 있도록 환경을 만들어 보자. 

이 경우는 결론적으로는 Windows Docker Desktop Version을 설치 하고 해당 Windows Docker에서 띄워져 있는 Docker Daemon을 2375 Port로 Expose 해주는 것이다. 

 

먼저 Windows Docker Desktop이 설치 되어 있는 것으로 가정한다. (Docker 설치 자체는 너무나 쉽기 때문에 생략 한다.)

설치를 진행한 후 아래의 설정값을 설정 한다. 

  • Settings >> General >> "Expose daemon on tcp://localhost:2375 without TLS" checkbox check

 

위의 셋팅을 하고 나면 Docker의 -H 옵션을 이용해서 localhost:2375를 통해서 Windows의 Docker Daemon에 Socket 접속이 가능해 진다. 아래오 같이 실행 할수 있다. 

docker -H localhost:2375 run jenkins/jenkins:lts

-H 옵션으로 Windows Docker에 socket에 접속 할수 있도록 지정해 줘야 한다. 

매번 저렇게 사용하면 이렇게 사용하는 의미가 없기 때문에 Bash의 profile 또는 rc 파일에  export를 아래와 같이 해주면 -H 옵션으로 일일이 지정하지 않고 사용할수 있다. 나는 bash_profile에 적용을 하였다. 

echo "export DOCKER_HOST=localhost:2375" >> ~/.bash_profile

위와 같이 적용하면 이제 기존의 Linux 환경에서 사용하는것과 같이 docker 명령어를 자유롭게 사용 할수 있다. 

 

테스트 해보지는 않았지만 -H 옵션을 이용해서 다른 Server에 존재하는 Docker를 이용해서 해당 서버에 이미지를 생성하거나 서비스를 실행 할수도 있을 것이다.  지금와서 문뜩 드는 생각이지만 오케스트레이션 툴도 각 노드 마스트에서 이와 같은 비슷한 방식으로 하위의 Container를 생성하고 추가 하는 것이 아닐까 한다. 

Secuof Blog