1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloud WorkstationsでRHELクローンコンテナ環境を構築し、Gemini Code Assistを試してみた

Last updated at Posted at 2025-08-17

RHELでの開発を想定して、Cloud Workstationsのベースも同じにできるか、試してみました。
また以下の手順で、Cloud Workstationsだけでなく、ローカルのDocker上でも動作するWeb IDE環境を構築できます。

今回のまとめ

  • ✅ RockyベースのCode OSSカスタムイメージをCloud Workstations上で動作させることは可能。
  • Gemini Code Assistは使用できるがAgentは動作せず、Google提供のベースイメージ(Debianベースのみ)を利用する必要がありそう。
  • ❌ Podmanはcgroup v2依存のため、Cloud Workstationsの標準環境ではそのまま動作しない。
  • ⚠️ コンテナの永続化も含め、カスタムイメージの作成はまだまだやることがある。

👉 結論として、RHEL系の場合でのAIを活用した開発は「DebianベースのGoogle提供のベースイメージのWorkstations + Rockyコンテナ (Docker上)を使ったデバッグ」で行うのが現実的と感じました。

構成

  • 以下のようにRockyベースのCode OSSイメージを作成してArtifact Registryに登録して、それをもとにワークステーションを作成します。
  • 設定の永続化や、コンテナ上でのDBを含む開発環境の構築は今後の課題で、今回は以下を全部は構築できていません。

①まずは以下のようなDockerfileを作成しました(Powered by Chat GPT5.0)。

以下も参考にしながらChat GPT5.0で進めてみます。
https://cloud.google.com/workstations/docs/customize-container-images?hl=ja

Dockerfile(PoC用)
※実運用ではパスワード設定等を確認ください。

FROM rockylinux:9

# 依存(軽量の curl-minimal を使用)
RUN dnf -y update && \
    dnf -y install --setopt=install_weak_deps=False \
      curl-minimal tar shadow-utils libX11 mesa-libgbm nss alsa-lib procps-ng && \
    dnf clean all && rm -rf /var/cache/dnf


# sudo のインストールと NOPASSWD 設定
RUN dnf -y install sudo && \
    echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers

# 非rootユーザー
RUN useradd -m -u 1000 coder
RUN usermod -aG wheel coder


# code-server を取得・配置(必要なバージョンに合わせて VERSION を調整)
ENV VERSION=4.89.1
RUN curl -fsSL https://github.com/coder/code-server/releases/download/v${VERSION}/code-server-${VERSION}-linux-amd64.tar.gz \
    | tar -xz -C /opt && \
    ln -s /opt/code-server-${VERSION}-linux-amd64 /opt/code-server && \
    mkdir -p /home/coder/.config/code-server && chown -R coder:coder /home/coder /opt/code-server*

# 起動エントリポイント(8080 で無認証・TLSなし)
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
USER coder

EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

entrypoint.sh(PoC用)
※実運用ではパスワード設定等を確認ください。

#!/usr/bin/env bash
set -euo pipefail

CFG="$HOME/.config/code-server/config.yaml"
mkdir -p "$(dirname "$CFG")"
cat > "$CFG" <<'EOF'
bind-addr: 0.0.0.0:8080
auth: none
disable-telemetry: true
cert: false
EOF

exec /opt/code-server/bin/code-server \
  --user-data-dir "$HOME/.local/share/code-server" \
  --extensions-dir "$HOME/.local/share/code-server/extensions" \
  --disable-telemetry

②Google CloudのCloud Shellを使います。

上記の2ファイルを配置します。

事前に以下APIを必要に応じて有効化しておきます。

  • artifactregistry.googleapis.com
  • cloudbuild.googleapis.com

以下をCloud Shellから実行します。

# 0) 変数
export PROJECT_ID="your-gcp-project-id"
export REGION="asia-northeast1"
export REPO="dev-images"            # お好みのリポジトリ名
export IMAGE="code-server"          # お好みのイメージ名
export TAG="v0.1"                   # タグ

# 1) プロジェクト選択
gcloud config set project "$PROJECT_ID"

# 3) Artifact Registry(Docker)リポジトリを作成(初回のみ)
gcloud artifacts repositories create "$REPO" \
  --repository-format=docker \
  --location="$REGION" \
  --description="Dev images"

③Cloud Buildで“その場から”ビルド&Pushします。

Dockerfileentrypoint.sh があるディレクトリで以下をCloud Shellから実行:

# Cloud Build で Dockerfile をビルドし、完成イメージを直接 Artifact Registry へ push
gcloud builds submit . \
  --tag "$REGION-docker.pkg.dev/$PROJECT_ID/$REPO/$IMAGE:$TAG"

gcloud builds submit にてデフォルトでカレントディレクトリの Dockerfileを使用し、ビルド成果物を --tag で指定した Artifact Registry に push します。


ちなみにentrypoint.sh は code-server を auth: none で起動しており 8080 を全開にします。これは今回の作成するCloud Workstationsのクラスタの外部IP無しかつVPCネットワークは、サブネットのFirewallで、INGRESS:0.0.0.0/0を拒否しています( Firewallではサービスアカウントの指定を忘れずに )。

④Cloud Workstationsを作成

クラスタを作成→クラスタ構成作成と進む。

この時に以下に注意。

  • カスタムコンテナのイメージで先ほど作ったArtifact Registryのイメージを選択する。
  • 環境変数にHOME=/tmp/codeを追加。その他は同じ(ここは権限設定の関係で暫定的)。
  • 外部IPを許可しない、SSHも許可しない。

Cloud Workstationsを作成し、8080で接続。

⑤ Gemini Code Assistをインストール

  • ExtensionからGemini Code Assistをインストール
  • Gemini Code AssistにSign inしてブラウザで認証
  • Gemini Code Asssitを使う。

image.png

最後に

agentが動きません。

これは困った。
image.png

Podmanも動きません。

Podmanは5.xになり、cgroupv1では動かくなったようです。
Cloud Workstationsのホストもデフォルトではcgroupv2ではなくcgroupv1のようで、Podman4.xのインストールもうまくいかず、Podmanまで使える環境構築は今後の課題です。

コンテナの永続化をこれからです。

コンテナを再起動すると初期状態に戻るので、永続化設定ももう少し見てみる必要がありそうです。

結論

Podman上でPostgreSQLまでを動かし、Cloud Workstations上で、Agentでの開発やPythonやJavaのデバッグができる環境を目指したかったですが、課題が多いです。
特にGemini Code Assistの機能をフルに使うには、Google提供のBaseイメージを使うのがよさそうです。RHEL系の動作検証は、DebianベースのCloud Workstations上のDocker上でRHEL系のコンテナを使い行うのが現実的なようなです。

お疲れ様でした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?