Remote-ContainersでPodmanを使う動作検証(随時更新)


この記事について

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 Pathpodman指定
  • Dockerは未インストール

動作結果

  • 動作確認:「Add Development Container Configuration Files」で追加した素のdevcontainer.json

    • 結果:OK
  • 動作確認:Git cloneしたvscode-remote-try-python
    (下記、課題[1]の修正実施)

    • 結果:OK
  • 動作確認:「Try a Sample」

    • 結果:NG

課題

devcontainer.json
    "remoteUser": "vscode",
    "containerEnv": {
        "HOME": ""
    }
  • [2]Remote-Containersのバージョンを0.124.0を指定する

    • 0.125~0.128では下記のエラーが発生
    • 0.113〜0.118はコンテナエクスプローラーが機能せず
    • 事実上、0.119〜0.124の間でしか機能しない
  • [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 Pathpodman指定
  • Dockerは未インストール

動作結果

  • 動作確認:「Add Development Container Configuration Files」で追加した素のdevcontainer.json

    • 結果:NG
  • 動作確認「Try a Sample」

    • 結果:NG
  • 動作確認:「Try a sample」以外

    • 結果:NG

課題

  • Fedoraで動作実績のあるpodmanのバージョンまで上げられれば動作の可能性はあるが、現時点では1.6.4以上のパッケージがない

macOS

バージョン情報

Podman-remote_1.9.3
$ 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-remote_2.0.6
$ 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 Pathpodman指定

動作結果

  • 動作確認:「Add Development Container Configuration Files」で追加した素のdevcontainer.json
    • 結果:NG
      • 下記のエラーが発生

  • 動作確認「Try a Sample」
    • 結果:NG
      • 下記のエラーが発生
      • コマンドでpodman build -f...と同じコードを実行しても同じエラー
Podman-remote_1.9.3
[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
Podman-remote_2.0.6
[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
      • 全て下記のエラーが発生

課題

Windows

バージョン情報

動作結果

  • podman-remote.confの読み込みができていないため、VScodeの動作確認は未実施

課題

  • podman-remote.confの読み込みがうまくいかず(配置先がmacOSと違う?)
    • ~/.config/containers/podman-remote.conf