GNU/Linux >> Linux の 問題 >  >> Linux

これらの4つのツールをLinuxコンテナツールボックスに追加します

適切なツールが必要な場合は、地元の金物店に行って通路を歩くのに勝るものはありません。手工具の通路を下りて、すべてのドライバー、ハンマー、六角レンチ、巻尺などをチェックするのは素晴らしいことです。あなたが正しい道具を見つけたと思ったとき、思いついたのです。手工具でそれができれば、完璧な動力工具で本当にそれを成し遂げることができます!

少なくともそれは私の妻が私に言っていることです、そしてあなたが見るように、彼女は私たちの家族の中で便利な人です。私が選んだツールは技術ツールです。コンピューター店でビデオカードの通路をください。私は幸せなキャンピングカーです。

最近、Podman Community Meetingでデモを行い、PodmanとBuildah用に開発したより光沢のある新しいコンテナツールのいくつかを紹介しました。 Podman v3.0で多くの大きな発表があったので、これらのツールのいくつかは影が薄くなっているのではないかと思いました。そのデモンストレーションからいくつかの素晴らしいフィードバックを受け取ったので、フォローアップの投稿も役立つかもしれないと感じました。それでは、これらの光沢のある新しいコンテナツールを詳しく見ていきましょう。

コンテナファイルの最初のFROMを変更する

新しい--fromがあります buildah budのオプション 間もなくPodmanv3.0に組み込まれるコマンド。このオプションを使用すると、最初の、そして最初の FROMに関連付けられた値を置き換えることができます。 Containerfileのステートメント。たとえば、このContainerfileがある場合:

# cat ~/Containerfile.multifrom
FROM fedora as builder
FROM busybox
COPY --from=builder /bin/df /tmp/df_tester

最初の実行を行うことができ、fedoraを使用したことが示されます コンテナ画像。次に、busybox imageが使用され、最後にfedoraからファイルがコピーされます の/bin/df busyboxへのディレクトリ 画像の/tmp/df_tester ディレクトリ。

# buildah bud -t multi -f ~/Containerfile.multifrom .
STEP 1: FROM fedora AS builder
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 157ab8011454 done  
Copying config 9f2a560376 done  
Writing manifest to image destination
Storing signatures
--> 9f2a5603764
STEP 2: FROM busybox
Resolved "busybox" as an alias (/root/.config/containers/short-name-aliases.conf)
Getting image source signatures
Copying blob 4c892f00285e done  
Copying config 22667f5368 done  
Writing manifest to image destination
Storing signatures
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists  
Copying blob 9b68b051b385 done  
Copying config 187c956137 done  
Writing manifest to image destination
Storing signatures
--> 187c9561378
187c9561378efb043dfd0e8fa9c0afbdc0cf2faeb244e0dd7f2003321feab524

ここで、より現実的な状況を想像してみてください。 FROM ステートメントは、イメージのさまざまなバージョンのさまざまなタグを使用してカスタムビルドされたイメージを指します。特にCI環境では、Dockerfile全体を再作成するのではなく、次回の実行で使用するコンテナーイメージを渡すだけでよいでしょう。それが--fromの仕事です 塗りつぶします。

この例では、同じbudを実行します コマンドですが、今回は--from alpine:latestを追加します 。

# buildah bud -t multi -f ~/Containerfile.multifrom --from alpine:latest .
STEP 1: FROM alpine:latest AS builder
Resolved "alpine" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 4c0d98bf9879 done  
Copying config e50c909a8d done  
Writing manifest to image destination
Storing signatures
--> e50c909a8df
STEP 2: FROM busybox
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists  
Copying blob b498f23d5c32 done  
Copying config d7e92107ed done  
Writing manifest to image destination
Storing signatures
--> d7e92107edf
d7e92107edf42f046f6a7faddade4825ef1c2361ae21eb0ac3694871dcdb496c

alpine:latest コンテナイメージが最初に使用され、現在はbusyboxの後に使用されています 画像が作成されました。アルパインの/bin/dfからのファイル /tmp/df_testerにコピーされました busyboxのディレクトリ 。最初のFROMの値 Containerfileのステートメントは、--fromで渡した引数に置き換えられました。 オプション。

[次もお読みください:Podmanを使用したルートレスコンテナ]

