1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

絶対にどこよりもわかりやすいコンテナ入門① 〜コンテナの本質を理解する〜

1
Posted at

はじめに

巷では docker コマンドの使い方であったり、コンテナ基盤上での開発の記事はよく見かけますが、「そもそもコンテナって何?」というところを説明した記事はあまり見かけないような気がしたので、そちらをメインに書いてみました。皆様の学習の一助になれば幸いです。

コンテナは「ただのプロセス」

コンテナについてなんとなく難しそうと感じでいる方も多いかもしれませんが、コンテナはホストOS上で動くただのプロセスにすぎないので、そこまで身構える必要はありません。
通常のプロセスとの最大の違いは 「ホストとは異なる実行環境を持つプロセス」 であるということ。
では、ホストとは異なる実行環境を持つプロセスとはどういうことなのか、実際に検証環境を作成してみていこうと思います。

検証環境

OS : CentOS9
ISO は こちら から入手、CPU/MEM/Disk サイズ等はテキトーに決めて、ブラウザを使いたかったのでGUIインストールで仮想マシンを作成しました。
検証環境からはインターネットに出られるようにしてあります。

そもそも「プロセス」とは?

プロセスとは「実行中のプログラム」のことです。 作成した検証環境で確認すると、ただCentOSをインストールしただけで裏でたくさんのプロセスが動いていることがわかります。

[root@localhost ~]# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 11:02 ?        00:00:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 31 rhgb
root           2       0  0 11:02 ?        00:00:00 [kthreadd]
root           3       2  0 11:02 ?        00:00:00 [pool_workqueue_]
root           4       2  0 11:02 ?        00:00:00 [kworker/R-rcu_gp]
root           5       2  0 11:02 ?        00:00:00 [kworker/R-sync_wq]
<以下略>

TeraTerm で SSH 接続してみると、sshd のプロセスの子プロセス(正確には子の子の子)としてログインシェル(bash)が実行されていて、ログインシェルの子プロセスとして実行したコマンド(ps と grep)のプロセスが実行されていることがわかります。

[root@localhost ~]# ps -ef --forest | grep sshd -A 2
root        1039       1  0 11:57 ?        00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root        1242    1039  0 11:57 ?        00:00:00  \_ sshd-session: root [priv]
root        1278    1242  0 11:57 ?        00:00:00      \_ sshd-session: root@pts/0
root        1279    1278  0 11:57 pts/0    00:00:00          \_ -bash
root        4941    1279  0 15:03 pts/0    00:00:00              \_ ps -ef --forest
root        4942    1279  0 15:03 pts/0    00:00:00              \_ grep --color=auto sshd -A 2

コンテナ実行環境の作成

今回はコンテナ実行環境として Podman を使用するので、Podman をインストールします。
※ Podman のほうが Kubernetes や OpenShift との相性がいいため Podman を使用していますが、Docker に慣れている方は Docker に読み替えていただいてもかまいません。

[root@localhost ~]# dnf update -y
CentOS Stream 9 - BaseOS                                                                                                3.3 MB/s | 9.0 MB     00:02
CentOS Stream 9 - AppStream                                                                                             5.4 MB/s |  29 MB     00:05
CentOS Stream 9 - Extras packages                                                                                        39 kB/s |  22 kB     00:00
依存関係が解決しました。
行うべきことはありません。
完了しました!
[root@localhost ~]# dnf install -y podman
メタデータの期限切れの最終確認: 0:00:30 前の 2026年08月20日 11時23分09秒 に実施しました。
パッケージ podman-6:5.8.5-1.el9.x86_64 は既にインストールされています。
依存関係が解決しました。
行うべきことはありません。
完了しました!

最初からインストールされてた。。

実際にコンテナを動かしてみよう

準備が整ったところで早速コンテナを実行していきますが、冒頭に述べたようにコンテナはただのプロセスです。通常のプロセスとコンテナプロセスを比較した方がわかりやすいと思うので、nginx を「通常のプロセスで上げた場合」と「コンテナプロセスで上げた場合」を見ていこうと思います。

まずは通常のプロセスで nginx を動かす

nginx のパッケージをインストールしサービスを起動させると、PID 1708 で nginx のプロセスが起動していることがわかります。

