Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
実践VSCodeリモートSSH・コンテナ開発機能
Search
74th(Atsushi Morimoto)
January 23, 2020
Technology
2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
実践VSCodeリモートSSH・コンテナ開発機能
VSCode Meetup #2
https://vscode.connpass.com/event/160083/
74th(Atsushi Morimoto)
January 23, 2020
More Decks by 74th(Atsushi Morimoto)
See All by 74th(Atsushi Morimoto)
自作お家AIエージェントスタックチャンFWで困っている所紹介
74th
0
290
GitHub Copilotを使いこなす 実例に学ぶAIコーディング活用術
74th
4
25k
GitHub Copilotの全体像と活用のヒント AI駆動開発の最初の一歩
74th
10
8.6k
書いた同人誌をMCP Server化したら 趣味の組み込み開発が捗った話
74th
1
210
VS Code Update for GitHub Copilot
74th
3
1.1k
技術同人誌をMCP Serverにしてみた
74th
1
1k
AIをプロダクトに実装するならAPIで分離しよう 〜タクシーアプリ『GO』のアーキテクチャ実例紹介〜
74th
3
820
最近のVS Codeで気になるニュース 2025/01
74th
1
430
VS CodeでF1〜12キーつかってますか? / Do you use the F1-12 keys in VS Code?
74th
2
680
Other Decks in Technology
See All in Technology
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
3.3k
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
420
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
340
AWS FinOps Agent 結局何が得意なの?
siromi
0
220
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
270
AIエージェント時代のPlatform as a Product —— テックリードがPdMとして回す発見・導入・計測 / Platform as a Product in the AI Agent Era
toshi0607
1
480
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
520
TiDBファミリーにDWHが新登場!! TiDB最新情報 / TiDB update 202609
yoshiakiyamasaki
0
150
猫でもわかるKiro Web
kentapapa
1
150
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
970
特殊変数大全
dak2
0
160
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
pensuke628
0
110
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Prompt Engineering for Job Search
mfonobong
0
460
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
490
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5k
Scaling GitHub
holman
464
140k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
560
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Navigating Team Friction
lara
192
16k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
710
GitHub's CSS Performance
jonrohan
1033
470k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Transcript
実践 リモートSSH・コンテナ開発機能 Atsushi Morimoto @74th
Atsushi Morimoto @74th Python、Go、Kubernetes、Terraform @ VSCode with RemoteDev 仕事の開発の95%をリモート開発機能を使う(残り5%はAndroid) 様々な言語、環境のデバッグ設定集
https://github.com/74th/vscode-debug-specs
2月20日発売予定 400ページで、ほぼ全機能解説 TypeScript/Go/Pythonでの 実践的な開発実例 拡張機能開発 (コマンド、タスク、テーマ…) LSP解説 → LSPを使った拡張機能開発まで ※表紙は作成中のもので、変わることがあります
Contents 1. リモート開発機能でどう世界が変わったか 2. @74thの環境と、リモートSSH機能デモ 3. リモートSSHの制約 4. WSL 5.
リモートコンテナ機能とは 6. リモートコンテナ機能デモ 7. WSL、リモートSSHでリモートコンテナ機能を使う
近年のよくある開発環境
近年のよくある開発環境
リモート開発機能とは…
リモート開発機能の何が嬉しいか? A: 使い慣れたPC(MacOS、Windows)を使いながら、 Linuxの世界で開発ができる ◦ 最終成果物のLinuxコンテナで動けばOK! ◦ MacOS、Windowsでの環境構築不要! ◦ Linuxの解析ツールがすべて使える(systemtap、strace……)
@74th の環境 Host : MacOS+Parallels Desktop 15 • Apple Hypervisor
Frameworkに対応 • 比較した中で、IO性能が高かった VM: Ubuntu Server 19.10 • Homebrew がLinuxでも使える App: GoのWebアプリ • ~/go/src/github.com/74th/vscode-book-golang • TODO 管理アプリ MacBookPro
リモートSSH機能デモ • SSHログイン ◦ ~/.ssh/config/ ◦ Goの補完が効く様子 • デバッグ実行とポートフォワーディング
リモートSSH機能の制約 • Linuxサーバを構築していること(Windowsサーバは準備中)。 • x86_64 or aarch64 アーキテクチャであること。 • SSHで接続可能であること。~/.ssh/config
に設定があること。 • Linuxサーバ内で、プロジェクトファイルがチェックアウトされていること。 • Linuxサーバに、ビルドに必要なツールのほか、git、curlなども含めて、 開発に必要なソフトウェアがインストールされていること。 • Linuxサーバでリポジトリにアクセスできること。
ARM64 (Raspberry Pi 4) aarrch64(ARM64)に対応 拡張機能やLanguageServerが 対応していない場合もある
ARM64 (Raspberry Pi 4) aarrch64(ARM64)に対応 拡張機能やLanguageServerが 対応していない場合もある
WSL(Windows Subsystem for Linux) • 仮想マシンと異なり、 メモリ、CPU、ストレージの リソースはホストマシンと共有 • WSL
2からdockerも使える • $ code . で起動 • localhost を共有
リモートコンテナ機能での開発
Dockerfile • 本番環境のDockerfileとは別に作る • git、procpsを追加 • 本番環境と開発用のツールを 両方ともインストール • 変更したら
コマンド「Rebuild Container」 <Dockerfileの参考> https://github.com/Microsoft/vscode-remote-try-node try-{python,go,java,dotnetcore,php,rust,cpp} FROM python:3.7 RUN apt-get update && \ apt-get -y install git procps WORKDIR /app ADD ./requirements.txt ./ RUN pip install -r requirements.txt ADD ./dev-requirements.txt ./ RUN pip install -r dev-requirements.txt
.devcontainer/devcontainer.json • Dockerfile .devcontainer/からの相対パス • 拡張機能 • 開放ポート • 変更したら
コマンド「Rebuild Container」 { "name": "Python 3.7", "context": "..", "dockerFile": "Dockerfile", "appPort": [8080], "extensions": [ "ms-python.python" ] }
リモートコンテナ機能デモ • Reopen in Container
WSLのDockerを使いたい 昨日の Docker Desktopの アップデートで対応 ※Experimental
None
SSH先のDockerを使いたい 要するに DockerAPI にアクセスして、リポジトリをマウントする ◦ TCPでDockerにアクセス可能にする /etc/default/docker -> DOCKER_OPT=DOCKER_OPTS="-H 0.0.0.0:9000”
export DOCKER_HOST=tcp://remote:9000 ◦ WSL、SSH先でリポジトリをチェックアウトして、 そのディレクトリをマウントする docker-compose.yamlを作る ◦ docker-composeでコンテナを起動する ◦ コマンド「Attach to Running Container」→ コマンド「Open Folder...」でマウントしたディレクトリを開く • https://qiita.com/74th/items/06b91cf4fecfc61bfbf4
docker-compose.yaml https://qiita.com/74th/items/06b 91cf4fecfc61bfbf4 version: "3" services: python: build: context: .
dockerfile: ./Dockerfile ports: - 8080:8080 user: "1000:1000" # マウント先のユーザ environment: HOME: "/home/nnyn/" # .vscode-serverディレクトリに使われ る command: /bin/sh -c "while sleep 10000; do :; done" # コンテナを起動するだけで何もしない volumes: - /home/nnyn/vscode-book-python:/app # リポジトリマウント - /home/nnyn/.git:/home/nnyn/.git # gitの設定 - /home/nnyn/.netrc:/home/nnyn/.netrc # gitの認証情報 - /home/nnyn/.vscode-container:/home/nnyn/.vscode-server # 拡張機能を共有 SSH先の Dockerを使いたい
リモート開発機能の もう少し詳しい内容は… 技術書典7 BOOTHで販売中 https://74th.booth.pm/items/1575560