この記事について
VScode + Remote-ContainersでDockerの代わりにPodmanを使うために調査中の内容です。
Remote-ContainersおよびPodmanの開発が現在進行形なので、現時点で動作可能な環境を記載しています。
最新の情報は下記になります(2020/12/25 時点)。
VS Code + Remote Development + Podmanでコンテナの中で開発を行う
VS Code Conference Japanで発表した資料も合わせて参考にしてください。
Remote Development with Podman
関連記事:
VS CodeのRemote-Containersでリモートサーバー上のコンテナーの開発を行う方法
#【注意!】情報は随時更新されます。記事の内容は 2020/9/11 時点。
サマリ
- 完全に動作するのはFedoraのみ(ローカル接続のみ確認。リモート先は未実施。)
- CentOS8はpodmanのバージョンが古いのでNG
- macOSで
podman-remote
自体は使えるが、Remote-ContainersのバグでDockerのチェックが回避できない - Windowsはpodman-remoteの接続設定が未完了のため、VScodeのテストは未実施
各OS組み合わせ
Fedora 32
バージョン情報
- Kernel: 5.7.8-200.fc32.x86_64
- Podman: 2.0.2
- VScode: 1.47.0(1.48.0-insider)
- Remote-Containers: 0.124.0
-
Docker Path
にpodman
指定
-
- Dockerは未インストール
動作結果
-
動作確認:「Add Development Container Configuration Files」で追加した素の
devcontainer.json
-
動作確認:Git cloneしたvscode-remote-try-python
(下記、課題[1]の修正実施) -
動作確認:「Try a Sample」
課題
- [1]
Start: Run docker exec
でThe client has reconnected.
が繰り返され、shellが起動しない- https://github.com/microsoft/vscode-remote-release/issues/3231
-
devcontainer.json
のremoteUser
を下記のように修正
"remoteUser": "vscode",
"containerEnv": {
"HOME": ""
}
- [2]Remote-Containersのバージョンを0.124.0を指定する
- [3]Try sampleのopenでエラー
- [4]SElinuxを無効化しないとコンテナ内でファイル操作ができない
CentOS8
バージョン情報
- Kernel: 4.1.8-193.el8.x86_64
- Podman: 1.6.4
- VScode: 1.47.0
- Remote-Containers: 0.124.0
-
Docker Path
にpodman
指定
-
- Dockerは未インストール
動作結果
-
動作確認:「Add Development Container Configuration Files」で追加した素の
devcontainer.json
-
動作確認「Try a Sample」
-
動作確認:「Try a sample」以外
課題
- Fedoraで動作実績のあるpodmanのバージョンまで上げられれば動作の可能性はあるが、現時点では1.6.4以上のパッケージがない
macOS
バージョン情報
- macOS Catalina:10.15.6
-
Podman-remote: 1.9.3→Podman-remote: 2.0.6- https://github.com/boot2podman/libpod/releases/
- インストール方法は下記
- podman-remoteで
Fedora 32に接続→ Fedora CoreOS 32.20200907.2.0- コマンド上はpodmanコマンドの実行は可能
- Podman-remote: 2.0.6
- https://github.com/containers/podman/releases/tag/v2.0.6
- インストール方法
-
https://github.com/containers/podman/blob/master/docs/tutorials/mac_win_client.md
- 下記が抜けている
$ systemctl --user start podman.socket
- 下記が抜けている
-
https://github.com/containers/podman/blob/master/docs/tutorials/mac_win_client.md
- Dockerは未インストール
$ podman version
Command "varlink" is deprecated, Please see 'podman system service' for RESTful APIs
Client:
Version: 1.9.3
RemoteAPI Version: 1
Go Version: go1.13.8
Git Commit: 5d44534fff6877b1cb15b760242279ae6293154c
Built: Sun Jul 5 03:13:57 2020
OS/Arch: darwin/amd64
Server:
Version: 2.0.2
RemoteAPI Version: 1
Go Version: go1.14.3
OS/Arch: linux/amd64
$ podman version
Client:
Version: 2.0.6
API Version: 1
Go Version: go1.14.6
Git Commit: 27362ba1ad8879ea71610fa68a651a1651e0180f
Built: Wed Sep 2 02:07:04 2020
OS/Arch: darwin/amd64
Server:
Version: 2.0.6
API Version: 0
Go Version: go1.14.6
Built: Wed Sep 2 04:26:51 2020
OS/Arch: linux/amd64
- VScode:
1.47.0 or 1.48.0-Insiders→1.49.0 - Remote-Containers:
0.128.0→ 0.140.1-
Docker Path
にpodman
指定
-
動作結果
- 動作確認:「Add Development Container Configuration Files」で追加した素の
devcontainer.json
- 結果:NG
- 下記のエラーが発生
- 結果:NG
- 動作確認「Try a Sample」
- 結果:NG
- 下記のエラーが発生
コマンドでpodman build -f...
と同じコードを実行しても同じエラー
- 結果:NG
[30 ms] Start: Resolving remote
[44 ms] Start: Check Docker is running
[44 ms] Start: Run: podman info
[357 ms] Start: Run: podman volume ls -q
[591 ms] Start: Run: podman ps -q -a --filter label=vsch.local.repository=https://github.com/Microsoft/vscode-remote-try-python --filter label=vsch.local.repository.volume=vsc-remote-sample --filter label=vsch.local.repository.folder=vscode-remote-try-python --filter label=vsch.quality=stable
[835 ms] Start: Run: podman build -f /Users/shtanaka/.vscode/extensions/ms-vscode-remote.remote-containers-0.120.0/scripts/volumeBootstrap.Dockerfile -t vsc-volume-bootstrap /Users/shtanaka/.vscode/extensions/ms-vscode-remote.remote-containers-0.120.0/scripts
Error: dial unix /run/podman/io.podman: connect: no such file or directory
[1122 ms] Command failed: podman build -f /Users/shtanaka/.vscode/extensions/ms-vscode-remote.remote-containers-0.120.0/scripts/volumeBootstrap.Dockerfile -t vsc-volume-bootstrap /Users/shtanaka/.vscode/extensions/ms-vscode-remote.remote-containers-0.120.0/scripts
[26 ms] Start: Resolving remote
[29 ms] Start: Check Docker is running
[30 ms] Start: Run: podman info
[474 ms] Start: Run: podman volume ls -q
[655 ms] Start: Run: podman volume create --label vsch.local.repository=https://github.com/Microsoft/vscode-remote-try-python --label vsch.local.repository.unique=false vsc-remote-sample
[866 ms] Start: Run: podman ps -q -a --filter label=vsch.local.repository=https://github.com/Microsoft/vscode-remote-try-python --filter label=vsch.local.repository.volume=vsc-remote-sample --filter label=vsch.local.repository.folder=vscode-remote-try-python --filter label=vsch.quality=stable
[1056 ms] Start: Run: podman build -f /Users/shtanaka/.vscode/extensions/ms-vscode-remote.remote-containers-0.140.1/scripts/volumeBootstrap.Dockerfile -t vsc-volume-bootstrap /Users/shtanaka/.vscode/extensions/ms-vscode-remote.remote-containers-0.140.1/scripts
[1261 ms] Cloning Github repository: Microsoft/vscode-remote-try-python into /workspaces/vscode-remote-try-python
[1261 ms] Start: Run: podman run -d --mount type=volume,src=vsc-remote-sample,dst=/workspaces -v /var/run/docker.sock:/var/run/docker.sock vsc-volume-bootstrap sleep infinity
- 動作確認:「Try a sample」以外
- 結果:NG
- 全て下記のエラーが発生
- 結果:NG
課題
- Remote-ContainersのバグでDockerのチェックが回避できない
-
podman-remote
経由でのbuildが実施できない。パスがリモート先のパスになるv2以上のAPI経由になると改善される?
- Podmanコマンド実行時に、
-v /var/run/docker.sock
になるのを変更できれば良さそう?
Windows
バージョン情報
- Podman-remote: 1.8.0
- https://github.com/boot2podman/libpod/releases/
- インストール方法は下記
- podman-remoteでFedora 32に接続
- コマンド上はpodmanコマンドの実行は可能
- Dockerは未インストール
動作結果
- podman-remote.confの読み込みができていないため、VScodeの動作確認は未実施
課題
- podman-remote.confの読み込みがうまくいかず(配置先がmacOSと違う?)
~/.config/containers/podman-remote.conf