ビルド中に入力を受け入れる

もう1つの新しいツールは、--stdinです。 buildah budに付随するオプション またはpodman build (Podman v3.0以降)。このオプションを使用すると、ビルド手順中に実行中のプロセスがキーボード入力を要求した場合、ビルドプロセスは一時停止し、キーボード入力を要求します。

このContainerfileを見てください:

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

このContainerfileはubi8を使用します イメージを作成してから、iputilsをインストールします 。ご想像のとおり、yum コマンドは、iputilsのインストールを確認するように要求します 。 --stdinなしで何が起こるか見てみましょう プレイ中のオプション。

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

# buildah bud -t mystdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
Resolved "ubi8" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob d9e72d058dc5 done  
Copying blob cca21acb641a done  
Copying config 3269c37eae done  
Writing manifest to image destination
Storing signatures
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Red Hat Universal Base Image 8 (RPMs) - BaseOS  2.5 MB/s | 774 kB     00:00    
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.6 MB/s | 5.0 MB     00:00    
Red Hat Universal Base Image 8 (RPMs) - CodeRea  75 kB/s |  13 kB     00:00    
Dependencies resolved.
================================================================================
 Package        Architecture  Version                 Repository           Size
================================================================================
Installing:
 iputils        x86_64        20180629-2.el8          ubi-8-baseos        149 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: Operation aborted.
error building at STEP "RUN yum install iputils": error while running runtime: exit status

yumの場合 インストールされたiputils 、確認を求めたが、応答がなかったため失敗した。次に、--stdinで何が起こるかを見てみましょう。 プレイ中のオプション。

# buildah bud -t mystdin --stdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Red Hat Universal Base Image 8 (RPMs) - BaseOS  2.8 MB/s | 774 kB     00:00    
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.5 MB/s | 5.0 MB     00:00    
Red Hat Universal Base Image 8 (RPMs) - CodeRea  86 kB/s |  13 kB     00:00    
Dependencies resolved.
================================================================================
 Package        Architecture  Version                 Repository           Size
================================================================================
Installing:
 iputils        x86_64        20180629-2.el8          ubi-8-baseos        149 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: y

ブログでは実際に出会うことはありませんが、ビルドプロセスは次の行で停止しますこれで問題ありません[y / N]: yの文字を入力しました ビルドは続行されました(以下の出力を参照)。

Downloading Packages:
iputils-20180629-2.el8.x86_64.rpm               972 kB/s | 149 kB     00:00    
--------------------------------------------------------------------------------
Total                                           952 kB/s | 149 kB     00:00    
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : iputils-20180629-2.el8.x86_64                          1/1
  Running scriptlet: iputils-20180629-2.el8.x86_64                          1/1
  Verifying        : iputils-20180629-2.el8.x86_64                          1/1
Installed products updated.

Installed:
  iputils-20180629-2.el8.x86_64                                                

Complete!
STEP 3: RUN touch /tmp/done
STEP 4: COMMIT mystdin
Getting image source signatures
Copying blob 92538e92de29 skipped: already exists  
Copying blob eb7bf34352ca skipped: already exists  
Copying blob f9ed641975cb done  
Copying config b2742f08a7 done  
Writing manifest to image destination
Storing signatures
--> b2742f08a7a
b2742f08a7ae2cb76a2cd0c481f2d2d66b303379d23e5260577ea09476a8a486

これは、特に-yを追加できるため、もう1つの単純な例です。 yumへの引数 指図。それでも、ビルドプロセス中に実行したい他のコマンドがあり、より重要な入力を簡単に取得したい場合があります。

コンテナイメージのタグを見つける

Podmanにとって比較的新しいこの次のツールは、レジストリ上のコンテナイメージのすべてのタグを表示します。 Buildah、Podman、Skopeoのquay.ioで画像を使用していますが、プロジェクトの1つの特定のバージョンを使用したいのですが、どれがそこにあるのか思い出せないことがあります。 Skopeoに精通している場合は、この分野で非常にうまく機能します。ただし、Skopeoをローカルにインストールしていない場合、または何らかの理由でインストールできない場合は、新しい--list-tags podman searchのオプション コマンドはあなたのチケットです。

