-1

私はそれに依存関係を追加する必要がある画像があります。したがって、私はコンテナで実行されているときにイメージを変更し、新しいイメージを作成しようとしました。 私は後に次のコマンドでthis articleに従ってきた。そして、コンテナのシェルで、私は「NAME_OF_DependncyをインストールPIP」を使用して依存関係をインストールしたGoogle Cloud Containerのコンテナの変更から新しい画像を作成

kubectl run my-app --image=gcr.io/my-project-id/my-app-image:v1 --port 8080 
kubectl get pods 
kubectl exec -it my-app-container-id -- /bin/bash 

。 は、それから私は、コンテナのシェルから退出して、それが記事で説明したように、私は、このコマンドを使用して変更をコミットする必要があります

sudo docker commit CONTAINER_ID nginx-template 

しかし、私はでGoogle Kubernetesエンジンの対応するコマンドを見つけることができませんkubectl

私はGoogleコンテナエンジンでコミットを行うべきですか?

答えて

2

K8sバージョン1.8と同様です。ホットフィックスの変更をイメージに直接行う方法はありません。たとえば、実行中のコンテナから新しいイメージをコミットします。 execを使用して何かを変更または追加しても、コンテナが実行されるまでそのまま残ります。それはベストプラクティス K8sエコシステムではありません。

推奨方法は、Dockerfileを使用して、レジストリへの画像(パブリック/プライベート)とはK8Sマニフェストファイルでそれを展開することをプッシュすることができ、ことを必要とrequirements.Afterに応じた画像をカスタマイズすることです。あなたの問題

  • ソリューションは、あなたのイメージのためにDockerfileを作成します。

  • Dockerfileを使用してイメージをビルドします。
  • イメージをレジストリに移動します。
  • 展開マニフェストファイルとサービスマニフェストファイルを記述します。
  • マニフェストファイルをk8sクラスタに適用します。

今何かを変更/変更したい場合は、Dockerfileを変更/変更し、残りの手順に従うだけです。

コンテナは動作が変わらない(変更された設定、ファイルシステムの変更など)短い生物であることはご存知のように、Dockerfileで新しい動作や変更を加える方が良いでしょう。

Kubernetesマントラ
Kubernetesは、Googleクラウド、AWSやAzureのを使用しているかどうか、それは問題ではありません意味クラウドネイティブの製品です。各クラウドプロバイダーで一貫した動作が必要です。

+0

ドッカーが新しくなったので、Dockerfileであなたのソリューションを使って教えてもらえますか?既存のイメージを持つ新しいイメージを作成することは可能ですか?私はちょうど依存関係を追加する必要がありますので、それを行う最も直接的な方法は何ですか? – Majico

+0

各画像は透明度、カスタマイズ、バージョン管理などのためにDockerfileを使用して作成されます。既存のDockerfileがある場合は、依存関係を追加するだけです。たとえば、 'RUN pip install NAME_OF_Dependncy'はDockerfileの別の行です。 Dockerfileに各行のDockerfileと機能を書き込む方法についてさらにお読みになることをお勧めします。それはあなたに包括的な考えを与えるでしょう。もしあなたが私に知らせてくれると疑いがあれば。私はあなたに指示を与えるために最善を尽くします。 –

+0

私は既存のDockerFileを持っていない、私はちょうどdockerhubからそれをプルしている。私はDockeFileを書く方法を学ぶつもりですが、DockerFileを持たずに既存のイメージを使って新しいイメージを作成することが可能かどうかを教えてください。 – Majico

関連する問題