VSCode로 Remove Server 안의 Container에 접근하기
들어가며
Visual Studio Code(이하 VSCode)는 마이크로소프트에서 유지보수하는 오픈소스 편집기이다. 다양한 플러그인을 통해 통합 개발 환경(IDE)급의 성능을 낼 수 있다는 점에서 Sublime, Atom과 그 정신을 같이한다.
그런 VSCode에는 Remote Development라는 MS에서 직접 개발하는 플러그인이 있는데 WSL, 원격서버, 도커 컨테이너에 접근해서 마치 로컬에서 VSCode를 사용하듯 파일과 터미널에 접근하게 해준다. 자세한 사항은 VS Code Remote Development - VSCode Docs에서 확인할 수 있다.
아래 사진은 연구실의 17번 서버에 Remote SSH를 이용해서 접속한 모습인데 몇 가지를 제외하면 로컬에서 사용하고 있는 것과 거의 비슷하다.
그런데 문제점은 VSCode로 로컬에 있는 도커 컨테이너에 접근 하는 것은 가능하다. 또 원격 서버에 접근하는 것도 가능하다. 하지만 원격 서버에 있는 도커 컨테이너에 접근하는 것은 불가능한 문제가 있었다.
그런데 알고보니 해결할 수 있는 방법이 공식 문서에 있었다.
어떻게 하는가?
1 Local Computer에 Docker 설치하기
우선 Docker를 설치한다. 윈도우의 경우 이 링크에서 설치할 수 있다.
이 과정이 필요한 이유는 아래와 같이 Docker Daemon이 server-client처럼 통신해야하기 때문이다. 즉 다시 말해서 로컬에서 필요한 것은 docker daemon 뿐이기 때문에 container는 테스트 용도가 아니라면 로컬에 만들 필요가 없다.
2 VSCode의 Docker Host를 외부 서버로 셋팅하기
settings.json
(단축키: Ctrl + ,)을 연 후에 json으로 보고 예의 사진에서 보았듯이 docker.host
를 추가한다. 비밀번호를 추가할 수 없기 때문에 rsa key를 이용한 ssh 접속이 가능해야한다.
...
"workbench.colorTheme": "Default Light+",
"docker.host": "ssh://USERNAME@URL_OR_IP:PORT",
"editor.fontFamily": "Input",
...
3 해당 서버에서 도커 컨테이너 러닝하기
아래와 같은 명령어로 도커 컨테이너를 데몬 프로세스로 실행한다.
$ docker run -it -d --name test_vscode pytorch/pytorch
b9d1c1f7f3a40bbde7d55ee0b6504d99b36d0db7bdf7dddd12f49ebcc23657da
$ docker ps -a | grep test_vscode
b9d1c1f7f3a4 pytorch/pytorch "/bin/bash" 27 seconds ago Up 25 seconds test_vscode
4 도커 컨테이너에 붙기
명령창(단축키, Ctrl + Shift + P)에서 Remote Container: Attach to Running Containers
를 선택하면 아래와 같은 창이 나온다. 기존 Container들은 가려두었는데 이 중 원하는 Container를 선택해서 붙으면 된다.
원리가 무엇인가?
기본적으로 Docker는 Host Process가 각 Container Process들을 관리하고 이 프로세스들 안에 반가상화된 컨테이너와 통신을 하며 관리하는 구조이다.
따라서 Host Process가 사용하는 Port에 접근할 수 있다면 마치 멀리 있는 Docker도 Local에 있는 것처럼 사용할 수 있고 권한도 다 가져올 수 있다.
이를 이용해서 Docker-Swarm은 Orchestration Service를 구현한다.
마치며
행복코딩
Author And Source
이 문제에 관하여(VSCode로 Remove Server 안의 Container에 접근하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bismute/VSCode로-Remove-Server-안의-Container에-접근하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)