[root@localhost ~]# dnf install -y nginx
<中略>
インストール済み:
centos-logos-httpd-90.9-1.el9.noarch   nginx-2:1.20.1-31.el9.x86_64   nginx-core-2:1.20.1-31.el9.x86_64   nginx-filesystem-2:1.20.1-31.el9.noarch

完了しました!
[root@localhost ~]#
[root@localhost ~]# systemctl status nginx.service
○ nginx.service - The nginx HTTP and reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; preset: disabled)
     Active: inactive (dead)
[root@localhost ~]#
[root@localhost ~]# systemctl start nginx.service
[root@localhost ~]#
[root@localhost ~]# systemctl status nginx.service
● nginx.service - The nginx HTTP and reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; preset: disabled)
     Active: active (running) since Thu 2026-08-20 11:58:06 JST; 33min ago
    Process: 1705 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
    Process: 1706 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
    Process: 1707 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
   Main PID: 1708 (nginx)
      Tasks: 5 (limit: 101903)
     Memory: 6.4M (peak: 6.9M)
        CPU: 20ms
     CGroup: /system.slice/nginx.service
             tq1708 "nginx: master process /usr/sbin/nginx"
             tq1709 "nginx: worker process"
             tq1710 "nginx: worker process"
             tq1711 "nginx: worker process"
             mq1712 "nginx: worker process"

ps コマンドで確認してみるとこんな感じ。(1708 を親にして 1709~1712 の子プロセスが動いていることが確認できます。)

[root@localhost ~]# ps -ef --forest | grep -E "PID|1708" | grep -v grep 
UID          PID    PPID  C STIME TTY          TIME CMD
root        1708       1  0 11:58 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx       1709    1708  0 11:58 ?        00:00:00  \_ nginx: worker process
nginx       1710    1708  0 11:58 ?        00:00:00  \_ nginx: worker process
nginx       1711    1708  0 11:58 ?        00:00:00  \_ nginx: worker process
nginx       1712    1708  0 11:58 ?        00:00:00  \_ nginx: worker process

リッスンポートを確認するとホストの80番ポートで受け付けていることがわかるので、テキトーなファイルを作ってアクセスしてみます。

[root@localhost ~]# ss -nltp | grep nginx
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=1712,fd=6),("nginx",pid=1711,fd=6),("nginx",pid=1710,fd=6),("nginx",pid=1709,fd=6),("nginx",pid=1708,fd=6))
LISTEN 0      511             [::]:80           [::]:*    users:(("nginx",pid=1712,fd=7),("nginx",pid=1711,fd=7),("nginx",pid=1710,fd=7),("nginx",pid=1709,fd=7),("nginx",pid=1708,fd=7))

[root@localhost ~]# cat << EOF > /usr/share/nginx/html/hello.html
> This is Normal Process
> EOF
[root@localhost ~]#
[root@localhost ~]# cat /usr/share/nginx/html/hello.html
This is Normal Process
[root@localhost ~]#
[root@localhost ~]# curl http://localhost/hello.html
This is Normal Process

「This is Normal Process」 が返ってきますね。一応、ブラウザからも確認してみます。

image.png

次にコンテナプロセスで nginx を動かす

通常のプロセスで nginx を動かせたところで次はコンテナプロセスで動かしてみます。ホストにインストールした nginx のバージョンが 1.20.1 だったので、せっかくなので違うバージョンの nginx をコンテナで動かしてみましょう。

[root@localhost ~]# nginx -v
nginx version: nginx/1.20.1

コンテナを起動する際はコンテナイメージを指定します。コンテナイメージとは、コンテナを起動するために必要なファイル一式をまとめたテンプレートであり、コンテナイメージを実行することでコンテナが起動します。インターネット上にどんなコンテナイメージが公開されているかは podman search コマンドで調べることができます。

