VScode 원격 컨테이너

8067 단어 vscodedockerdevops
Docker 이미지는 코드(Dockerfiles로 정의된 경량급 환경이기 때문에 개발자는 소프트웨어 실행에 필요한 도구와 의존 항목을 설정할 수 있다.그리고 다른 개발자들은 도커 이미지를 간단하게 다운로드해서 데스크톱에서 실행할 수 있으며, 의존항을 먼저 설정하고 어떻게 연결되는지 이해할 필요가 없다.
용기의 주요 사용 상황은 소프트웨어를 생산 환경으로 운송하는 것이다. 생산 환경에서 Kubernetes 등 용기 조율기는 용기의 생명 주기(예를 들어 적재할 때 용기를 축소하는 것)를 관리한다.
용기의 두 번째 용례가 응용 프로그램을 개발하고 테스트하고 있습니다.개발자는 생산에서 파생된 이미지를 사용하고 필요한 도구를 추가해서 응용 프로그램을 개발하고 테스트한다.개발자와 클라우드 환경 간의 환경 마찰을 줄였기 때문이다. 그들은 비슷한 환경을 공유하기 때문에 조작 개발 과정 (DevOps) 을 쉽게 공유할 수 있다.
용기에 대한 경험이 있다면, 터미널에서 접근할 수 있는 경량급 가상 장치라는 것을 알 수 있습니다.따라서 컨테이너에서 개발하려면 다음을 수행할 수 있습니다.
  • 용기에 저장소를 불러오고 VS코드에서 로컬로 이 저장소를 열고 용기에 연결된 단말기에서 명령을 실행한다(예를 들어git 갈고리를 구축하고 터치한다).
  • 컨테이너 파일 시스템에 직접 액세스할 수 있도록 VScode를 컨테이너에 연결합니다.
  • 컨테이너에 VScode를 연결하면 다음과 같은 여러 가지 이점이 있습니다.
  • VScode에서 전체 컨테이너에 액세스하는 파일 시스템입니다.
  • 모든 의존항과 VScode의 통합은 용기에 설치되어 있습니다.
  • 호스트와 용기 사이에 마운트(공유라고도 부른다) 폴더를 연결하는 것을 피한다. Docker가 리눅스 가상기기(예를 들어 macOS, Windows)에서 실행될 때, 대량의 입력/출력(I/O)을 가진 도구(예를 들어 npm)를 사용할 때 이것은 고성능 개선이다.🚜.

  • 설치하다.
    먼저 VScode Remote-Containers라는 VScode 확장자를 설치합니다.
  • Docker for Desktop
  • VSCode
  • Remote Containers

  • 컨테이너 실행
    Docker가 실행되면 다음 구성을 사용하여 컨테이너를 실행합니다.
  • alpine에 의해 생성됩니다.
  • 용기 이름은work이고 프론트 데스크톱 모드(-it)에 있습니다.
  • 현재 작업 디렉터리는/work 용기에 연결되어 있습니다.
  • docker run -it \
      --name work --hostname work \
      -v "$PWD:/work" --workdir /work \
      alpine
    
    마지막 명령을 실행하면 셸 알림이 나타날 것입니다. 이것은 현재 용기에 있다는 것을 의미합니다.다음 명령을 실행할 수 있습니다.

  • uname-a 시스템 정보 표시

  • ps 보조 보기 프로세스

  • 마운트하여 마운트된 파일 시스템 표시

  • nslookup-type = 호스트.부두 노동자.내부 ~ resolves the host

  • 컨테이너에 VScode 연결
    현재 실행 중인 컨테이너가 있는데 VScode를 사용하여 연결할 수 있습니다.
  • 명령 팔레트 열기(F1)
  • 원격 용기 선택: 실행 중인 용기에 연결합니다.
  • 선택 용기의 이름(예를 들어 작업)
  • VScode는 컨테이너 내 서버의 설치 진행률을 표시하는 새 창을 열어야 합니다.일단 완성되면, 이렇게!이제 컨테이너의 파일을 VScode로 편집할 수 있습니다.🚀.

    개발 환경 공유
    Docker 컨테이너를 수동으로 생성하고 VScode를 통해 연결하는 방법을 보았습니다.그러나 VScode 원격 용기는 더 나아가 어떤 용기를 만들고 연결해야 하는지 파일에서 설명할 수 있도록 합니다.개발자json.
    예를 들어 앞의 예시를 자동화하려면 GrunApp이라는 폴더를 만들고 그 안에 GrunApp이라는 파일이 포함되어 있어야 한다.개발자다음 항목을 포함하는 json:
    {
      "image": "ubuntu",
      "extensions": [
        "mutantdino.resourcemonitor"
      ]
    }
    
    VScode를 사용하여 이 파일을 포함하는 폴더를 열 때, 감지된 devcontainer 파일을 포함하는 용기에서 개발을 시작할지 묻는 알림을 볼 수 있습니다."용기에서 다시 열기"를 누르면 ubuntu에서 용기를 만들고 폴더를/workspace/gruntapp에 불러옵니다.
    보안 조치로서, 컴퓨터에서 무엇이든 실행할 수 있기 때문에devcontainer 파일을 보아야 합니다.

    결론
    우리는 VScode가 호스트에 전방이 있는 상황에서 서버를 용기에 설치함으로써 용기화를 실현하는 방법을 보았다.그것은 개발자 간의 마찰, 예를 들어 관계 관리에 의존하는 것을 줄일 수 있는 강력한 도구이다.이런 방법은 민주화되어 앞으로 10년 동안 하나의 표준이 될 것이다🔮.
    VScode 원격 컨테이너도 docker compose와 함께 사용할 수 있습니다.
    즐거움 코드🤓

    유용한 힌트와 기교

    Docker 볼륨
    저장소를 컨테이너에 바인딩하고 VScode를 컨테이너에 연결했습니다.성능을 높이기 위해 코드를 용기에 넣을 수도 있고 (예:git clone,docker cp), 끊임없이 변화하는 용기에 코드를 저장할 수도 있습니다.
    docker volume create example # create a volume named example
    # run a container with the volume named example mounted at /example
    docker run -it --rm -v example:/example -w /example alpine 
    # Inside the container, you can run `mount` to see the volume
    echo '¯\_(ツ)_/¯' > x.txt
    exit
    # Start a ubuntu container
    docker run -it --rm -v example:/example -w /example ubuntu
    cat x.txt
    

    VSCode CLI
    코드를 사용하여 터미널에서 파일을 열 수 있습니다.
    code file.txt
    export EDITOR='code -w'
    
    git commit과 kubectl edit 등의 명령을 사용할 때 VScode를 셸 편집기로 설정하는 것이 유용합니다.

    부두 노동자 공연
    Docker 기본 설정으로 이동하여 Docker VM에 더 많은 CPU 및 RAM을 할당합니다.
    macOS에서는 delegated 옵션을 사용하여 바인딩 마운트 성능을 향상시킬 수 있습니다.

    docker 컨테이너에서 호스트 액세스
    Docker for Desktop 기본값host.docker.internal은 컨테이너에서 호스트로 처리됩니다.이것은 호스트에서 실행되는 네트워크 서비스에 용기에서 접근할 수 있음을 의미합니다.그것도 쿠베르네트스를 해결했다.부두 노동자.Kubernetes가 활성화되어 있으면 내부입니다.

    유용한 링크
  • VSCode Remote Containers
  • .devcontainer.json
  • https://github.com/microsoft/vscode
  • Dockerfile
  • Docker Compose
  • 좋은 웹페이지 즐겨찾기