카테고리 없음
[Docker] 로컬 VScode로 실행 중인 Container 리모트
개몽가
2021. 10. 4. 16:41
배경
GCP 위의 VM에서 시각화 툴 '그라파나' 이미지를 도커허브에서 받고 이를 기반으로 컨테이너를 실행 중임
그라파나를 커스텀화 하고싶어 컨테이너 내부의 소스코드를 로컬 IDE에서 어떻게 리모트를 할 수 있을까 찾아보고 있었음
그러던 중, VScode에서 도커 내의 컨테이너를 리모트할 수 있는 플러그인을 제공한다는 것을 발견하고 겪은 시행착오를 작성함
작업내용
1. VScode 내 remote 환경 구성 (로컬에 VScode 설치되어있다고 가정)
- extension 에서 remote-ssh, remote-containers 설치
- 로컬에 Docker 설치
외부 서버의 Docker에 리모트할 건데 로컬에 왜 필요하냐?
→ 로컬의 Docker Daemon이 Server-client 처럼 통신하는 역할을 하기 때문에 필요한 것이라고 함! - F1 누른 후, setting.json 파일 검색 후, 리모트하고자 하는 외부 서버 입력
"docker.host":"ssh://[USER명]@[IP명]"
2. VScode 설치한 remote-containers로 컨테이너 리모트
- F1 누른 후, Remote-Containers: Attach to Running Container 클릭해서 리모트하고자 하는 컨테이너 선택
나는 여기서 아래와 같은 오류가 발생함
이미 나는 RSA 키를 생성하고 터미널에서 ssh로 외부서버의 VM 인스턴스에 접속을 하고 있었는데 이런 오류가 왜 떴는지 알 수 없었음. 열심히 구글링을 한 결과, RSA 생성 후 ssh 파일이 로컬에 존재하지만 ssh-agent에 이를 직접 등록을 해줘야한다는 글을 발견함[1220519 ms] error during connect: Get "http://docker/v1.24/version": command [ssh -l [USER] -- xx.xx.xxx.xx docker system dial-stdio] has exited with exit status 255, please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host: stderr=[USER]@xx.xx.xxx.xx: Permission denied (publickey).
참조 URL :https://devwithpug.github.io/devops/docker-remote-ssh-and-tls/
요약하자면, 리모트할 때 비밀번호를 인증할 수 없어서 ssh-agent에 등록해야된다는 내용임
$ ssh-add ~/.ssh/[Private Key] $ ssh-add -l # 정상등록되었는지 확인
- 다시 F1를 누르고, Remote-Containers: Attach to Running Container 클릭하면 리모트하고자 하는 컨테이너 리스트가 나옴
3. 컨테이너 리모트 후 소스코드 수정
- 리모트하면, 새 창이 뜨면서 연결됨
- 수정하고자 하는 소스코드 파일 경로 검색
아래와 같이 소스코드를 볼 수 있음
변경 후 저장하면 권한 오류가 발생할 수 있음 (리모트한 계정이 root가 아니라면)
나는 내가 발급받은 계정으로 리모트했기 때문에 권한오류가 떴음
리모트 테스트를 하기 위해 해당 컨테이너에 접속해서 수정 대상 파일 1개만 chmod 777 권한을 주는 것으로 임시 테스트 진행