Dockerが理解できたと思いました。私は、多くの依存関係を持つソフトウェアをパッケージ化する方法として理解していました。それからDockerHubでつまずいた
https://hub.docker.com/_/busybox/
これはBusyBoxのイメージです。これは、組み込みシステム向けの小さなLinuxバイナリです。次に、上部のコメントは次のとおりです。
Busyboxは最高です:)レジストリ全体で、バイトあたりの最も有用なコンテナです。
しかし、私はこのイメージが存在する理由をまったく理解していないため、Dockerが存在する理由を実際には理解していないと思います。 BusyBoxドッカー画像のポイントは何ですか?
Busyboxドッカーイメージは、busyboxが完全なLinuxディストリビューションを必要とせずに依存関係チェーンを満たすことができるコンテナを構築している場合に役立ちます。
多くの場合、組み込みアプライアンスは、procfs、sysfs、&cをマウントするinitスクリプトであるbusyboxの静的にリンクされたコピーのみで構成できます。 busyboxが提供するツールを使用してから、実際のアプリケーションを呼び出します。 Dockerがファイルシステムの名前空間を設定すると、その初期化スクリプトも必ずしも必要ではありません。
しかし、私はこのイメージが存在する理由をまったく理解していないため、Dockerが存在する理由を実際には理解していないと思います。 BusyBoxドッカー画像のポイントは何ですか?
私はちょうどBusyBoxをdockerで使い始めましたが、今のところ-rmコマンドでcreate unsavedpingなどの一般的な組み込みユーティリティを使用したインスタンス
docker container run --rm -it --network [network_name] busybox
そして、BusyBoxのこれらのユーティリティはすべて、そのdockerカスタムネットワークで使用でき、exit BusyBox CLI
他の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