5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

プロキシ(認証あり)の配下でWin10+PodmanDesktopを構築する

Last updated at Posted at 2023-06-21

はじめに

いろいろなツールを試してみたいと思って探してみるとContainerとして提供されているケースが多くなっていることに気づいた
そこで自分の端末にPodman環境を構築することにしたが、プロキシの配下で構築するといろいろな壁にぶつかったのでその作業ログを記録する

端末のスペック

  • OS: Windows 10 Pro 22H2
  • RAM: 8.0GB
  • SSD: 256GB

Podman Desktopのインストール

インストーラーのダウンロード

公式サイトにアクセスして、Download Nowボタンをクリックする
image.png

Windows用のサイトが表示されたら、Download Nowをクリックしてインストーラのexeファイルを保存する
image.png

インストーラーの実行

ダウンロードしたexeファイルを実行する
なんかアザラシがロケットに乗っている
image.png

インストールが完了すると以下の画面が表示される
右下のGo to Podman DesktopをクリックするとPodman Desktopを起動できる
image.png

Podman Desktopの実行

利用している端末にPodmanの環境がある場合はPodman is runningと表示される
Podmanの環境がない場合はPodman Desktop was not able to find an installation of Podmanと表示されるので、右側のInstallボタンをクリックする
image.png

Virtual Machine Platform Enabledxになった
image.png

Windows PowerShell(管理者)を起動して以下コマンドを実行して、仮想マシンプラットフォームオプション機能を有効にする

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

image.png

実行後に端末を再起動する

再度右側のInstallボタンをクリックする
image.png

今度はWSL2 Installedxになった

Windows PowerShell(管理者)を起動して以下コマンドを実行する

wsl --install

image.png

何かが失敗しているようだが実行後に端末を再起動する
(おそらくプロキシの設定をしていないことが原因)

再度右側のInstallボタンをクリックする
image.png

ようやくPodmanをインストールするかを問われるのでYesをクリックする
image.png

一応Install WSL if not presentはチェックをいれたままInstallをクリックする
image.png

インストール完了したのでCloseをクリックする
image.png

Podman vX.X.X is installed but not readyの表示に変わった
image.png

Windows PowerShell(管理者)を起動して以下コマンドを実行してpodmanがインストールされていることを確認する

PS C:\WINDOWS\system32> podman --help
Manage pods, containers and images

Usage:
  podman.exe [options] [command]

Available Commands:
  attach      Attach to a running container
  build       Build an image using instructions from Containerfiles
  commit      Create new image based on the changed container
  container   Manage containers
  cp          Copy files/folders between a container and the local filesystem
  create      Create but do not start a container
  diff        Display the changes to the object's file system
  events      Show podman system events
  exec        Run a process in a running container
  export      Export container's filesystem contents as a tar archive
  generate    Generate structured data based on containers, pods or volumes
  healthcheck Manage health checks on containers
  help        Help about any command
  history     Show history of a specified image
  image       Manage images
  images      List images in local storage
  import      Import a tarball to create a filesystem image
  info        Display podman system information
  init        Initialize one or more containers
  inspect     Display the configuration of object denoted by ID
  kill        Kill one or more running containers with a specific signal
  kube        Play containers, pods or volumes from a structured file
  load        Load image(s) from a tar archive
  login       Login to a container registry
  logout      Logout of a container registry
  logs        Fetch the logs of one or more containers
  machine     Manage a virtual machine
  manifest    Manipulate manifest lists and image indexes
  network     Manage networks
  pause       Pause all the processes in one or more containers
  pod         Manage pods
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image from a registry
  push        Push an image to a specified destination
  rename      Rename an existing container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Removes one or more images from local storage
  run         Run a command in a new container
  save        Save image(s) to an archive
  search      Search registry for image
  secret      Manage secrets
  start       Start one or more containers
  stats       Display a live stream of container resource usage statistics
  stop        Stop one or more containers
  system      Manage podman
  tag         Add an additional name to a local image
  top         Display the running processes of a container
  unpause     Unpause the processes in one or more containers
  untag       Remove a name from a local image
  update      update an existing container
  version     Display the Podman version information
  volume      Manage volumes
  wait        Block on one or more containers

