podman初試行-dockerと比較
podman初試行-dockerと比較
1、dockerとは何ですか.
Dockerはオープンソースのアプリケーションコンテナエンジンで、Linuxコンテナのパッケージに属しています.Dockerは簡単で使いやすいコンテナ使用インタフェースを提供し、開発者がアプリケーションをパッケージ化し、移植可能なコンテナに依存してパッケージ化し、流行のLinuxマシンに公開することができます.容器は完全に砂箱メカニズムを使用しており、互いに何のインターフェースもありません.
2 Podmanとは何ですか.
Podmanはオープンソースのコンテナランタイムプロジェクトで、ほとんどのLinuxプラットフォームで使用できます.PodmanはDockerと非常に似た機能を提供しています.前述したように、システム上でデーモンプロセスを実行する必要はありません.root権限なしで実行することもできます.Podmanは、OCI(Open Container Initiative)仕様に準拠するコンテナおよびコンテナミラーを管理および実行できます.Podmanは、Dockerミラーを管理するためにDockerと互換性のあるコマンドラインフロントエンドを提供します. Podman公式サイトアドレス:https://podman.io/ Podmanプロジェクトアドレス:https://github.com/containers/libpod
3,Podmanとdockerの違いは? dockerは、私たちのシステム上でデーモンプロセス(docker daemon)を実行する必要がありますが、podmanは を必要としません.コンテナを起動する方法は異なります. dockeにはdocker daemonがあるので、dockerが起動したコンテナは を完了することができます. dockerはrootユーザーを使用してコンテナを作成する必要がありますが、podmanは を必要としません.
4,podmanのインストール
4.1,Arch Linux & Manjaro Linux
4.2,Fedora,Centos
4.3,Gentoo
4.4,MacOS
5,Podman CLI紹介
Podman CLIの87%の命令はDOcker CLIと同じで、公式にはこのような例
コンテナの実行
現在のすべてのコンテナを一覧表示
ミラー情報の表示
コンテナ実行ログの表示
実行中のコンテナリソースの使用状況の表示
コンテナの移動
Podmanは、コンテナを1つのマシンから別のマシンに移行することをサポートします.まず、ソースマシンでコンテナにチェックポイントを設定し、コンテナを指定した位置にパッケージします.
次に,ターゲットマシンでソースマシンから転送されたパッケージファイルを用いてコンテナを復元する.
podmanのプログラムはどのように自己起動を設定します
Podmanはデーモン管理サービスを使用しないため、デーモンによってコンテナを自動的に再起動する機能は実現できません.では、電源を入れて自動的に容器を再起動するには、どうすればいいのでしょうか.実は方法は簡単で、今では多くのシステムがシステムdをデーモンプロセス管理ツールとして採用しています.ここではSystemdを使用してPodmanの起動再起動コンテナを実現することができます.ここでは、さっき起動したnginxを例に挙げます.Systemdサービスプロファイルを作成します.
次に、このSystemdサービスを有効にします.
その後、システムが再起動するたびにSystemdはこのサービスに対応する容器を自動的に起動し、容器が死亡した後もこの容器を起動します.私たちは次の例でsleep 30のdockerパッケージをテストすることができます.この容器は一度に30 sしか維持できません.
そして上記のように起動自起動を設定します
Podmanで起動したコンテナがPodmanのサブプロセスであることを示します.
さっきnginxのpodmanを起動しました今彼のプロセスを見てみましょう
その後、このnginxの親プロセスがあれであることを確認します.
だから私の上の言い方を検証しました
1、dockerとは何ですか.
Dockerはオープンソースのアプリケーションコンテナエンジンで、Linuxコンテナのパッケージに属しています.Dockerは簡単で使いやすいコンテナ使用インタフェースを提供し、開発者がアプリケーションをパッケージ化し、移植可能なコンテナに依存してパッケージ化し、流行のLinuxマシンに公開することができます.容器は完全に砂箱メカニズムを使用しており、互いに何のインターフェースもありません.
2 Podmanとは何ですか.
Podmanはオープンソースのコンテナランタイムプロジェクトで、ほとんどのLinuxプラットフォームで使用できます.PodmanはDockerと非常に似た機能を提供しています.前述したように、システム上でデーモンプロセスを実行する必要はありません.root権限なしで実行することもできます.Podmanは、OCI(Open Container Initiative)仕様に準拠するコンテナおよびコンテナミラーを管理および実行できます.Podmanは、Dockerミラーを管理するためにDockerと互換性のあるコマンドラインフロントエンドを提供します.
3,Podmanとdockerの違いは?
docker cli
コマンドは、APIを介してDocker Engine( )
とインタラクティブにcontainerを作成したいと伝え、docker Engine
がOCI container runtime(runc)
を呼び出してcontainerを起動します.これはcontainerのprocess(プロセス)がDocker CLI
のchild process( )
ではなく、Docker Engine
のchild process
であることを意味する.Podman
は、containerを作成するためにOCI containner runtime(runc)
に直接対話するので、container process
はpodman
のchild process
に直接作用する.--restart
ポリシーをサポートしていますが、podmanはサポートしていません.k 8 sでこの問題がなければ、podの再起動ポリシーを設定することができます.システムではシステムdサービスを記述して自己起動4,podmanのインストール
4.1,Arch Linux & Manjaro Linux
sudo pacman -S podman
4.2,Fedora,Centos
sudo yum -y install podman
4.3,Gentoo
sudo emerge app-emulation/libpod
4.4,MacOS
brew cask install podman
5,Podman CLI紹介
Podman CLIの87%の命令はDOcker CLIと同じで、公式にはこのような例
alias docker=podman
が与えられているので、DOcker CLIをよく使う人はpodmanを使うのがとても速いと言われています.コンテナの実行
podman run -dt -p 80:80 --name nginx -v /data:/data -e NGINX_VERSION=1.16 nginx:1.16.0
現在のすべてのコンテナを一覧表示
# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19f105d5dc1e docker.io/library/nginx:1.16.0 nginx -g daemon o... 2 minutes ago Up 2 minutes ago 0.0.0.0:80->80/tcp nginx
ミラー情報の表示
# podman inspect nginx | grep -i "ipaddress"
"SecondaryIPAddresses": null,
"IPAddress": "10.88.0.110",
コンテナ実行ログの表示
podman logs nginx
実行中のコンテナリソースの使用状況の表示
# podman top nginx
USER PID PPID %CPU ELAPSED TTY TIME COMMAND
root 1 0 0.000 5m26.420969043s pts/0 0s nginx: master process nginx -g daemon off;
nginx 6 1 0.000 5m26.421085502s pts/0 0s nginx: worker process
# podman stats nginx
ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS
19f105d5dc1e nginx -- 2.036MB / 1.893GB 0.11% 978B / 10.55kB -- / -- 2
コンテナの移動
Podmanは、コンテナを1つのマシンから別のマシンに移行することをサポートします.まず、ソースマシンでコンテナにチェックポイントを設定し、コンテナを指定した位置にパッケージします.
$ sudo podman container checkpoint -e /tmp/checkpoint.tar.gz
$ scp /tmp/checkpoint.tar.gz :/tmp
次に,ターゲットマシンでソースマシンから転送されたパッケージファイルを用いてコンテナを復元する.
$ sudo podman container restore -i /tmp/checkpoint.tar.gz
podmanのプログラムはどのように自己起動を設定します
Podmanはデーモン管理サービスを使用しないため、デーモンによってコンテナを自動的に再起動する機能は実現できません.では、電源を入れて自動的に容器を再起動するには、どうすればいいのでしょうか.実は方法は簡単で、今では多くのシステムがシステムdをデーモンプロセス管理ツールとして採用しています.ここではSystemdを使用してPodmanの起動再起動コンテナを実現することができます.ここでは、さっき起動したnginxを例に挙げます.Systemdサービスプロファイルを作成します.
$ vim /etc/systemd/system/nginx_podman.service
[Unit]
Description=Podman Nginx Service
After=network.target
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/podman start -a nginx
ExecStop=/usr/bin/podman stop -t 10 nginx
Restart=always
[Install]
WantedBy=multi-user.target
次に、このSystemdサービスを有効にします.
$ sudo systemctl daemon-reload
$ sudo systemctl enable nginx_podman.service
$ sudo systemctl start nginx_podman.service
その後、システムが再起動するたびにSystemdはこのサービスに対応する容器を自動的に起動し、容器が死亡した後もこの容器を起動します.私たちは次の例でsleep 30のdockerパッケージをテストすることができます.この容器は一度に30 sしか維持できません.
$ vim Dockerfile
FROM busybox:latest
CMD ["sh","-c","sleep 30"]
そして上記のように起動自起動を設定します
Podmanで起動したコンテナがPodmanのサブプロセスであることを示します.
さっきnginxのpodmanを起動しました今彼のプロセスを見てみましょう
# ps -ef | grep [n]ginx
root 19368 19359 0 11:38 pts/0 00:00:00 nginx: master process nginx -g daemon off;
101 19381 19368 0 11:38 pts/0 00:00:00 nginx: worker process
その後、このnginxの親プロセスがあれであることを確認します.
# ps -ef | grep 19359
root 19359 1 0 11:38 ? 00:00:00 /usr/libexec/podman/conmon 。。。。
だから私の上の言い方を検証しました