あとがきのようなもの

インフラ関連,コンテナ,仮想化技術、過去に書いた記事の解説など

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

この記事は2020/7/14にQiitaに投稿した記事の転載です。(更新は2020/12/25、時点)

qiita.com


この記事について

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でリモートサーバー上のコンテナーの開発を行う方法


サマリ

  • 完全に動作するのはFedoraのみ(ローカル接続のみ確認。リモート先は未実施。)
  • CentOS8はpodmanのバージョンが古いのでNG
  • macOSpodman-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
      Fedora32 demo01
      Fedora32 demo01
  • 動作確認:Git cloneしたvscode-remote-try-python (下記、課題[1]の修正実施)

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

    • 結果:NG
      Fedora32 demo03
      Fedora32 demo03

課題

    "remoteUser": "vscode",
    "containerEnv": {
        "HOME": ""
    }

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
      CentOS8 demo01
      CentOS8 demo01
  • 動作確認「Try a Sample」

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

    • 結果:NG
      CentOS8 demo03
      CentOS8 demo03

課題

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

macOS

バージョン情報

$ 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 Pathpodman指定

動作結果

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

    • 結果:NG
      • 下記のエラーが発生
        Docker version require
        Docker version require
  • 動作確認「Try a Sample」

    • 結果:NG
      • 下記のエラーが発生
      • コマンドでpodman build -f...と同じコードを実行しても同じエラー
[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
      • 全て下記のエラーが発生

Docker version require
Docker version require

課題

Windows

バージョン情報

動作結果

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

課題

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