Options:
  -c, --connection string         Connection to use for remote Podman service
      --help                      Help for podman
      --identity string           path to SSH identity file, (CONTAINER_SSHKEY)
      --log-level string          Log messages above specified level (trace, debug, info, warn, warning, error, fatal, panic) (default "warn")
      --noout                     do not output to stdout
      --ssh string                define the ssh mode (default "golang")
      --storage-opt stringArray   Used to pass an option to the storage driver
      --url string                URL to access Podman service (CONTAINER_HOST) (default "unix:/run/podman/podman.sock")
  -v, --version                   version for podman.exe
PS C:\WINDOWS\system32>

以下コマンドにてプロキシサーバの設定を行う

PS C:\WINDOWS\system32> $env:http_proxy="http://ユーザ名:パスワード@プロキシホスト名:プロキシポート番号"
PS C:\WINDOWS\system32> $env:https_proxy="http://ユーザ名:パスワード@プロキシホスト名:プロキシポート番号"

変数の確認は以下のコマンド

PS C:\WINDOWS\system32> get-childitem env:

以下コマンドでWSLにpodmanマシンを追加する

PS C:\WINDOWS\system32> podman machine init
Downloading VM image: fedora-podman-amd64-v37.0.36.tar.xz: done
Extracting compressed file
Importing operating system into WSL (this may take a few minutes on a new WSL install)...
インポート中です。この処理には数分かかることがあります。
この操作を正しく終了しました。
Configuring system...
Generating public/private ed25519 key pair.
Your identification has been saved in podman-machine-default
Your public key has been saved in podman-machine-default.pub
...
Machine init complete
To start your machine run:

        podman machine start

PS C:\WINDOWS\system32>

以下コマンドにてpodman-machine-defaultがデフォルトとなっていることを確認する

PS C:\WINDOWS\system32> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
podman-machine-default (既定)
PS C:\WINDOWS\system32>

Initialize and startをボタンをクリックする
image.png

Windows Defenderファイアウォールで通信を許可を求めるポップアップが表示される
ドメインネットワークにチェックを入れたままアクセスを許可するをクリックする
image.png

Podman is runningとなった
image.png

Podman Desktopにプロキシサーバの設定が入っていないためインターネットにアクセスできない
以下でPodman Desktopの左下の歯車マーク(Settings) -> ProxyにてProxyの設定をを行う
認証が必要な場合はhttp://ユーザー:パスワード@ホスト:ポートという形式で入れる
image.png

このままだとプロキシサーバのホスト名が解決できないというエラーが発生するためネームサーバーの設定を入れてあげる必要がある
Windows PowerShell(管理者)にてWSLでpodman-machine-defaultを起動する

PS C:\WINDOWS\system32> wsl -d podman-machine-default

You will be automatically entered into a nested process namespace where
systemd is running. If you need to access the parent namespace, hit ctrl-d
or type exit. This also means to log out you need to exit twice.

[user@hostname ~]$

まずはresolv.confが上書きされないようにwsl.confを編集する
これを行わないとpodman-machineを起動するたびに新たにresolv.confが生成されてしまう

[user@hostname ~]$ sudo vi /etc/wsl.conf

[network] generateResolvConf = falseを追加

/etc/wsl.conf
[user]
default=user

[network]
generateResolvConf = false

WSLを再起動する

[user@hostname ~]$ exit
logout
[user@hostname system32]$ exit
logout
PS C:\WINDOWS\system32> wsl -t podman-machnine-default

Windows PowerShell(管理者)にてWSLでpodman-machine-defaultを起動する

PS C:\WINDOWS\system32> wsl -d podman-machine-default

You will be automatically entered into a nested process namespace where
systemd is running. If you need to access the parent namespace, hit ctrl-d
or type exit. This also means to log out you need to exit twice.

[user@hostname ~]$

/etc/resolv.confがシンボリックリンクとなっているため、シンボリックリンクを解除した上で新規作成する

[user@hostname ~]$ sudo unlink /etc/resolv.conf
[user@hostname ~]$ sudo vi /etc/resolv.conf

nameserverをプロキシサーバのホスト名解決ができるDNSサーバのIPアドレスに修正する

/etc/resolv.conf
nameserver DNSサーバのIPアドレス

一度WSLから出て再度入りなおしても編集したresolv.confが残っていることを確認しておく

[user@hostname ~]$ exit
logout
[user@hostname system32]$ exit
logout
PS C:\WINDOWS\system32> wsl -t podman-machine-default
PS C:\WINDOWS\system32> wsl -d podman-machine-default

You will be automatically entered into a nested process namespace where
systemd is running. If you need to access the parent namespace, hit ctrl-d
or type exit. This also means to log out you need to exit twice.

[user@hostname ~]$ cat /etc/resolv.conf
nameserver DNSサーバのIPアドレス
[user@hostname ~]$

最後にpodmanのサーバーを再起動してからプロキシサーバ越しにイメージをとってきて実行できるか確認する
dockerをpodmanに読み替えるだけで使える

[user@hostname ~]$ exit
logout
[user@hostname system32]$ exit
logout
PS C:\WINDOWS\system32> podman machine stop
Machine "podman-machine-default" stopped successfully
PS C:\WINDOWS\system32> podman machine start
Starting machine "podman-machine-default"

This machine is currently configured in rootless mode. If your containers
require root permissions (e.g. ports < 1024), or if you run into compatibility
issues with non-podman clients, you can switch using the following command:

        podman machine set --rootful

API forwarding listening on: npipe:////./pipe/docker_engine

Docker API clients default to this address. You do not need to set DOCKER_HOST.
Machine "podman-machine-default" started successfully
PS C:\WINDOWS\system32> podman run --rm hello-world
Resolved "hello-world" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull quay.io/podman/hello:latest...
Getting image source signatures
Copying blob sha256:bc17375ed66b6e5ecaaa7036adab6c0109df47046a65bfba0513c47950a2ef76
Copying config sha256:2b5e8bd0edeb80b3fa42ff2fa872ab00bc8f41802185434e5967ee8d44cf5705
Writing manifest to image destination
Storing signatures
!... Hello Podman World ...!

         .--"--.
       / -     - \
      / (O)   (O) \
   ~~~| -=(,Y,)=- |
    .---. /`  \   |~~
 ~/  o  o \~~~~.----. ~~
  | =(X)= |~  / (O (O) \
   ~~~~~~~  ~| =(Y_)=-  |
  ~~~~    ~~~|   U      |~~

Project:   https://github.com/containers/podman
Website:   https://podman.io
Documents: https://docs.podman.io
Twitter:   @Podman_io
PS C:\WINDOWS\system32>

podman-composeのインストール(dnf, podmanのプロキシサーバ設定込み)

podman-composeも使うのでインストールしておく
デフォルトでは入っていないのでpodman-machine-defaultdnfコマンドでインストールしておく必要がある
まずdnfのプロキシサーバ設定を追加する

PS C:\WINDOWS\system32> wsl -d podman-machine-default

You will be automatically entered into a nested process namespace where
systemd is running. If you need to access the parent namespace, hit ctrl-d
or type exit. This also means to log out you need to exit twice.

[user@hostname ~]$ sudo vi /etc/dnf/dnf.conf
...
proxy=http://ユーザー:パスワード@ホスト:ポート

修正後のdnf.confを確認する

[user@hostname ~]$ cat /etc/dnf/dnf.conf
# see `man dnf.conf` for defaults and possible options

[main]
gpgcheck=True
installonly_limit=3
clean_requirements_on_remove=True
best=False
skip_if_unavailable=True
tsflags=nodocs
proxy=http://ユーザー:パスワード@ホスト:ポート
[user@hostname ~]$

dnfコマンドでpodman-composeをインストールする

[user@hostname ~]$ sudo dnf install podman-compose
Fedora 37 - x86_64                                                                        8.3 MB/s |  82 MB     00:09
Fedora 37 openh264 (From Cisco) - x86_64                                                  898  B/s | 2.5 kB     00:02
Fedora Modular 37 - x86_64                                                                3.3 MB/s | 3.8 MB     00:01
Fedora 37 - x86_64 - Updates                                                              7.8 MB/s |  36 MB     00:04
Fedora Modular 37 - x86_64 - Updates                                                      1.4 MB/s | 2.9 MB     00:02
Dependencies resolved.
==========================================================================================================================
 Package                            Architecture           Version                          Repository               Size
==========================================================================================================================
Installing:
 podman-compose                     noarch                 1.0.6-1.fc37                     updates                 116 k
Installing dependencies:
 dbus-libs                          x86_64                 1:1.14.6-1.fc37                  updates                 155 k
 dnsmasq                            x86_64                 2.89-2.fc37                      updates                 354 k
 podman-plugins                     x86_64                 5:4.5.0-1.fc37                   updates                 1.2 M
 python3-click                      noarch                 8.1.3-1.fc37                     fedora                  239 k
 python3-dotenv                     noarch                 0.19.2-4.fc37                    fedora                   50 k
 python3-pyyaml                     x86_64                 6.0-5.fc37                       fedora                  224 k
Installing weak dependencies:
 python3-dotenv+cli                 noarch                 0.19.2-4.fc37                    fedora                  9.6 k

Transaction Summary
==========================================================================================================================
Install  8 Packages

Total download size: 2.3 M
Installed size: 6.7 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): python3-dotenv+cli-0.19.2-4.fc37.noarch.rpm                                         51 kB/s | 9.6 kB     00:00
(2/8): python3-dotenv-0.19.2-4.fc37.noarch.rpm                                            261 kB/s |  50 kB     00:00
(3/8): python3-click-8.1.3-1.fc37.noarch.rpm                                              965 kB/s | 239 kB     00:00
(4/8): python3-pyyaml-6.0-5.fc37.x86_64.rpm                                               2.1 MB/s | 224 kB     00:00
(5/8): dbus-libs-1.14.6-1.fc37.x86_64.rpm                                                 978 kB/s | 155 kB     00:00
(6/8): dnsmasq-2.89-2.fc37.x86_64.rpm                                                     1.9 MB/s | 354 kB     00:00
(7/8): podman-compose-1.0.6-1.fc37.noarch.rpm                                             594 kB/s | 116 kB     00:00
(8/8): podman-plugins-4.5.0-1.fc37.x86_64.rpm                                             5.3 MB/s | 1.2 MB     00:00
--------------------------------------------------------------------------------------------------------------------------
Total                                                                                     1.9 MB/s | 2.3 MB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                  1/1
  Installing       : dbus-libs-1:1.14.6-1.fc37.x86_64                                                                 1/8
  Running scriptlet: dnsmasq-2.89-2.fc37.x86_64                                                                       2/8
  Installing       : dnsmasq-2.89-2.fc37.x86_64                                                                       2/8
  Running scriptlet: dnsmasq-2.89-2.fc37.x86_64                                                                       2/8
  Installing       : podman-plugins-5:4.5.0-1.fc37.x86_64                                                             3/8
  Installing       : python3-pyyaml-6.0-5.fc37.x86_64                                                                 4/8
  Installing       : python3-click-8.1.3-1.fc37.noarch                                                                5/8
  Installing       : python3-dotenv-0.19.2-4.fc37.noarch                                                              6/8
  Installing       : python3-dotenv+cli-0.19.2-4.fc37.noarch                                                          7/8
  Installing       : podman-compose-1.0.6-1.fc37.noarch                                                               8/8
  Running scriptlet: podman-compose-1.0.6-1.fc37.noarch                                                               8/8
  Verifying        : python3-click-8.1.3-1.fc37.noarch                                                                1/8
  Verifying        : python3-dotenv+cli-0.19.2-4.fc37.noarch                                                          2/8
  Verifying        : python3-dotenv-0.19.2-4.fc37.noarch                                                              3/8
  Verifying        : python3-pyyaml-6.0-5.fc37.x86_64                                                                 4/8
  Verifying        : dbus-libs-1:1.14.6-1.fc37.x86_64                                                                 5/8
  Verifying        : dnsmasq-2.89-2.fc37.x86_64                                                                       6/8
  Verifying        : podman-compose-1.0.6-1.fc37.noarch                                                               7/8
  Verifying        : podman-plugins-5:4.5.0-1.fc37.x86_64                                                             8/8

Installed:
  dbus-libs-1:1.14.6-1.fc37.x86_64           dnsmasq-2.89-2.fc37.x86_64           podman-compose-1.0.6-1.fc37.noarch
  podman-plugins-5:4.5.0-1.fc37.x86_64       python3-click-8.1.3-1.fc37.noarch    python3-dotenv-0.19.2-4.fc37.noarch
  python3-dotenv+cli-0.19.2-4.fc37.noarch    python3-pyyaml-6.0-5.fc37.x86_64

Complete!
[user@hostname ~]$

とりあえずWindows10上でPodmanが利用できる環境構築までが完了した
以降は早速Containerを起動していく

参考ページ

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?