[root@localhost ~]# podman search nginx
NAME                                              DESCRIPTION
registry.redhat.io/rhel8/nginx-114                Platform for running nginx 1.14 or building...
registry.redhat.io/rhel8/nginx-118                Platform for running nginx 1.18 or building...
registry.redhat.io/rhel8/nginx-120                Platform for running nginx 1.20 or building...
registry.redhat.io/ubi8/nginx-120                 Platform for running nginx 1.20 or building...
registry.redhat.io/ubi9/nginx-120                 Platform for running nginx 1.20 or building...
<中略>
docker.io/library/nginx                           Official build of Nginx.
docker.io/nginx/nginx-ingress                     NGINX and  NGINX Plus Ingress Controllers fo...
docker.io/nginx/nginx-prometheus-exporter         NGINX Prometheus Exporter for NGINX and NGIN...
docker.io/nginx/nginx-ingress-operator            NGINX Ingress Operator for NGINX and NGINX P...
docker.io/nginx/nginxaas-loadbalancer-kubernetes
<以下略>

ずらっとたくさんのイメージがあることが確認できますが今回は、docker が公式に提供している docker.io/library/nginx を使います。
docker.io から始まるイメージは dockerhub で公開されているコンテナイメージであり、ブラウザからも調べることができます。
https://hub.docker.com/

nginx で検索すると、上記の podman search で表示されたイメージがブラウザからも確認できることがわかります。

スクリーンショット 2026-09-03 131522.png

では、nginx のコンテナを起動してみましょう。

[root@localhost ~]# podman run -d docker.io/library/nginx
Trying to pull docker.io/library/nginx:latest... #latest のタグが補完されて、インターネット上からダウンロードしてきている
Getting image source signatures
Copying blob 128fcc7b23b0 done   |
Copying blob 746b934a8960 done   |
Copying blob 5d480233f531 done   |
Copying blob 26c307b5e35a done   |
Copying blob 5508f6432d3e done   |
Copying blob f530c3e421fc done   |
Copying blob 7eb55399d6de done   |
Copying config f075e3f949 done   |
Writing manifest to image destination
ac22be2830ef0b6db5d14dc077eb45fdf5900f75a8e6e4c54124e664b74086ce

上記のコマンドは「docker.io/library/nginx のコンテナイメージを実行してください」という意味になります。
※ -d はプロセスをバックグラウンドで実行するためのオプションで、これをつけないとターミナルが奪われてしまうのでつけています。

docker.io/library/nginx と特にタグを指定しないと自動で latest のタグが補完されます。
(なんなら docker.io/library/ も補完してくれるので、nginx と指定するだけで docker.io/library/nginx:latest のイメージを pull してきます。)
docker.io/library/nginx:1.20.1 のように特定のタグを指定することももちろん可能で、イメージにどんなタグが付いているかは dockerhub から確認できます。実行するコンテナイメージがホスト上に存在しなければインターネットから pull してくる動きをします。

上記の出力からも「Trying to pull docker.io/library/nginx:latest」とインターネットから pull してきていることが見て取れます。
ホスト上に存在するコンテナイメージは podman images で確認でき、先ほど podman run したときに pull してきた nginx:latest のイメージが存在することが確認できます。

[root@localhost ~]# podman images
REPOSITORY               TAG         IMAGE ID      CREATED      SIZE
docker.io/library/nginx  latest      f075e3f94986  9 hours ago  165 MB

podman ps でホスト上のコンテナの一覧を確認でき、正常に起動していると STATUS が Up になります。※ -a は停止しているコンテナを含めたすべてを表示させるオプション

[root@localhost ~]# podman ps -a
CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS        PORTS       NAMES
ac22be2830ef  docker.io/library/nginx:latest  nginx -g daemon o...  9 seconds ago  Up 8 seconds  80/tcp      festive_rhodes

ホストからコンテナプロセスを見てみる

ではここで実行したコンテナプロセスはホストからはどう見えるのでしょうか?podman inspect <コンテナID> で実行中のコンテナの詳細を見ることができ、ホストから見たときに PID 4242 で実行されていることがわかります。

[root@localhost ~]# podman inspect ac22be2830ef | jq '.[0].State'
{
  "OciVersion": "1.2.1",
  "Status": "running",
  "Running": true,
  "Paused": false,
  "Restarting": false,
  "OOMKilled": false,
  "Dead": false,
  "Pid": 4242, #ホストから見たときに、PID 4242 で実行されている。
  "ConmonPid": 4240,
  "ExitCode": 0,
  "Error": "",
  "StartedAt": "2026-08-20T13:15:13.866579524+09:00",
  "FinishedAt": "0001-01-01T00:00:00Z",
  "CgroupPath": "/machine.slice/libpod-ac22be2830ef0b6db5d14dc077eb45fdf5900f75a8e6e4c54124e664b74086ce.scope",
  "CheckpointedAt": "0001-01-01T00:00:00Z",
  "RestoredAt": "0001-01-01T00:00:00Z"
}