それでは、安定したPodmanイメージがquay.ioに持っているすべてのタグを見てみましょう:

# podman search --list-tags quay.io/podman/stable
NAME                   TAG
quay.io/podman/stable  v1.4.4
quay.io/podman/stable  v1.4.2
quay.io/podman/stable  v1.5.1
quay.io/podman/stable  v1.5.0
quay.io/podman/stable  v1.6.2
quay.io/podman/stable  auto
quay.io/podman/stable  v1.6
quay.io/podman/stable  v1.9.0
quay.io/podman/stable  v1.9.1
quay.io/podman/stable  v2.0.2
quay.io/podman/stable  v2.0.6
quay.io/podman/stable  v2.1.1
quay.io/podman/stable  master
quay.io/podman/stable  latest

すばやく、簡単に、そして便利です。

Skopeoコンテナイメージの使用

このツールは一種のying 最後のツールへヤン 。 Skopeoプロジェクトには、コンテナイメージで使用する多くのツールが含まれています。また、画像がレジストリに持っているタグのリストも表示されます。 Skopeoは、レジストリに関する情報を表示したり、レジストリを含むストレージメカニズム間でコンテナイメージをコピーしたり、コンテナレジストリを同期したり、レジストリからイメージを削除したりすることもできます。

ここでは、これらのSkopeoコマンドのそれぞれについて詳しく説明しません。タグを表示するための検索機能を実行します。ひねりは、Podmanを使用してquay.io/skopeo/stable:latestを実行するだけです。 イメージ。したがって、Skopeoをインストールする必要がなくなり、すべての機能を引き続き使用できます。

それでは、quay.io/podman/stable:latestのタグをリストしましょう。 もう一度画像を表示しますが、今回はSkopeoコンテナ画像を使用します:

# podman run quay.io/skopeo/stable:latest list-tags docker://quay.io/podman/stable
Trying to pull quay.io/skopeo/stable:latest...
Getting image source signatures
Copying blob 6629904ed3b7 done  
Copying blob 2b74ed94761c done  
Copying blob 692512e477a1 done  
Copying blob 166a3cbbffd1 done  
Copying blob b1e90be38d32 done  
Copying blob a5dc7d6cfd62 done  
Copying blob a3ed95caeb02 done  
Copying blob a3ed95caeb02 done  
Writing manifest to image destination
Storing signatures
{
    "Repository": "quay.io/podman/stable",
    "Tags": [
        "v1.4.4",
        "v1.4.2",
        "v1.5.1",
        "v1.5.0",
        "v1.6.2",
        "auto",
        "v1.6",
        "v1.9.0",
        "v1.9.1",
        "v2.0.2",
        "v2.0.6",
        "v2.1.1",
        "master",
        "latest"
    ]
}

このコマンドを初めて実行するときは、skopeoのコストが発生するため、Podmanの同等のコマンドよりも遅くなります。 プルされているコンテナイメージ。その後、速度は2次実行で同等になり、他のSkopeoコマンドも実行できます。

自分でさらに探索してみましょう。ValentinRothbergのコンテナでSkopeoを実行する方法から探索を開始することをお勧めします。 。 Skopeoコンテナの画像は、私のコンテナツールボックスの中で最も光沢のあるツールだと思います。

[コンテナを使い始めますか?この無料コースをチェックしてください。コンテナ化されたアプリケーションのデプロイ:技術的な概要。 ]

すべての光沢のある新しいツール

これで、妻は地元の金物店で彼女の光沢のあるツールをすべて手に入れることができます。新しいコンテナツールは仮想ツールボックスに保存します。これらの新しいコマンドとオプションが、独自のツールボックスで役立つことを願っています。


Linux
  1. Linuxデスクトップに壁紙としてビデオを追加する

  2. 7つの楽しいLinuxコンテナ/画像転送機能

  3. Linuxコンテナとイメージの違いは何ですか?

  1. Linuxで独自のコンテナを構築する

  2. データを消去するための4つのLinuxツール

  3. Linux コマンド ラインからイメージにタイムスタンプを追加する

  1. オープンソースツールを使用してLinuxPCハードウェアをアップグレードする

  2. ツールボックスに追加する20個の1行のLinuxコマンド

  3. Linuxサーバーを保護するための6つの必須のオープンソースツール