Hybridプラットフォーム上でドックベースの開発環境を構成する(VSコード)

17676 ワード

  • クラウドとオンラインインフラストラクチャでは、ユーザー固有のドッキングステーションに基づく開発環境を実施し、現代化された開発環境を実現し、開発サイクル全体にわたってホットスポット管理とジオメトリ管理を統合します.
  • :Jira、GitLab、Docker Registry、vs Code、Public Cloudプラットフォーム、Docker
  • が必要
  • 参考資料
  • https://code.visualstudio.com/docs/remote/containers
  • Containers拡張では、2つの操作モードが用意されています.
  • Attach to a running container
    アクセス運転中のリモートコンテナによる開発
    https://code.visualstudio.com/docs/remote/attach-container
  • Full-time development environment
    Containers拡張を使用してDockerコンテナを包括的な開発環境として使用
    https://code.visualstudio.com/docs/remote/create-dev-container#_create-a-devcontainerjson-file
  • Quick start
    1) Try a development container
    最初の最も簡単な方法は、サンプルを試してコンテナを開発することです.
    2) Open an existing folder in a container
    ファイルシステムの既存のソースコードを使用して、通常の開発環境として使用する既存のプロジェクトの開発コンテナを設定します.
    3) Open a Git repository or GitHub PR in an isolated container volume
    ローカルコピーされたリポジトリはコンテナで開くことができますが、リポジトリの独立コピーを使用してPR研究を行うことも、操作に影響を及ぼさずに他のブランチを調べることもできます.

  • 構築手順
    Workspacaeファイルは、ローカルファイルシステムからマウントしたり、コンテナにコピーしたりできます.
    異なる容器に接続するだけで、開発環境をスムーズに転換できます.

  • 次の手順-コンテナガイドの表示
    コンテナ展開を使用してDockerコンテナでVisual Studioコードを実行する方法について説明します
    https://code.visualstudio.com/docs/remote/containers-tutorial

  • 詳細コンテナ構成手順
    https://code.visualstudio.com/remote/advancedcontainers/overview
  • ウィンドウが再ロードされ、コンテナはまだ存在しないため、vs codeはコンテナを作成し、サンプルライブラリを分離されたコンテナボリュームにコピーします.

    1.VSコードを使用したリモートコンテナ拡張


    あらかじめ準備する


    リモート開発拡張プラグインのインストール

  • https://velog.io/@leesjpr/VS-Code-Remote-interpreter-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
  • KeybaseリモートSSH接続設定を行う


    F 1>プロファイルを開く

    Docker Desktop install


    準備手順として、ドッキングステーションのデスクトップをインストールします.
    リモート開発機能を使用するには、ドッキングステーションが稼働している必要があるため、ドッキングステーションを実行します.
  • https://velog.io/@leesjpr/Docker-%EC%84%A4%EC%B9%98
  • 拡張プラグインのインストール/実行(オプション)


    拡張ドッキングをインストールし、ドッキングメニューを選択すると、ローカルコンテナとイメージが露出します.

    1)ローカルでSampleプロジェクトをテストする


    Get the sample


    Local Dockerを使用してコンテナ開発の優先パラメータをテスト
    リモートコンテンツ:Try a Development Container SampleメニューからGithubに言語固有のサンプル項目をチェックし、コンテナをテストします.

    Build, Debugging


    チェックアウトすると自動的にイメージが作成され、コンテナが実行されます.完了すると、Dev ContainersにContainerが作成されているのが表示されます.

    ドッキングコンテナで操作するターミナルを作成しました

    コンテナを作成すると、VSコードが自動的にコンテナに接続され、ローカルファイルシステムのプロジェクトフォルダがコンテナにマッピングされます.
    Run the application - F5
    コンテナでアプリケーションを実行する場合は、F 5ボタンを押してください.
    Sample Projectがlocalhostのポートにマッピングされると、実行中のWebページが表示されます.

    きどうモード

  • で決済されたソースコードは、ローカルコンピュータではなくドッキングステーションコンテナにあります.
  • リモートコンテンツ拡張機能を使用すると、特定のテクノロジースタックまたは依存関係が設定された開発コンテナをインポートしてプロジェクトを開き、コードがローカルコンピュータ上で正常に動作していることを確認できます.コンテンツをダウンロードする必要はありません.リモート・コンテナーの動作は、Visual Studioコードを実行中のコンテナに接続することです.ワークスペースファイルは、ローカルファイルシステムにロードすることも、コンテナにコピーすることも、
  • にコピーすることもできる.
    コンテナ構築完了ステータスアイコン
    コンテナ作成後のコンテナ運転状態icon

    コンテナ運転後デバッグ状態icon

    devcontainer.jsonファイルの作成


    次の公式リンクで各設定項目の詳細列を表示します.
  • https://code.visualstudio.com/docs/remote/containers-tutorial#_devcontainerjson
  • 2)ユーザGit Repoによるテスト(全時間開発環境)


    ルーム1)クイックスタート:Gitリポジトリまたは孤立コンテナのGitHub PRを開く


    リポジトリからコードをクローンし、クローンされたコードは実際のコンテナにあります.

    F1 > Remote-Containers: Clone Repository in Container Volume...



    リポジトリの入力




    正常に構築が完了すると、イメージとコンテナが作成され、実行されます。




    ユーザー・アイテム


    動作原理


    リモートホストでも大きなボリュームが作成されます.

    vscode-serverとワークスペースは実行中のコンテナにあります

    実行されるコンテナの詳細


    リモートで作成したコンテナ内のアプリケーションを[リモート](Remote)メニューからデバッグ


    F 5ボタンをクリック~!

    Localから3000ポートに接続すると、リモートで作成および実行されるコンテナの成果物を表示できます.

    コンテナの変更時に次の再構築を行い、変更を適用します。



    部屋2)F 1>Open an existing folder in a container

  • https://code.visualstudio.com/docs/remote/containers#_quick-start-open-an-existing-folder-in-a-container
  • ローカルファイルシステム上の既存のソースコードを使用して、従来の開発環境のための既存のプロジェクトの開発コンテナ
  • を設定する.
  • クローンが完了したアイテムをコンテナ内で動作するように設定
  • Step1) Remote-Containers: Open Folder in Container...


    コンテナで「フォルダを開く」を選択します.

    既存のクローンが完了したコードディレクトリを選択

    F1 > Remote-Containers: Add Development Container Configuration Files...


    開発コンテナを既存のプロジェクト-devcontainerに追加します.jsonファイルによるコンテナ詳細の設定

    コンテナプロファイルの追加または



    オープンプロジェクトのドッキングファイルから設定ファイルを作成する



    開発に使用可能な各種容器が露出している

    適用するすべての部分を選択して確認

    確認後は以下のようになります。Devcontainerの下にあるDevcontainerjsonとDockerfileが作成されました



    Docekrfileとdevcontainer.プロジェクトに適応するためにjsonファイルを変更して保存する

    コマンドパレットに次のReview in containerを入力してメニューを選択します



    新しいvs codeエディタが開き、構築タスクが自動的に実行されます。


    Trouble shooting
    10114 ms] Command failed: docker run --sig-proxy=false -a STDOUT -a STDERR --mount source=/Users/leesj/Documents/vs_code/mlops_poc/myRepo,target=/workspaces,type=bind,consistency=delegated --mount type=volume,src=vscode,dst=/vscode -l vsch.local.folder=/Users/leesj/Documents/vs_code/mlops_poc -l vsch.quality=stable -l vsch.remote.devPort=0 --entrypoint /bin/sh vsc-mlops_poc-8bbbc3a2a756c5fc1f18dfee2d141797 -c echo Container started
    trap "exit 0" 15
    
    while sleep 1 & wait $!; do :; done
    
    
    
    
    [6087 ms] Start: Run: docker run --sig-proxy=false -a STDOUT -a STDERR --mount source=/Users/leesj/Documents/vs_code/mlops_poc,target=/workspaces,type=bind,consistency=delegated --mount type=volume,src=vscode,dst=/vscode -l vsch.local.folder=/Users/leesj/Documents/vs_code/mlops_poc -l vsch.quality=stable -l vsch.remote.devPort=0 --entrypoint /bin/sh vsc-mlops_poc-8bbbc3a2a756c5fc1f18dfee2d141797 -c echo Container started

    構築完了後、端末からPythonバージョンを表示すると、以下のように設定手順で指定したバージョンが表示されます。

    vscode ➜ /workspaces/mlops_poc (master ✗) $ python --version
    Python 3.10.0

    次のコマンドを実行し、ブラウザからサンプルページにアクセスします。

    vscode ➜ /workspaces/mlops_poc/app (master ✗) $ python src/app.py 
     * Serving Flask app 'app' (lazy loading)
     * Environment: production
       WARNING: This is a development server. Do not use it in a production deployment.
       Use a production WSGI server instead.
     * Debug mode: on
     * Running on all addresses.
       WARNING: This is a development server. Do not use it in a production deployment.
     * Running on http://172.17.0.2:5000/ (Press CTRL+C to quit)
     * Restarting with stat
     * Debugger is active!
     * Debugger PIN: 873-964-937
    127.0.0.1 - - [08/Nov/2021 07:15:47] "GET / HTTP/1.1" 200 -
    127.0.0.1 - - [08/Nov/2021 07:15:47] "GET /favicon.ico HTTP/1.1" 404 -


    依存インストールの自動設定


    devcontainer.jsonのコメントセクションを無効にする
    	// "postCreateCommand": "pip3 install --user -r requirements.txt",

    3)既存コンテナへのアクセス

  • https://code.visualstudio.com/docs/remote/attach-container
  • ホスト上でdockerコンテナを実行して機械を開発する

  • https://www.tensorflow.org/install/docker
  • 上記リンクでは、CPUのみを含むイメージとGPUを含むイメージとにより、GCP(CPU)のみとWith GPU用のコンテナ運転および開発環境設定
  • とを区別する.
  • コンテナ設置開発環境により、ホスト上のCUDAではなく、コンテナ内のCUDAバージョン
  • を設置する.

    GPUを含むTensorflowイメージキャプチャ




    イメージの実行


    bashの実行

    バックグラウンド運転

    リモートホスト情報の設定への追加


    次のドッキングするドッキングステーションを実行するホストを追加
    "docker.host": "ssh://[계정]@[host IP]"

    vs codeからリモートドックへのアクセス



    前に動作しているドッキングステーションコンテナが露出しています.クリックして新しいvs code編集ウィンドウを開きます

    ホストにアクセスすると、次のようにコンテナのリストが露出します.-1

    曝露運転中の容器情報-2

    既存のコンテナからアクセスを選択しようとすると、「新しいvs codeの編集」ウィンドウが開きます.

    コンテナが正常にアクセスして実行されると、次のログが端末に出力されます.

    リモートで動作するドッキングステーションで実施する準備

    「ファイルまたはフォルダを開く」を選択して、リモート・ジョブのリモート・ディレクトリを開きます.

    コンテナ内のリモートディレクトリが開きました

    ディレクトリにテストファイルを作成してデバッグを検証

    4)GCPターゲットコンテンツ開発優先パラメータの設定


    SSHホスト接続



    Docker install


    生成されたGCP VMにDockerをインストールする

    Tensorflow Containerの実行


    GPUを使用しないTensorflow Dockerイメージコンテナ

    コンテナに接続

    新しいウィンドウがTensorflowコンテナに近づいていることを確認.

    必要なディレクトリにアクセスして操作を実行

    バドミントンベースのプロジェクト実行


    Remote ContainerにアクセスしてGitベースのコンテナ配置を選択

    新しいウィンドウが開き、コンテナの構築が開始されます.
    内部ネットワークとVPN接続のないインスタンスは、内部ラボにアクセスできないため、クローン操作はできません.

    Knowledge Baseベースのコンテナの導入

    プロファイルの追加方法の選択

    コンテナが正常に配置されている場合は、vsコードで検証できます.以下に示します.

    登録ディレクトリ


    ネクタイが預かっているプライベートレジストリは登録できないようですが...
  • 参考資料
  • https://docs.microsoft.com/ko-kr/learn/modules/use-docker-container-dev-env-vs-code/
  • https://code.visualstudio.com/remote/advancedcontainers/overview#_changing-the-default-source-code-mount