VScode+Remote Development+Podman 컨테이너 개발

이 글은 Visual Studio Code Advent Calendar 2020 - Qiita 19일째 글이다.
지난 11월 21일 열린 VS Conference Japan에는'Remote Developtment with Podman'이라는 내용이 실렸다.
활동 사이트
https://vscode.connpass.com/event/184441/
슬라이드 쇼 발표
이 기사는 처음 발표된 자료를 재구성해 내용을 정리한 것이다.

VS 코드의 Podman 지원


사용VS Code Remote Development의 원격 개발에서는 원격 개발에서 Podman을 컨테이너 실행 환경으로 사용할 수 있다.또 Remote-Contaainess의 Podman 지원은 2020년 4월, VS Codev1에 제공될 예정이다.시작하다
https://code.visualstudio.com/updates/v1_45?ref=codebldr

Remote-Contaainers로 구체적으로 할 수 있는 일.

  • Docker 대신 Podman으로 컨테이너 실행하기
  • VS 코드에서 Podman으로 시작하는 용기에 연결하여 용기에서 개발
  • 그러나 Docker를 컨테이너 실행 환경으로 사용하는 것에 비해 현재 이용할 수 있는 OS 환경은 한정되어 있다

    Podman 활용 방법


  • Docker Path 지정podman

  • 다음 단계는 Docker를 사용하는 단계와 같습니다.
  • https://code.visualstudio.com/docs/remote/containers

    참고: Podman 작업 OS


    Podman의 작업 환경에 대해서는 다음 기사를 참조하십시오.
    https://zenn.dev/tnk4on/articles/2bdc6d64b63c39
  • Mac와 Windows는 원격 클라이언트(podman-remote)
  • 만 지원
  • 원격 클라이언트는 Remote-Containers 기능을 사용할 수 없음[1]
  • 즉, "현재 VS 코드의 지원 구조를 실현할 수 있는 것은 Linux 환경뿐"
  • Remote-Contaainers에서 작업이 확인된 환경


    다음은 VS코드와 팟맨이 도입된 환경에서 실제 동작 테스트를 한 결과로, 정상적인 동작의 내용을 확인했다.

    Linux(Podman on Fedora 33)


  • Linux 데스크탑에서 VS 코드를 시작하고 이 OS에서 Podman 기반 컨테이너
  • 를 실행합니다.
  • 동작 확인 OS: Fedora33 WorkStation
  • 주요 사항:
  • VS 코드의 지원 패브릭
  • Podman은 일반 사용자가 수행할 수 있음
  • SELinux를 무효화할 필요가 없음(오류 대응 소스 수정 필요)
  • 상세내용 참고발표자료 P.16:https://speakerdeck.com/tnk4on/remote-development-with-podman?slide=16
  • Windows(Podman on WSL2)


  • Windows 데스크탑에서 VS 코드를 시작하고 WSL2에서 Podman 기반 컨테이너
  • 를 실행합니다.
  • OS:Windows 10 + WSL2(Ubuntu-20.04)
  • 주요 사항:
  • VS 코드는 패브릭을 지원하지 않음
  • Remote-WSL을 통해 연결된 환경에서 Remote-Contaainess
  • 를 추가로 수행합니다.
  • Podman은 일반 사용자가 수행할 수 있음
  • 상세내용은 발표자료 참조P.20:https://speakerdeck.com/tnk4on/remote-development-with-podman?slide=20
  • Mac도 VS Code+Podman으로 개발하고 싶어요!


    컨테이너의 실행에 Docker를 사용하지 않고 Podman을 사용하거나 Dookcer의 OS 환경을 실행할 수 없는 경우Podman을 사용하여 실행 가능한 Docker 컨테이너→(Docker in Podman)를 이동합니다.
    Podman을 실행할 수 있는 별도의 Linux 환경 필요

    (참조) Docker in Docker


  • Docker(중?)Docker 구동 기술
  • Docker 공식 용기 이미지 존재
  • https://hub.docker.com/_/docker
  • Docker in Podman이 Podman을 통해 컨테이너 이미지 이동
  • Docker in Podman의 실행 지침


  • Docker in Docker 컨테이너 이미지 사용
  • TCP를 통한 직접 소켓 연결
  • 루트 권한을 사용하여 Podman 명령 실행
  • 일반 사용자docker run일 경우 오류가 발생합니다.컨테이너를 운행할 수 없다.
  • Cgroup v1
  • 로 변경
  • 명령 실행
  • $ sudo podman run --log-level=debug -e DOCKER_TLS_CERTDIR="" --privileged -dit --name dind -p 2375:2375 docker:dind
    
  • 상세내용 참고발표자료 P.26:https://speakerdeck.com/tnk4on/remote-development-with-podman?slide=26
  • Docker in Podman on Fedora

  • 로컬 터미널에서 컨테이너로 실행되는 Docker 호스트에 TCP 직접 연결
  • 상세내용 참고발표자료 P.27:https://speakerdeck.com/tnk4on/remote-development-with-podman?slide=27
  • 총결산

  • VS Code+Remote Development+Podman의 지원 구조는 Linux 환경에만 해당
  • Fedora33 Workstation을 통해 동작 확인
  • Windows 환경에서는 WSL2와 함께 Podman을 사용할 수 있습니다.
  • Windows 10+WSL2(Ubuntu-20.04)에서 동작 확인
  • Mac에서 Podman을 실행할 수 없으므로 Docker in Podman 기술을 사용합니다.
  • Docker가 컨테이너 실행 환경으로 확인됨
  • 단, Mac를 제외한 Podman을 실행할 수 있는 Linux 환경
  • 을 준비해야 합니다.
  • Podman의 사용에 한계가 많지만 향후 업데이트에서 Docker
  • 를 쉽게 선택할 수 있기를 바랍니다.
    각주
    문서에 기재되지 않았지만 동작 검증 결과에 따라 판단↩︎

    좋은 웹페이지 즐겨찾기