Google Cloud は、Cloud Workstations で使用するために設計された次のベースイメージを維持します。
事前構成されたベースイメージのリスト
これらのイメージは、ワークステーション構成で直接使用できます。または、Docker の FROM コマンドを使用してカスタム コンテナ イメージを作成するときにベースイメージとして使用することもできます。
| 画像 | 説明 |
|---|---|
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest | Code-OSS をベースにした Cloud Workstations ベースエディタ(Cloud Workstations 用 Code OSS)。(デフォルト) |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/base:latest | IDE がインストールされていないベースイメージ。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/clion:latest | CLion IDE。JetBrains Gateway を介してのみアクセス可能。 インストールと開始の情報については、ローカルの JetBrains IDE を使用してコードを開発するをご覧ください。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/goland:latest | GoLand IDE。JetBrains Gateway を介してのみアクセス可能。 インストールと開始の情報については、ローカルの JetBrains IDE を使用してコードを開発するをご覧ください。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/intellij-ultimate:latest | IntelliJ IDEA Ultimate IDE。JetBrains Gateway を介してのみアクセス可能。 インストールと開始の情報については、ローカルの JetBrains IDE を使用してコードを開発するをご覧ください。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/phpstorm:latest | PhpStorm IDE。JetBrains Gateway を介してのみアクセス可能。 インストールと開始の情報については、ローカルの JetBrains IDE を使用してコードを開発するをご覧ください。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/pycharm:latest | PyCharm Professional IDE。JetBrains Gateway を介してのみアクセス可能。 インストールと開始の情報については、ローカルの JetBrains IDE を使用してコードを開発するをご覧ください。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rider:latest | Rider IDE。JetBrains Gateway を介してのみアクセス可能。 インストールと開始の情報については、ローカルの JetBrains IDE を使用してコードを開発するをご覧ください。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rubymine:latest | RubyMine IDE。JetBrains Gateway を介してのみアクセス可能。 インストールと開始の情報については、ローカルの JetBrains IDE を使用してコードを開発するをご覧ください。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/webstorm:latest | WebStorm IDE。JetBrains Gateway を介してのみアクセス可能。 インストールと開始の情報については、ローカルの JetBrains IDE を使用してコードを開発するをご覧ください。 |
サードパーティのベースイメージのリスト
| サードパーティ画像 | サードパーティ プロバイダ |
|---|---|
| us-central1-docker.pkg.dev/posit-images/cloud-workstations/workbench:latest | Posit Workbench(RStudio Pro を含む) |
Posit Workbench IDE または Posit Workbench コンテナ イメージで問題が発生した場合は、GitHub で Posit に報告してください。
Cloud Workstations のベースイメージの構造
Cloud Workstations のベースイメージは、次の定義済みの構造を共有します。
- ベースイメージ エントリ ポイント ファイルは
/google/scripts/entrypoint.shに設定されています。 起動時に、ベースイメージは
/etc/workstation-startup.d/*の下にあるファイルを辞書順に実行し、ワークステーション環境を初期化します。ファイルとその動作は次のとおりです。
000_configure-docker.sh: ワークステーション内で Docker を構成して実行します。010_add-user.sh: Cloud Workstations にデフォルトのユーザーを作成します。永続ディスクはコンテナに動的にアタッチされるため、Dockerfile 内 ではなく、ワークステーションの起動時にユーザーを追加する必要があります。
020_start-sshd.sh: コンテナ内でsshdサービスを開始します。030_customize-environment.sh:/home/user/.workstation/customize_environmentをuserとして実行します。110_start-$IDE.sh: イメージの IDE を起動します。
Cloud Workstations では、Docker イメージを
/home/.docker_dataのホーム ディレクトリに保存することで、イメージがセッション間で保持されます。
ワークステーションの起動時に機能を追加するには、/etc/workstation-startup.d/ ディレクトリにスクリプトを追加します。
このディレクトリ内のスクリプトは、デフォルトでは root として実行されます。スクリプトを別のユーザーとして実行するには、
runuserコマンドを使用します。スクリプトは辞書順に並べ替えられるため、200 より大きい 3 桁の数字をスクリプトの前に付けることをおすすめします。
ワークステーション イメージを拡張しない場合は、ホーム ディレクトリに customize_environment スクリプトを作成することもできます。
ホーム ディレクトリの変更
ワークステーション構成で永続的なホーム ディレクトリが指定されている場合(デフォルトの動作)、ホーム ディレクトリをサポートする永続ディスクが実行時にコンテナに動的に接続されます。このプロセスにより、コンテナ イメージのビルド時に /home ディレクトリに加えた変更が上書きされます。
更新を維持するには、コンテナ ランタイムに /home ディレクトリを変更します。そのためには、/etc/workstation-startup.d ディレクトリにスクリプトを追加するか、/etc/profile.d ディレクトリにユーザーごとの構成を追加します。このプロセスを高速化するには、コンテナの起動がブロックされないように、セットアップ スクリプトをバックグラウンド プロセスとして実行することを検討してください(コマンドの最後にアンパサンド & を追加します)。
コンテナ ランタイムに移動する必要があるビルド時の構成の例:
- ユーザーごとの
git構成 - ホーム ディレクトリにクローンされた
gitリポジトリ - 直接ユーザー構成(例:
$HOME/.configディレクトリへのファイルの配置) - ユーザーの作成
ユーザーの作成と変更
Persistent Disk はランタイムにコンテナに動的にアタッチされるため、Dockerfile 内ではなく、ワークステーションの起動時にユーザーを追加する必要があります。ユーザーを変更または追加するには、/etc/workstation-startup.d/010_add-user.sh を更新するか、起動時に実行する独自のスクリプトを作成することをおすすめします。
また、/etc/profile.d のファイルを更新して、ユーザーのデフォルトの bash プロファイルを変更することもできます。
事前構成済みの Secure APT キーを更新する
Cloud Workstations のベースイメージには、Secure APT を使用して、さまざまなサードパーティのリポジトリから取得されたさまざまなツールがプリインストールされています。インストール プロセスの一環として、リポジトリ オーナーが提供する公開鍵が gpg を使用してインポートされ、/usr/share/keyrings/ の下の個々のファイルに配置されます。これらのファイルは、/etc/apt/sources.list.d/ 内の対応する list ファイルから参照されます。
これにより、apt は、特定のリポジトリを操作する際にその完全性を確認できます。
サードパーティのリポジトリ オーナーが、リポジトリの完全性の検証に使用する公開鍵を変更する場合があります。これにより、apt がそのリポジトリを操作するときにエラーが表示されます。この潜在的な問題を解決するには、/google/scripts/refresh-preinstalled-apt-keys.sh を使用します。これにより、プリインストールされた公開鍵の最新バージョンを取得して、再インポートします。
インストール済み IDE のバージョンを一覧表示する
いくつかの Cloud Workstations ベースイメージには、IDE がプリインストールされています。利便性のためには、含まれている /google/scripts/preinstalled-ide-versions.sh スクリプトを参照してください。これは、イメージにインストールされた IDE の名前とバージョン情報を一覧表示します。
sudo root 権限をオフにする
デフォルトのワークステーション ユーザーには、これらのコンテナに対する sudo root アクセス権限があります。Docker コンテナへのルートアクセスをオフにするには、ワークステーション構成の作成時に CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO 環境変数を true に設定します。
ワークステーション構成の作成時にコンソールでこの環境変数を設定するには、次の手順を行います。 Google Cloud
- ワークステーション構成の作成時に、基本情報の構成とマシン構成を完了します。
- [環境のカスタマイズ] ダイアログで、[コンテナの詳細オプション] セクションを開き、[環境変数] を選択します。
- [追加変数を追加] をクリックします。
- 値として「
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO」と「true」を入力します。
イメージを拡張せずにカスタマイズする
便宜上、すべての Cloud Workstations ベースイメージは、/home/user/.workstation/customize_environment にある実行可能ファイルの存在を確認し、存在する場合は user としてバックグラウンドで実行します。これにより、起動時に任意のスクリプトまたはバイナリを実行できます。.profile や .bashrc とは異なり、このスクリプトはシェルログインごとに 1 回ではなく、ワークステーションの起動時に 1 回のみ実行されます。
customize_environment スクリプトは user として実行されるため、スクリプトを作成するときに必要に応じて権限を更新してください。たとえば、ワークステーションの起動時に Emacs をインストールする場合、customize_environment の内容は次のようになります。
#!/bin/bash
sudo apt-get update
sudo apt-get install -y emacs
customize_environment の実行ログは、コンテナの /var/log/customize_environment にあり、コンテナ出力ログにも書き込まれます。customize_environment が正常に実行されると、/var/run/customize_environment_done にファイルが作成されます。customize_environment は Workstation の起動と並行して実行されるため、スクリプトによってインストールされたパッケージは、ワークステーションの起動後すぐに使用できるようになります。
次のステップ
- コンテナ イメージをカスタマイズする。
- Cloud Build と Cloud Scheduler を使用してベースイメージの更新を同期するために、コンテナ イメージの再ビルドを自動化する。
- セキュリティのベスト プラクティスを設定する。