-
Docker: 윈도우에서 ssh 연결로 간단한 Docker VM 만들기컴퓨터/소프트웨어 2021. 3. 28. 20:16728x90반응형
Docker
Docker 공식 로고 1. 준비물
Docker, 윈도우에서 쓸 ssh
윈도우10 에서 CMD로 SSH 접속하기 (Windows 10 SSH)
SSH 뜻: 시큐어 셸(Secure Shell, SSH)
charging.tistory.com
2. 할 것
가끔 코딩을 할 때 linux에서만 가능한 부분이 있다. 이럴 때 듀얼 부팅을 하거나 VMWare를 사용할 수 있는데
Docker라는 툴을 이용해서 작고 빠른 가상 환경을 만들어 볼 것이다.
아래 결과물은 윈도우에서 생성한 Debian을 VSCode에서 ssh로 연결해서 데비안 환경으로 코딩하고 실행하는 모습이다.
이렇게 하면 VMWare나 듀얼 부팅으로 데비안 실행 후 파일 옮겨서 할 필요 없다.
가상 OS에 연결해서 윈도우안에서 VSCode로 코딩하면 끝이다.
(터미널도 debian의 것으로 연결해준다.)
결과물 3. Dockerfile, docker-compose
매번 update하고 원하는 커맨드들을 install 하면 build 할 때마다 시간이 많이 걸린다.
따라서 간단한 이미지 빌드 후에 아래 이미지를 바탕으로 build를 할 것이다.
(아래 예제는 Debian Buster 버전에 git, make, curl 정도만 추가한 버전이다)
( ※ curl이나 wget은 VSCode ssh 사용에 있어서 꼭 있어야 한다.)
Dockerfile
# Debian buster 최신 (10.8) FROM debian:buster-slim LABEL maintainer="ikr@kakao.com" # Install gcc & make RUN apt-get update && apt-get install -y --no-install-recommends apt-utils \ pkg-config \ gcc \ build-essential \ make \ linux-headers-amd64 \ curl \ git
name에 원하는 이름 (ex. debian_os)을 넣고 build 한다.
docker build -t debian_vm .
로컬에서 불러와도 되지만 이 글에선 docker-hub에 업로드하고 온라인에서 불러올 것이다.
아래 사이트에서 아이디를 만든다.
Docker Hub
We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy
hub.docker.com
docker tag debian_vm docker허브id/debian_vm docker push docker허브id/debian_vm
위 명령어를 실행하고 Docker hub에 가보면 내가 빌드한 작은 os가 업로드돼있다.
이제 가상 OS를 만들고 접속해볼 것이다.
위에서 만든 Dockerfile이 없는 폴더로 이동 후 아래를 진행한다.
VM 실행하기
Dockerfile
ssh 아이디 = root, 비밀번호 = root
# 위에서 만든 image 불러오기 FROM docker허브id/debian_vm:latest RUN apt-get install -y openssh-server RUN mkdir -p /var/run/sshd RUN mkdir -p /run/sshd # replace sshd_config RUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config # set password RUN echo 'root:root' |chpasswd # make .ssh RUN mkdir /root/.ssh RUN apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]
docker-compose.yml
아래 Github에서 참고하였다. (포트가 11111로 설정됨)
kukaro/Eris-DockerExampleTemplate
This repository is a docker example page. Contribute to kukaro/Eris-DockerExampleTemplate development by creating an account on GitHub.
github.com
version: "3.3" services: my_vm: image: my_vm container_name: my_vm command: /usr/sbin/sshd -D ports: - "11111:22" expose: - "11111"
run.bat
@echo off docker build -t my_vm -f Dockerfile . docker-compose -f ./docker-compose.yml up -d
이제 파워셀이나 cmd에서 ./run 을 입력해서 build 하고 실행시켜준다.
docker-compose ps로 아래와 같이 정상적으로 실행되는지 확인 후 진행한다.
(재부팅한 후에는 docker-compose 명령어만 입력하면 내용물이 안날라간다)
정상적으로 ssh 만들어짐 3. VSCode로 연결
아래 Extension을 설치하면 ssh로 도커로 만든 나의 vm os로 연결해서 쉽게 코딩할 수 있다.
Remote - SSH - Visual Studio Marketplace
Extension for Visual Studio Code - Open any folder on a remote machine using SSH and take advantage of VS Code's full feature set.
marketplace.visualstudio.com
파워셀/cmd에서 아래는 먼저 입력해준다.
ssh -l root -p 11111 localhost
그러면 fingerprint 추가 후 (yes), 비밀번호는 root를 입력해서 정상적으로 들어가지는 지 확인한다.
Debian Buster 터미널에 접속됨 다시 VSCode에서 왼쪽 아래 아이콘 클릭 후 Connect to Host에 아래를 입력 후 연결한다.
ssh -l root -p 11111 localhost
왼쪽 아래 >< 아이콘 위에 뜬 메뉴 연결에 성공하면 새로 짜던지, git clone 하던지, docker cp로 파일을 옮기면 된다.
결과물
VSCode에서 Debian 환경으로 코딩 후 실행 728x90'컴퓨터 > 소프트웨어' 카테고리의 다른 글
scrcpy: Android 스마트폰 화면&소리 컴퓨터에서 캡쳐 (2) 2021.08.15 Github Desktop: verified commit 만들기 (0) 2020.12.16 winstall - Windows Package Manager (0) 2020.10.04