Hybridプラットフォーム上でドックベースの開発環境を構成する(VSコード)
17676 ワード
アクセス運転中のリモートコンテナによる開発
https://code.visualstudio.com/docs/remote/attach-container
Containers拡張を使用してDockerコンテナを包括的な開発環境として使用
https://code.visualstudio.com/docs/remote/create-dev-container#_create-a-devcontainerjson-file
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
1.VSコードを使用したリモートコンテナ拡張
あらかじめ準備する
リモート開発拡張プラグインのインストール
KeybaseリモートSSH接続設定を行う
F 1>プロファイルを開く

Docker Desktop install
準備手順として、ドッキングステーションのデスクトップをインストールします.
リモート開発機能を使用するには、ドッキングステーションが稼働している必要があるため、ドッキングステーションを実行します.
拡張プラグインのインストール/実行(オプション)
拡張ドッキングをインストールし、ドッキングメニューを選択すると、ローカルコンテナとイメージが露出します.

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ページが表示されます.

きどうモード
コンテナ構築完了ステータスアイコン
コンテナ作成後のコンテナ運転状態icon

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

devcontainer.jsonファイルの作成
次の公式リンクで各設定項目の詳細列を表示します.
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
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)既存コンテナへのアクセス
ホスト上でdockerコンテナを実行して機械を開発する
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コードで検証できます.以下に示します.

登録ディレクトリ
ネクタイが預かっているプライベートレジストリは登録できないようですが...
Reference
この問題について(Hybridプラットフォーム上でドックベースの開発環境を構成する(VSコード)), 我々は、より多くの情報をここで見つけました https://velog.io/@leesjpr/Hybrid-플랫폼에서-도커기반-개발환경-구성VS-Codeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol