【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

Dockerの代わりにrootlessで使えるPodmanを触ってみる

こんにちは
家の野菜室はバージョニング無効
システムソリューション部のかわいです。

最近また寒いですね。
今回は Podman について、入門者向けに記事にしたいと思います。

1
2
3
4
5
6
7
8
9
        .--"--.          
      / -     - \        
     / (O)   (O) \       
  ~~~| -=(,Y,)=- |        
   .---. /`  \   |~~     
~/  o  o \~~~~.----. ~~  
 | =(X)= |~  / (O (O) \  
  ~~~~~~~  ~| =(Y_)=-  |  
 ~~~~    ~~~|   U      |~~

Podmanって?

Pod Managerの略。
Red Hat社製のOSSコンテナツールです。Dockerと互換性があり、使い方はほぼ同じです。詳しくは以下公式ドキュメントを参照。
https://www.redhat.com/ja/topics/containers/what-is-podman

え?じゃあDockerで良くない?って思ったかもしれませんが、
Podmanはデフォルトでrootless(root権限なし)で使えるのでセキュアな点に優位性があります。
(※Dockerでも可能だが、追加設定が必要)

なぜrootlessが安全なのかというと、
Dockerはrootが起動したデーモンとして動き、ホストマシンからREST API経由で通信を行います。
その際ドメインソケットを使用するため そこでroot権限が必要になる→コンテナからホストへの攻撃が可能になる、という理屈です。

では早速使ってみましょう。

インストール

■環境

1
Ubuntu 24.04 LTS

インストール自体は簡単。
※docker-composeを使う方は同等の「podman-compose」を一緒に入れても良いです。

1
2
3
4
5
$ sudo apt update
$ sudo apt install podman
 
$ podman --version
podman version 4.9.3

rootlessモードの確認(trueになっていればok)

1
2
$ podman info | grep rootless
    rootless: true

イメージのpull

インストールが済んだので、一般ユーザのまま試しにApacheイメージを引っ張ってきます。

1
2
3
4
5
6
7
8
9
10
11
12
$ podman pull docker.io/library/httpd
Trying to pull docker.io/library/httpd:latest...
Getting image source signatures
Copying blob 79b49624e34b done   |
Copying blob d7ad38c6dd97 done   |
Copying blob 4f4fb700ef54 done   |
Copying blob 9bd25d4f7b77 done   |
Copying blob 7d9f97915db2 done   |
Copying blob bc0965b23a04 done   |
Copying config 494b2b45fd done   |
Writing manifest to image destination
494b2b45fd74cbf7eb7dc9cfeda02b26c9450e26719afaf1914635832217c4ce

完了したので起動します。
今回はTCP/8888を使用します。

1
2
3
4
5
6
7
$ podman run -dt -p 8888:80/tcp docker.io/library/httpd
6e5578b6ab93e131593325aa61c8b78487d6d602a74c78b714aa8b089ac12d0f
 
# 起動状態の確認
$ podman ps
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS        PORTS                 NAMES
6e5578b6ab93  docker.io/library/httpd:latest  httpd-foreground  5 seconds ago  Up 5 seconds  0.0.0.0:8888->80/tcp  quizzical_tharp

起動してきたので早速アクセスしてみます。
「It works!」と表示されればok

1
2
$ curl http://127.0.0.1:8888
<html><body><h1>It works!</h1></body></html>

ブラウザでも表示されました。

Dockerと同じように、ログとプロセス状態の確認も可能です。

1
2
3
4
5
6
7
8
9
10
11
12
13
$ podman logs -l
[Thu Dec 12 02:48:15.892285 2024] [mpm_event:notice] [pid 1:tid 1] AH00489: Apache/2.4.62 (Unix) configured -- resuming normal operations
[Thu Dec 12 02:48:15.893410 2024] [core:notice] [pid 1:tid 1] AH00094: Command line: 'httpd -D FOREGROUND'
10.0.2.100 - - [12/Dec/2024:02:48:57 +0000] "GET / HTTP/1.1" 200 45
10.0.2.100 - - [12/Dec/2024:02:48:57 +0000] "GET /favicon.ico HTTP/1.1" 404 196
10.0.2.100 - - [12/Dec/2024:02:50:24 +0000] "GET / HTTP/1.1" 200 45
 
~$ podman top -l
USER        PID         PPID        %CPU        ELAPSED          TTY         TIME        COMMAND
root        1           0           0.000       4m36.020462289s  pts/0       0s          httpd -DFOREGROUND
www-data    8           1           0.000       4m36.022522465s  pts/0       0s          httpd -DFOREGROUND
www-data    9           1           0.000       4m36.02299156s   pts/0       0s          httpd -DFOREGROUND
www-data    10          1           0.000       4m36.023751351s  pts/0       0s          httpd -DFOREGROUND

もちろん若干の違いはあるものの、Dockerを触ってる人なら違和感なく扱えると思います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ podman run quay.io/podman/hello
 
Trying to pull quay.io/podman/hello:latest...
Getting image source signatures
Copying blob 81df7ff16254 done   |
Copying config 5dd467fce5 done   |
Writing manifest to image destination
!... Hello Podman World ...!
 
         .--"--.          
       / -     - \        
      / (O)   (O) \       
   ~~~| -=(,Y,)=- |        
    .---. /`  \   |~~     
 ~/  o  o \~~~~.----. ~~  
  | =(X)= |~  / (O (O) \  
   ~~~~~~~  ~| =(Y_)=-  |  
  ~~~~    ~~~|   U      |~~
 
Project:   https://github.com/containers/podman
Website:   https://podman.io
Desktop:   https://podman-desktop.io
Documents: https://docs.podman.io
YouTube:   https://youtube.com/@Podman
X/Twitter: @Podman_io
Mastodon:  @Podman_io@fosstodon.org

ちなみにPodman公式キャラはアザラシではなく「Selkies(セルキー)」というスコットランドの神話上の生き物らしいです。
(セルキーの群れのことを「pods」と呼ぶことから来てるらしい。かわいい)

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
2
読み込み中...
2 票, 平均: 1.00 / 12
151
X facebook はてなブックマーク pocket
【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author

かわ けん

システムソリューション部所属
好奇心旺盛ポケ○ン