ps コマンドでも確認してみましょう。通常のプロセスで nginx を実行したときと同じように、ホスト上で nginx のプロセスが起動していることがわかります。(4242 を親にして 4266~4269 の子プロセスが動いていることが確認できます。)

[root@localhost ~]# ps -ef --forest | grep -E "PID|4242" | grep -v grep
UID          PID    PPID  C STIME TTY          TIME CMD
root        4242    4240  0 13:15 ?        00:00:00  \_ nginx: master process nginx -g daemon off;
101         4266    4242  0 13:15 ?        00:00:00      \_ nginx: worker process
101         4267    4242  0 13:15 ?        00:00:00      \_ nginx: worker process
101         4268    4242  0 13:15 ?        00:00:00      \_ nginx: worker process
101         4269    4242  0 13:15 ?        00:00:00      \_ nginx: worker process

これが「コンテナはただのプロセス」とずっと言ってきた意味になります。

「ホストとは異なる実行環境を持つプロセス」の意味

では、「ホストとは異なる実行環境を持つ」とはどういう意味なのでしょうか?
コンテナの中に入って確認してみましょう。

ホストに対しターミナル接続するのと同じように、コンテナに対しても podman exec -it <コンテナID> bash でコンテナ内で bash を起動しターミナル接続することができます。

[root@localhost ~]# podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED      STATUS      PORTS       NAMES
ac22be2830ef  docker.io/library/nginx:latest  nginx -g daemon o...  2 hours ago  Up 2 hours  80/tcp      festive_rhodes
[root@localhost ~]#
[root@localhost ~]# podman exec -it ac22be2830ef bash
root@ac22be2830ef:/#

実行環境の違い① ルートファイルシステム

コンテナ内で nginx のバージョンを確認すると 1.31.4 でした。
上記でホストの nginx のバージョンを確認したときは 1.20.1 だったので、ホストとは異なるバージョンの nginx が動いていることがわかります。

root@ac22be2830ef:/# nginx -v
nginx version: nginx/1.31.4

コンテナに入れたところで ps コマンドを打とうと思ったら、ps コマンドがなかったのでインストールします。

[root@localhost ~]# podman exec -it ac22be2830ef bash
root@ac22be2830ef:/# ps
bash: ps: command not found
root@ac22be2830ef:/#
root@ac22be2830ef:/# apt update
<中略>
9 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@ac22be2830ef:/#
root@ac22be2830ef:/#
root@ac22be2830ef:/# apt install -y procps
Installing:
  procps

Installing dependencies:
  libgpm2  libncursesw6  libproc2-0  linux-sysctl-defaults  psmisc
<以下略>

ホスト上では普通に使えていた ps コマンドがコンテナ内からは見えない、ということからもホストとは異なる実行環境で動いているプロセスであることが実感できると思います。
また、ホストOSはRedHat系のCentOSですが、nginx のコンテナイメージのベースがDebian系なのでパッケージをインストールする際のコマンドも dnf ではなく apt になっています。

これらは、ホストとコンテナではルートファイルシステムが異なるために起こっている現象です。どういうことかというと、ホストが認識している / とコンテナが認識している / が異なる 、ということです。

podman inspect で表示される {{.GraphDriver.Data.MergedDir}}
のディレクトリがコンテナ内から見たときの / となっています。
※正確には MergedDir がコンテナ内の / のベースになっていますが、そのままコンテナの / のわけではありません。
コンテナ実行時にマウントのオプションを指定した場合や、/etc/resolv.conf, /etc/hosts, /etc/hostname 等の一部の設定ファイル、/proc, /dev, /sys といった特殊なファイルシステムについてはコンテナ起動時に別の場所からマウントされて上書きされます。

