web-dev-qa-db-ja.com

BusyBoxドッカーの画像が表示されるまで、Dockerを理解できたと思いました

Dockerが理解できたと思いました。私は、多くの依存関係を持つソフトウェアをパッケージ化する方法として理解していました。それからDockerHubでつまずいた

https://hub.docker.com/_/busybox/

これはBusyBoxのイメージです。これは、組み込みシステム向けの小さなLinuxバイナリです。次に、上部のコメントは次のとおりです。

Busyboxは最高です:)レジストリ全体で、バイトあたりの最も有用なコンテナです。

しかし、私はこのイメージが存在する理由をまったく理解していないため、Dockerが存在する理由を実際には理解していないと思います。 BusyBoxドッカー画像のポイントは何ですか?

22
techgnosis

Busyboxドッカーイメージは、busyboxが完全なLinuxディストリビューションを必要とせずに依存関係チェーンを満たすことができるコンテナを構築している場合に役立ちます。

多くの場合、組み込みアプライアンスは、procfs、sysfs、&cをマウントするinitスクリプトであるbusyboxの静的にリンクされたコピーのみで構成できます。 busyboxが提供するツールを使用してから、実際のアプリケーションを呼び出します。 Dockerがファイルシステムの名前空間を設定すると、その初期化スクリプトも必ずしも必要ではありません。

18
Charles Duffy

しかし、私はこのイメージが存在する理由をまったく理解していないため、Dockerが存在する理由を実際には理解していないと思います。 BusyBoxドッカー画像のポイントは何ですか?

私はちょうどBusyBoxをdockerで使い始めましたが、今のところ-rmコマンドでcreate unsavedpingなどの一般的な組み込みユーティリティを使用したインスタンス

docker container run --rm -it --network [network_name] busybox

そして、BusyBoxのこれらのユーティリティはすべて、そのdockerカスタムネットワークで使用でき、exit BusyBox CLI

1
skosari

他のdockerイメージに使用する便利なベースに加えて。 Busyboxは、kubernetesにとって非常に便利なinitContainerも作成します。 https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

realコンテナが実行を開始する前にポッドファイルシステムをセットアップする何かが必要だとしましょう。busyboxはこれに最適です。

具体的な例として、公式のredisイメージはredisをrootとして実行しないため、ファイルシステムにアクセスできません。ディスクバックアップを使用してredisを実行している場合(たとえばappendonlyモード)、そのディスクのアクセス許可を開く必要があります。

redisのstatefulSetの有効な(おそらくハックな)initContainerは次のようになります。

      initContainers:
      - name: redis-data-permission-fix
        image: busybox
        command: ["/bin/chmod", "-R", "777", "/opt/data/redis"]
        volumeMounts:
        - name: data
          mountPath: /opt/data/redis
0