Cloud Workstations에서 제공되는 사전 구성된 기본 이미지에는 IDE, 기본 Linux 터미널 및 언어 도구와 sshd
서버의 최소한의 구성만 포함됩니다. 특정 개발 사용 사례의 환경 설정을 촉진하기 위해서는 도구 및 이러한 기본 이미지를 사전 설치 도구 및 종속 항목으로 확장하고 자동화 스크립트를 실행하는 커스텀 컨테이너 이미지를 만들 수 있습니다.
커스텀 컨테이너 이미지의 경우에는 Artifact Analysis와 같은 컨테이너 스캔 도구를 실행해서 추가 종속 항목을 검사하는 것 외에도 Cloud Workstations 기본 이미지가 업데이트될 때 이러한 이미지를 자동으로 다시 빌드하도록 파이프라인을 설정하는 것이 좋습니다. 사용자는 커스텀 이미지에 추가된 커스텀 패키지 및 종속 항목을 유지 보수하고 업데이트해야 합니다.
시작하기 전에
Docker와 같은 컨테이너 이미지를 빌드하고 Google Cloud CLI를 사용해서 이미지를 Artifact Registry(또는 Container Registry)에 내보내기 위한 도구가 포함된 머신이 필요합니다. 이러한 단계를 수행하기 위해서는 도구가 사전 설치된 Cloud Workstations 또는 Cloud Shell Editor를 사용할 수 있습니다.
지원되는 기본 이미지 목록에서 사용하려는 기본 이미지를 선택합니다(예:
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
).또는 자체 컨테이너 이미지 사용 안내에 따라 자체 컨테이너 이미지를 사용하거나 외부 컨테이너 이미지를 사용할 수 있습니다.
CUSTOM_IMAGE_FOLDER
와 같은 폴더를 만들고 아래 예시에 표시된 것처럼 선택한 기본 이미지를 확장하여 이 폴더 내에 Dockerfile을 만듭니다.
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
서비스를 시작합니다.110_start-$IDE.sh
: 이미지에 대해 IDE를 시작합니다.
Cloud Workstations가
/home/.docker_data
에서 홈 디렉터리에 Docker 이미지를 저장하므로, 이미지가 세션 간에 보존됩니다.
워크스테이션 시작 중 기능을 추가하려면 /etc/workstation-startup.d/
디렉터리에 스크립트를 추가합니다.
이 디렉터리의 스크립트는 기본적으로 루트로 실행됩니다. 스크립트를 다른 사용자로 실행하려면
runuser
명령어를 사용합니다.스크립트가 사전 순으로 실행되기 때문에 200보다 큰 세 자리 숫자를 스크립트에 접두사로 추가하는 것이 좋습니다.
홈 디렉터리 수정
워크스테이션 구성이 영구적인 홈 디렉터리(기본 동작)를 지정하면 홈 디렉터리를 지원하는 영구 디스크가 런타임 시 컨테이너에 동적으로 연결됩니다. 이 프로세스는 컨테이너 이미지 빌드 시간에 /home
디렉터리에 수정된 항목을 덮어씁니다.
업데이트를 보존하려면 /etc/workstation-startup.d
디렉터리에 스크립트를 추가하거나 /etc/profile.d
디렉터리에 사용자별 구성을 추가하여 컨테이너 런타임에 /home
디렉터리를 수정합니다.
프로세스 속도를 높이려면 컨테이너 시작을 차단하지 않도록 앰퍼샌드 &
를 명령어 끝에 추가하여 설정 스크립트를 백그라운드 프로세스로 실행하는 것이 좋습니다.
일부 빌드 시간 구성 예시는 컨테이너 런타임으로 이동해야 합니다.
- 사용자별
git
구성 - 홈 디렉터리에서 클론된
git
저장소 $HOME/.config
디렉터리에 파일 배치와 같은 직접 사용자 구성- 사용자 생성
사용자 만들기 및 수정
영구 디스크가 런타임에 컨테이너에 동적으로 연결되기 때문에 Dockerfile이 아니라 워크스테이션 시작 시에 사용자를 추가해야 합니다. 추가 사용자를 수정하거나 만들려면 /etc/workstation-startup.d/010_add-user.sh
를 업데이트하거나 시작 시 실행되는 자체 스크립트를 만드는 것이 좋습니다.
또한 /etc/profile.d
에서 파일을 업데이트하여 사용자에 대해 기본 Bash 프로필을 수정할 수 있습니다.
사전 구성된 보안 APT 키 업데이트
Cloud Workstations 기본 이미지에는 보안 APT를 사용하여 다양한 타사 저장소에서 가져온 다양한 도구가 사전 설치되어 있습니다. 설치 프로세스 중에 gpg
를 사용해서 저장소 소유자가 제공한 공개 키를 가져오고 /usr/share/keyrings/
아래에 개별 파일로 배치합니다. 이러한 파일은 /etc/apt/sources.list.d/
아래의 해당 list
파일에서 참조됩니다.
이를 통해 apt
는 특정 저장소와 상호작용할 때 저장소의 무결성을 확인할 수 있습니다.
일부 경우에는 타사 저장소 소유자가 저장소 무결성 검증에 사용되는 공개 키를 변경하도록 결정할 수 있습니다. 그러면 키를 사용할 때 apt
에서 오류가 표시됩니다. 이 잠재적 문제를 해결하기 위해서는 사전 설치된 공개 키의 최신 버전을 얻어서 이를 다시 가져오는 /google/scripts/refresh-preinstalled-apt-keys.sh
를 사용할 수 있습니다.
설치된 IDE 버전 나열
여러 Cloud Workstations 기본 이미지가 IDE에 사전 설치되어 제공됩니다. 편의를 위해서는 이미지에 설치된 IDE의 이름 및 버전 정보를 나열하는, 포함된 /google/scripts/preinstalled-ide-versions.sh
스크립트를 참조하세요.
sudo
루트 권한 사용 중지
기본 워크스테이션 사용자는 이러한 컨테이너에서 sudo
루트 액세스 권한을 갖습니다. Docker 컨테이너에 대해 루트 액세스 권한을 사용 중지하려면 워크스테이션 구성을 만들 때 CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO
환경 변수를 true
로 설정합니다.
워크스테이션 구성을 만들 때 Google Cloud 콘솔을 통해 이 환경 변수를 설정하려면 다음 단계를 수행합니다.
- 워크스테이션 구성을 만들 때 기본 정보 구성 및 머신 구성을 완료합니다.
- 환경 맞춤설정 대화상자에서 고급 컨테이너 옵션 섹션을 확장하고 환경 변수를 선택합니다.
- add변수 추가를 클릭합니다.
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO
및true
를 값으로 입력합니다.
자체 컨테이너 이미지 사용
또한 Linux를 기반으로 하는 한 자체 컨테이너 이미지 또는 외부 컨테이너 이미지를 사용할 수 있고 컨테이너가 시작될 때 차단 프로세스를 실행할 수 있습니다.
Dockerfile을 설정할 때는 즉시 종료되는 대신 컨테이너가 계속 실행될 수 있도록 ENTRYPOINT
안내에 따라 sleep infinity
와 같은 차단 프로세스를 실행해야 합니다. 또는 워크스테이션 구성에서 차단 프로세스를 지정하도록 config.container.args
필드를 설정할 수 있습니다.
자체 컨테이너 이미지를 사용할 때는 다음을 참조하세요.
Cloud Workstations는 Cloud Workstations 기본 이미지의 추가 스크립트가 필요하지 않습니다.
하지만 Cloud Workstations 기본 이미지를 실행하는 컨테이너 내에서
/etc/workstation-startup.d/
디렉터리의 스크립트를 확인합니다. 파일 이름은 각 스크립트가 수행하는 기능을 나타냅니다.컨테이너에서 SSH 서버를 실행하는 것이 좋습니다. Cloud Workstations에서 기본적으로 이를 설정하는 방법을 보려면 기본 이미지에서
/etc/workstation-startup.d/020_start-sshd.sh
를 참조하세요.기본 IDE 또는 웹 서버를 포트
80
으로 실행하는 것이 좋습니다.
Cloud Workstations 기본 이미지 확장
워크스테이션 환경에 대해 커스텀 이미지를 만들도록 Cloud Workstations 기본 이미지를 확장할 때는 세 가지 접근 방법을 따를 수 있습니다.
- 추가하려는 정적 자산을 포함하도록
Dockerfile
을 업데이트합니다. /etc/workstation-startup.d/
아래에 실행 파일을 추가하여 실행 컨테이너를 맞춤설정합니다. 이 디렉터리 아래의 파일은 컨테이너 시작 시 사전 순으로 자동으로 실행되므로 워크스테이션 시작 중 적절한 시간에 실행되도록 파일 이름을 접두사로 추가할 수 있습니다.- 컨테이너 시작을 완전히 맞춤설정하도록 Dockerfile에서
ENTRYPOINT
를 재정의합니다.
샘플 커스텀 Dockerfile
이 섹션에서는 자체 Dockerfile을 만들기 위한 시나리오 예시와 안내를 제공합니다.
emacs
가 사전 설치된 컨테이너 이미지
emacs
가 사전 설치된 컨테이너를 만들려면 다음 명령어를 실행합니다.
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
RUN sudo apt update
RUN sudo apt install -y emacs
사용자 맞춤설정이 포함된 컨테이너 이미지
컨테이너 이미지를 맞춤설정하려면 다음 단계를 따르세요.
/etc/workstation-startup.d/*
에서010_add-user.sh
뒤에 실행되는 스크립트를 만듭니다. 예를 들면011_customize-user.sh
입니다.#!/bin/bash # Create new group groupadd $GROUP # Add the user to a new group usermod -a -G $GROUP $USERNAME
$GROUP
을 새 그룹 이름으로 바꾸고$USERNAME
을 사용자 이름으로 바꿉니다.스크립트 이름을
011_customize-user.sh
로 지정했다고 가정하고 Dockerfile에서 이미지에 다음을 추가하고 이를 실행 가능하게 만듭니다.FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest COPY 011_customize-user.sh /etc/workstation-startup.d/ RUN chmod +x /etc/workstation-startup.d/011_customize-user.sh
SSH 세션에서 컨테이너 환경 변수를 설정하는 컨테이너 이미지
워크스테이션 구성이나 워크스테이션 수준에서 설정된 환경 변수가 진입점 명령어를 통해 직접 하위 프로세스에 전달됩니다. 여기에는 사전 구성된 기본 이미지의 IDE가 포함됩니다. 하지만 SSH 세션은 진입점의 하위 프로세스가 아니며 이러한 커스텀 환경 변수가 설정되지 않았습니다.
SSH 세션에서 이러한 환경 변수를 설정하려면 이러한 환경 변수를 컨테이너의 진입점 명령어에서 /etc/environment
파일로 릴레이하는 커스텀 컨테이너 이미지를 설정합니다.
이를 달성하려면 다음 단계를 수행합니다.
/etc/workstation-startup.d/*
에서010_add-user.sh
뒤에 실행되는 스크립트를 만듭니다. 예를 들면011_add-ssh-env-variables.sh
입니다.#!/bin/bash # echo "CUSTOM_ENV_VAR=$CUSTOM_ENV_VAR" >> /etc/environment
CUSTOM_ENV_VAR
를 원하는 환경 변수 이름으로 바꿉니다.스크립트 이름을
011_add-ssh-env-variables.sh
로 지정했다고 가정하고 Dockerfile에서 이미지에 다음을 추가하고 이를 실행 가능하게 만듭니다.FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest COPY 011_add-ssh-env-variables.sh /etc/workstation-startup.d/ RUN chmod +x /etc/workstation-startup.d/011_add-ssh-env-variables.sh
SSH 세션에 X11 전달을 사용 설정하는 컨테이너 이미지
X11 전달을 사용하면 원격 애플리케이션을 시작하고 애플리케이션 표시를 로컬 머신으로 전달할 수 있습니다.
X11 전달을 사용 설정하는 컨테이너 이미지를 만들려면 X11Forwarding yes
(X11 전달 허용) 및 AddressFamily inet
(IPv4만 사용되도록 보장)을 추가하여 Cloud Workstations 기본 이미지에서 제공된 OpenSSH 데몬 구성 파일(/etc/ssh/sshd_config
)을 수정합니다. 이러한 키워드에 대한 자세한 내용은 AddressFamily
및 X11Forwarding
에 대한 OpenBSD 웹페이지를 참조하세요.
다음은 필요한 수정을 수행하는 샘플 Dockerfile입니다.
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
# Permit X11 forwarding using only IPv4
RUN cat >> /etc/ssh/sshd_config <<-EOF
AddressFamily inet
X11Forwarding yes
EOF
Cloud Workstations용 Code OSS를 다른 컨테이너 이미지에 복사
다단계 빌드를 사용하면 Dockerfile의 여러 FROM
문을 사용할 수 있습니다.
. 각 FROM
안내는 다른 기반을 사용할 수 있으며 빌드 단계 간 아티팩트 복사를 사용 설정합니다. Cloud Workstations용 Code OSS를 다른 컨테이너 이미지에 추가하려면 다단계 빌드를 사용하여 애플리케이션 폴더 /opt/code-oss
를 이미지에 복사합니다. 컨테이너 시작 시간에 Cloud Workstations용 Code OSS를 시작하려는 경우 컨테이너 /etc/workstation-startup.d/110_start-code-oss.sh
스크립트를 추가로 복사합니다.
다음은 Code OSS를 JetBrains IntelliJ Ultimate 이미지에 복사하는 샘플 Dockerfile입니다. 그런 다음 두 IDE 중 하나와 상호작용할 수 있습니다.
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest as code-oss-image
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/jetbrains-intellij:latest
# Copy Code OSS for Cloud Workstations and startup scripts into our custom image
COPY --from=code-oss-image /opt/code-oss /opt/code-oss
COPY --from=code-oss-image /etc/workstation-startup.d/110_start-code-oss.sh /etc/workstation-startup.d/110_start-code-oss.sh
# Use the existing entrypoint script which will execute all scripts in /etc/workstation-startup.d/
ENTRYPOINT ["/google/scripts/entrypoint.sh"]
자바용 Code OSS for Cloud Workstations에 IDE 확장 프로그램을 사전 설치하는 컨테이너 이미지
빌드 시 Java 개발용 Code OSS for Cloud Workstations에 IDE 확장 프로그램을 사전 설치하는 컨테이너 이미지를 만들려면 다음 명령어를 실행합니다.
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
RUN wget https://open-vsx.org/api/vscjava/vscode-java-debug/0.40.1/file/vscjava.vscode-java-debug-0.40.1.vsix && \
unzip vscjava.vscode-java-debug-0.40.1.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-debug
RUN wget https://open-vsx.org/api/vscjava/vscode-java-dependency/0.19.1/file/vscjava.vscode-java-dependency-0.19.1.vsix && \
unzip vscjava.vscode-java-dependency-0.19.1.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-dependency
RUN wget https://open-vsx.org/api/redhat/java/1.6.0/file/redhat.java-1.6.0.vsix && \
unzip redhat.java-1.6.0.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/redhat-java
RUN wget https://open-vsx.org/api/vscjava/vscode-maven/0.35.2/file/vscjava.vscode-maven-0.35.2.vsix && \
unzip vscjava.vscode-maven-0.35.2.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-maven
RUN wget https://open-vsx.org/api/vscjava/vscode-java-test/0.35.0/file/vscjava.vscode-java-test-0.35.0.vsix && \
unzip vscjava.vscode-java-test-0.35.0.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-test
확장 프로그램을 사전 설치하면 기본 제공 확장 프로그램으로 간주됩니다.
이러한 확장 프로그램은 업데이트할 수 없으며
Extensions Marketplace의 설치된 섹션에 표시되지 않을 수 있습니다.
하지만 @builtin
을 검색하여 기본 제공 확장 프로그램을 찾을 수 있습니다.
시작 시 확장 프로그램을 설치하는 또 다른 방법은 시작 스크립트를 실행하는 것입니다.
예를 들어 /etc/workstation-startup.d/120_install_extensions.sh
아래에 다음 시작 스크립트를 포함합니다.
/opt/code-oss/bin/codeoss-cloudworkstations --install-extension vscjava.vscode-java-debug@0.40.1 \
--install-extension vscjava.vscode-java-dependency@0.19.1 \
--install-extension redhat.java@1.6.0 \
--install-extension vscjava.vscode-maven@0.35.2 \
--install-extension vscjava.vscode-java-test@0.35.0
이 메서드를 사용하면 확장 프로그램이 Extensions Marketplace의 에 표시되고 여기에서 업데이트할 수 있습니다.
JetBrains IDE 및 플러그인을 기본 이미지에 설치
워크스테이션 구성을 위해 Docker 이미지를 맞춤설정할 때는 JetBrains IDE 및 플러그인(예: IntelliJ용 Cloud Code)을 기본 이미지에 설치할 수 있습니다. JetBrains 제품에 대한 Cloud Workstations 기본 이미지에는 다음과 같은 스크립트가 포함되어 있습니다.
jetbrains-installer.sh
: JetBrains IDE를 설치합니다.plugin-installer.sh
: IntelliJ용 Cloud Code와 같은 플러그인을 설치합니다.
필요에 따라 이러한 스크립트를 사용해서 기본 이미지를 맞춤설정하거나, 시작 스크립트로 호출하거나, 워크스테이션 시작 후에 실행합니다.
설치 프로그램 스크립트
jetbrains-installer.sh
및 plugin-installer.sh
스크립트의 소스 파일을 보려면 JetBrains 사전 정의 이미지 중 하나를 사용하는 워크스테이션 구성을 사용하여 워크스테이션을 시작하고, JetBrains Gateway 또는 SSH를 통해 워크스테이션에 연결한 후 루트 디렉터리에 있는 installer-scripts
디렉터리에서 스크립트 파일을 찾아봅니다.
이러한 스크립트는 컨테이너 빌드 시 실행하는 것이 좋습니다. 이미 시작된 워크스테이션에서는 실행하지 마세요.
플러그인 설치 프로그램 스크립트 사용
plugin-installer.sh
스크립트에는 다음 문법이 사용됩니다.
plugin-installer.sh [-v VERSION] [-d DESTINATION-DIRECTORY] [-c CHECKSUM] [-f] PLUGIN_ID
다음을 바꿉니다.
VERSION
: 설치할 플러그인의 버전 번호(선택사항)입니다.DESTINATION-DIRECTORY
: 플러그인을 설치할 디렉터리(선택사항)입니다. 지정하지 않으면 작업 디렉터리가 사용됩니다.CHECKSUM
: 요청된 플러그인의 SHA-256 체크섬(선택사항)입니다.-f
: 지정된 경우 기존 플러그인을 덮어씁니다.PLUGIN_ID
: JetBrains 마켓플레이스에서 가져온 필요한 숫자 플러그인 식별자입니다. 예를 들어 Dart를 추가하려면 PLUGIN_ID로6351
을 사용합니다. IntelliJ용 Cloud Code를 추가하려면8079
를 PLUGIN_ID로 사용합니다.
예를 들어 IntelliJ에서 Dart 플러그인의 최신 버전을 설치하려면 다음 명령어를 실행합니다.
plugin-installer.sh -d /opt/ideaIU/plugins/ 6351
JetBrains 설치 프로그램 스크립트 사용
JetBrains IDE용으로사전 구성된 기본 이미지 확장하는 경우 JetBrains 설치 프로그램 스크립트를 사용하는 것이 좋습니다.
jetbrains-installer.sh
스크립트에는 다음 문법이 사용됩니다.
jetbrains-installer.sh IDE [ pinned|latest ]
다음을 바꿉니다.
IDE
: 설치할 JetBrains IDE입니다. 다음 IDE 약어 중 하나를 사용해야 합니다.IDE 설치된 제품 cl
CLion clion
CLion go
GoLand goland
GoLand iiu
Intellij Ultimate intellij
Intellij Ultimate pcp
PyCharm Professional pycharm
PyCharm Professional ps
PHPStorm phpstorm
PHPStorm rd
Rider rider
Rider rm
RubyMine rubymine
RubyMine ws
WebStorm webstorm
WebStorm pinned|latest
: 선택사항 - 고정된 버전 또는 최신 버전의 IDE를 사용합니다. 기본값은latest
입니다.
예를 들어 최신 버전의 CLion을 설치하려면 다음 명령어를 실행합니다.
jetbrains-installer.sh clion
JetBrains IDE 구성 파일 맞춤설정
영구적인 홈 디렉터리가 워크스테이션 구성에 지정된 경우 JetBrains IDE가 있는 Cloud Workstations 기본 이미지가 $IDE.vmoptions
및 $IDE.properties
구성 파일을 자동으로 유지합니다. 이러한 파일의 기본 위치를 재정의하려면 CLOUD_WORKSTATIONS_JETBRAINS_PERISTED_CONFIG_DIR
환경 변수를 지정합니다.
자세한 내용은 Cloud Workstations가 기본적으로 이를 설정하는 방법을 알아보려면 모든 JetBrains 기본 이미지의 /etc/workstation-startup.d/120_persist-jetbrains-configs.sh
를 참조하세요.
IntelliJ용 Cloud Code를 사용하여 기본 Docker 이미지 확장
다음 Dockerfile 스니펫은 8079
를 필요한 플러그인 식별자로 포함하여 IntelliJ용 Cloud Code를 사용해서 기본 Docker 이미지를 확장합니다.
또한 이 예시는 선택적으로 version 22.9.3-222
를 버전 번호로 지정하고, /opt/ideaIU/plugins/
를 대상 디렉터리로 지정하고, 89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379
를 체크섬으로 지정합니다.
...
# Install IDE and Plugins
RUN bash /installer-scripts/jetbrains-installer.sh intellij pinned && \
# Install Cloud Code - https://plugins.jetbrains.com/plugin/8079-cloud-code
bash /installer-scripts/plugin-installer.sh \
-v 22.9.3-222 \
-d /opt/ideaIU/plugins/ \
-c 89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379 \
8079
# Register IDE with JetBrains Gateway
RUN echo 'runuser user -c "/opt/ideaIU/bin/remote-dev-server.sh registerBackendLocationForGateway"' > /etc/workstation-startup.d/110_register-intellij-with-gateway.sh \
echo 'echo "IntelliJ-Ultimate ready for incoming gateway connection"' >> /etc/workstation-startup.d/110_register-intellij-with-gateway.sh
...
Code OSS for Cloud Workstations에 추가 IDE 확장 프로그램 설치
VSX 레지스트리 열기에서 추가 IDE 확장 프로그램을 찾습니다.
또한 모든 확장의 다운로드 링크에서 URL을 복사하여 .vsix
파일의 URL을 찾을 수 있습니다.
워크스테이션에서 Extensions Marketplace를 열면 다운로드 대신 설치가 표시됩니다.
Code OSS for Cloud Workstations 기본 설정
Code OSS for Cloud Workstations에서 설정 스토리지에 대한 자세한 내용은 설정 맞춤설정을 참조하세요.
워크스테이션 구성에 영구 홈 디렉터리를 지정하는 경우 $HOME/.codeoss-cloudworkstations/data/Machine/settings.json
에 설정을 작성하는 시작 스크립트를 추가하여 Code OSS for Cloud Workstations 기본 설정을 구성할 수 있습니다.
예를 들어 기본 색상 테마를 어둡게 설정하려면 기본 편집기 이미지를 확장하여 /etc/workstation-startup.d/150_default-ide-color-theme.sh
아래에 다음 스크립트를 포함시킵니다.
cat <<< $(jq '. += {"workbench.colorTheme": "Default Dark Modern"}' settings.json) > settings.json
커스텀 컨테이너 이미지 빌드
Docker 명령어에 대한 자세한 내용은 Docker 참조를 확인하세요. 다음 명령어를 입력하여 컨테이너를 빌드합니다.
docker build CUSTOM_IMAGE_FOLDER -t TARGET_IMAGE
edit 수정 아이콘 앞에 있는 텍스트를 바꾸면 이 페이지의 다른 예시가 업데이트됩니다.
다음을 바꿉니다.
CUSTOM_IMAGE_FOLDER
: 커스텀 이미지를 저장하기 위해 만든 폴더의 경로입니다.TARGET_IMAGE
: Artifact Registry(또는 Container Registry)의 이미지 경로입니다.예를 들어
TARGET_IMAGE
는 다음 경로 중 하나와 비슷하게 대상 이미지 경로를 가리킬 수 있습니다.*.pkg.dev/cloud-workstations-external/customimage:latest *.gcr.io/cloud-workstations-external/customimage:latest
필요에 따라 *를 리전 및 추가 식별자 이름으로 바꿉니다.
저장소를 가리키도록 CLOUD_WORKSTATIONS_CUSTOM_IMAGE
환경 변수를 업데이트할 수도 있습니다.
Artifact Registry에 Docker 이미지를 저장하는 방법은 다음 섹션을 참조하세요.
- Artifact Registry로 Docker 저장소 만들기 방법
- 저장소 및 이미지 이름의 이름 지정 규칙
커스텀 컨테이너 이미지 호스팅
커스텀 컨테이너 이미지를 호스팅하려면 Artifact Registry를 사용하는 것이 좋습니다. GitHub 또는 다른 공개 또는 비공개 저장소를 사용하는 경우 Cloud Workstations가 예상대로 작동하지 않을 수 있습니다. 자세한 내용은 커스텀 컨테이너 이미지 사용 섹션의 중요 사항을 참조하세요.
커스텀 컨테이너 이미지 테스트
컨테이너 빌드가 완료된 후 다음 명령어를 사용해서 테스트할 수 있습니다.
docker run --privileged -p LOCAL_PORT:CONTAINER_PORT TARGET_IMAGE
다음을 바꿉니다.
LOCAL_PORT
: 로컬 포트 번호CONTAINER_PORT
: 컨테이너 포트 번호
예를 들어 LOCAL_PORT
:CONTAINER_PORT
를 8080
:80
으로 바꾸면 로컬 사용을 위해 포트 8080
이 할당되고 컨테이너 사용을 위해 포트 80
이 할당됩니다.
Cloud Workstations 기본 편집기 이미지를 확장하는 경우 docker
명령어를 실행한 후 로컬 브라우저를 통해 워크스테이션에 연결하거나 컨테이너 연결을 위해 ssh
를 실행하여 워크스테이션 이미지를 테스트합니다.
- 브라우저를 통해 연결하는 경우
-p 8080:80
을docker run
명령어에 전달한 후localhost:8080
을 열어야 합니다. - SSH를 통한 연결을 선호할 경우
-p 2222:22
를docker run
명령어에 전달한 후ssh user@localhost -p 2222
를 실행합니다.
커스텀 컨테이너 이미지 사용
로컬 빌드 및 테스트를 완료한 후 커스텀 컨테이너 이미지를 사용하려면 다음 명령어를 사용해서 컨테이너를 Artifact Registry(또는 Container Registry)로 내보냅니다.
docker push TARGET_IMAGE
이제 바로 전에 만들고 내보낸 컨테이너 이미지를 사용해서 워크스테이션 구성을 만들 수 있습니다.
자세한 내용은 Artifact Registry로 Docker 저장소 만들기를 참조하세요.
문제 디버그
컨테이너 이미지 실행 중 문제를 찾아서 디버그하려면 실행 중인 워크스테이션에서 컨테이너 출력 로그를 검토합니다.
권장사항: 이미지 파이프라인 보호
커스텀 이미지에 추가된 커스텀 패키지 및 종속 항목을 사용자가 유지 보수하고 업데이트해야 합니다.
커스텀 이미지를 만들 때 권장사항은 다음과 같습니다.
Cloud Workstations 기본 이미지가 업데이트될 때 이러한 이미지를 자동으로 다시 빌드하여 이미지 파이프라인을 보호할 수 있습니다.
Artifact Analysis와 같은 컨테이너 스캔 도구를 실행해서 추가한 종속 항목을 검사합니다.
이미지를 매주 다시 빌드하도록 빌드를 예약하거나 컨테이너 이미지 다시 빌드 자동화 방법을 확인합니다.
다음 단계
- Cloud Build 및 Cloud Scheduler를 사용해서 기본 이미지 업데이트를 동기화하도록 컨테이너 이미지 다시 빌드를 자동화
- 보안 권장사항 설정
- Artifact Analysis 자세히 알아보기