[root@localhost ~]# podman inspect ac22be2830ef | jq '.[0].GraphDriver.Data'
{
  "LowerDir": "/var/lib/containers/storage/overlay/b9416de9266e0d4798358d4c1bd61b61aa56bf362ce3107ac519738e9de4d594/diff:/var/lib/containers/storage/overlay/3eef69ef5bc2e7e06401d3854a7ea92f81b241ac7158c5553a997212e00aee07/diff:/var/lib/containers/storage/overlay/fb4f9ad370bb3a656edabaab74c03ac0842fb60f4d7f2454ee9d3eac7366a6ad/diff:/var/lib/containers/storage/overlay/573d63347e27f04e35e127e8e06a5721a186215898796ae684aba86325a60d61/diff:/var/lib/containers/storage/overlay/88e3a90b3584a6e8413237037168ff0a1035f1896d3383bc5dc6f221c169ea1f/diff:/var/lib/containers/storage/overlay/5881f3656e1d942c4baf670d3ff54f81a210a1837660bfcf9b2aa1730cca363e/diff:/var/lib/containers/storage/overlay/6f94328331290cbd81edab450664d42da7b64c191416c9346cd5d28c84f76035/diff",
  "MergedDir": "/var/lib/containers/storage/overlay/225c6b5c3bdee02c3b8f5c9e56e9f4d21f16a2f3f75f82af2c6c5dccb024b5b2/merged", #ここがコンテナにとっての / のベースになる
  "UpperDir": "/var/lib/containers/storage/overlay/225c6b5c3bdee02c3b8f5c9e56e9f4d21f16a2f3f75f82af2c6c5dccb024b5b2/diff",
  "WorkDir": "/var/lib/containers/storage/overlay/225c6b5c3bdee02c3b8f5c9e56e9f4d21f16a2f3f75f82af2c6c5dccb024b5b2/work"
}

なので、通常のプロセスで nginx を動かしたときにホスト上に作成した
/usr/share/nginx/html/hello.html は当然コンテナ内からは確認できません。

逆にコンテナ内で /usr/share/nginx/html/hello.html を作成すると、ホスト上の
<MergedDirのパス>/usr/share/nginx/html/hello.html
にファイルが作成されていることがわかります。

root@ac22be2830ef:/# ls -l /usr/share/nginx/html/hello.html
ls: cannot access '/usr/share/nginx/html/hello.html': No such file or directory
root@ac22be2830ef:/#
root@ac22be2830ef:/# cat << EOF > /usr/share/nginx/html/hello.html
> This is Container Process
> EOF
root@ac22be2830ef:/#
root@ac22be2830ef:/# cat /usr/share/nginx/html/hello.html
This is Container Process
root@ac22be2830ef:/#
root@ac22be2830ef:/# exit # 一度コンテナから出てホストに戻る 
exit
[root@localhost ~]# #ホストからコンテナ内で作った/usr/share/nginx/html/hello.htmlを確認
[root@localhost ~]# ls -l /var/lib/containers/storage/overlay/225c6b5c3bdee02c3b8f5c9e56e9f4d21f16a2f3f75f82af2c6c5dccb024b5b2/merged/usr/share/nginx/html/hello.html
-rw-r--r-- 1 root root 26  8月 20 18:00 /var/lib/containers/storage/overlay/225c6b5c3bdee02c3b8f5c9e56e9f4d21f16a2f3f75f82af2c6c5dccb024b5b2/merged/usr/share/nginx/html/hello.html
[root@localhost ~]#
[root@localhost ~]# cat /var/lib/containers/storage/overlay/225c6b5c3bdee02c3b8f5c9e56e9f4d21f16a2f3f75f82af2c6c5dccb024b5b2/merged/usr/share/nginx/html/hello.html
This is Container Process
[root@localhost ~]#

これは linux カーネルの overlay filesystem という機能によって実現されていますが、そこまで説明しだすと収拾がつかなくなるのでここでは割愛します。気になる人は調べてみてください。

実行環境の違い② PID 

ps コマンドがインストールできたところでコンテナ内で ps コマンドを打ってみましょう。

root@ac22be2830ef:/# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 04:15 ?        00:00:00 nginx: master process nginx -g daemon off;
nginx         24       1  0 04:15 ?        00:00:00 nginx: worker process
nginx         25       1  0 04:15 ?        00:00:00 nginx: worker process
nginx         26       1  0 04:15 ?        00:00:00 nginx: worker process
nginx         27       1  0 04:15 ?        00:00:00 nginx: worker process
root          30       0  0 06:33 pts/0    00:00:00 bash
root         157      30  0 06:48 pts/0    00:00:00 ps -ef

