私はGoogle CloudプラットフォームとDockerにかなり慣れていないので、ノードのクラスターをセットアップし、リポジトリをコピーしてClojure REPLをパブリックポートで実行するDockerfileを作成しました。私のIDEから、そして私のコードで遊んで、素晴らしい!
それはREPLはおそらくSSHを介してトンネリングする必要がありますが、ここで私の問題が始まります。SSHへの適切な場所を見つけることができませんDockerが実行するリポジトリに変更を加えるためREPL on:
Adding or removing SSH keys for all of the instances in your project
part ここ 。SSH経由でソースファイルを編集したいのですが、Dockerコードリポジトリにアクセスする必要があります。どうすればいいのかわかりません。
これはアプリケーションをデプロイするための典型的な方法ではないことを理解しているため、複数のノードを修正されたdockerコードベースで動作させることができるかどうかさえわかりません(ノードは何らかの形でJVMを共有しますか?).
具体的に私の質問は、ドッカーコンテナーにSSHで接続してコードベースにアクセスする方法です。
DockerがREPL= on
クラスターを作成するとき、Googleクラウドプロジェクトで多数のノードVMをプロビジョニングします。 https://console.cloud.google.com/compute/instances を見ると、それらが表示され、それぞれに外部IPアドレスがあり、sshすることができます。次に、ローカルポートをポッドIPアドレスに転送するノードVMへのsshトンネルを作成します。
Clojureアプリの複数のレプリカを実行している場合、アプリを更新するには各レプリカに個別に接続する必要があることに注意してください。
Kubernetes 1.5.0のコマンド形式:
kubectl exec -it <POD NAME> -c <CONTAINER NAME> bash
インスタンスのリスト:
gcloud compute instances list
インスタンスへのSSH:
gcloud compute ssh <instance_name> --zone=<instance_zone>
インスタンスで、実行中のプロセスとそのコンテナIDをリストします。
Sudo docker ps -a
コンテナに接続します:
Sudo docker exec -it <container_id> bash
Execコマンドを使用してコンテナに接続する最良の方法。
コンテナーを実行しているdockerに接続する
docker exec -it YOUR_CONTAINER_ID bash
コンテナを実行しているKubernetesに接続します。
kubectl exec -it YOUR_CONTAINER/POD_NAME bash
指定されたネームスペースでコンテナを実行しているKubernetesに接続します。
kubectl exec -it YOUR_CONTAINER/POD_NAME -n YOUR_NAMESPACE bash
ポッドが現在のネームスペースにある場合、ポッドのリストを取得します。
kubectl get pods
ポッドを選びます。 bashセッションを実行します:
kubectl exec -it [POD_NAME] -- /bin/bash
または、別のネームスペースで必要なポッドを検索します。
kubectl get pods --all-namespaces
ポッドを選択して、bashセッションを実行します
kubectl exec -it [POD_NAME] --namespace [NAMESPACE] -- /bin/bash