nginx のプロセス、exec したときに実行した bash 、実行した ps コマンドのプロセスしか確認できないですね。
このようにホストからはコンテナプロセスが見える一方で、コンテナ内からはコンテナ内のプロセスしか見えずホスト側を見ることができないようになっている、というのがコンテナがコンテナたる所以となっています。
※あくまで通常のコンテナでは見れないというだけなので、見えるようにすることもできます(通常はしませんが)

また、先ほどホストから確認したときに nginx のメインプロセスの PID が 4242 だったのに対し、コンテナ内から確認すると PID 1 として実行されていることがわかります。

実行環境の違い③ ネットワーク

ルートファイルシステムとPIDの観点でコンテナプロセスがホストとは異なる実行環境を持っていることを見てきましたが、ネットワークもホストとコンテナでは異なります。確認してみましょう。
podman inspect でコンテナの詳細を見てみると、ホストのネットワークとは全く異なるネットワークのIPアドレスが付与されていることがわかります。
このようにホストとコンテナで別のIPアドレスを使用しているため、同じ80番ポートで待ち受けていても、通常のプロセスで起動した nginx と競合せずに共存できるわけです。

[root@localhost ~]# podman inspect ac22be2830ef | jq '.[0].NetworkSettings'
{
  "EndpointID": "",
  "Gateway": "10.xx.xx.xx",
  "IPAddress": "10.xx.xx.xx", #コンテナプロセスのIP
  "IPPrefixLen": 16,
  "IPv6Gateway": "",
  "GlobalIPv6Address": "",
  "GlobalIPv6PrefixLen": 0,
  "MacAddress": "xx:xx:xx:xx:xx:xx",
  "Bridge": "",
  "SandboxID": "",
  "HairpinMode": false,
  "LinkLocalIPv6Address": "",
  "LinkLocalIPv6PrefixLen": 0,
  "Ports": {
    "80/tcp": null
  },
<以下略>

ホスト側でネットワークを確認してみると、podman0 という仮想ブリッジが作成されており、podman0 を通って 10.xx.0.0/16 のコンテナネットワークに接続されていることがわかります。

[root@localhost ~]# nmcli con show
NAME     UUID                                  TYPE      DEVICE
ens192   11da2940-eed6-3e7b-a55d-0e81dbb1215d  ethernet  ens192
lo       82ac4f0b-cca9-41a8-a364-92fca1a42c76  loopback  lo
podman0  894439e7-8c57-4c1e-a9bb-589e6f109763  bridge    podman0
[root@localhost ~]#
[root@localhost ~]# ip route
10.xx.0.0/16 dev podman0 proto kernel scope link src 10.xx.xx.xx
192.xx.xx.0/24 dev ens192 proto kernel scope link src 192.xx.xx.xx metric 100

では実際にコンテナのIPを指定して接続してみましょう。先ほどコンテナ内に作成した hello.html にアクセスしてみます。

[root@localhost ~]# curl http://10.xx.xx.xx/hello.html
This is Container Process

「This is Container Process」 が返ってきますね。コンテナ内に入って localhost 向けに通信することも可能です。

[root@localhost ~]# podman exec -it ac22be2830ef bash
root@ac22be2830ef:/#
root@ac22be2830ef:/# curl http://localhost/hello.html
This is Container Process
root@ac22be2830ef:/#

ホスト側から localhost 向けに投げると当然 「This is Normal Process」が返ってきます。

[root@localhost ~]# curl http://localhost/hello.html
This is Normal Process

しかし、10.xx.0.0/16 のコンテナネットワークはあくまでこのホスト上に存在する内部の仮想ネットワークにすぎないので、ホスト以外の外部から nginx コンテナにアクセスすることが通常できません。
そこで外からコンテナに対してアクセスできるようにするために、ホストとポートバインドを行います。

なのですが。。ポートバインドは podman run の時に指定してあげないと後から設定できませんでした。。
書きたいこと書いていたら思いのほか長くなってしまったため、この先は 次回の記事 に回そうかと思います。ここまででもだいぶコンテナの概要は掴めたのではないでしょうか。
この記事が皆さんの学習の一助になれば幸いです。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?