Machine: docker-machineを使用して--driver = genericおよび/または--urlを使用してホストをインポートしても機能しません。

作成日 2015年05月23日  ·  62コメント  ·  ソース: docker/machine

こんにちは皆さん
これは問題ではありません。 これがこの質問をするのに間違った場所であるならば、すみません。 これが適切な場所でない場合は、適切な場所を教えてください。

Docker-machineを使用して、Virtualbox、クラウドプロバイダードライバーなどのドライバーを使用してさまざまなホストに接続できることを理解しています。ベアメタルLinux内でDockerを実行しているホストが既にある場合、これをdocker-machineと統合するにはどうすればよいですか? docker-machineがなくても、特定のポートでDockerデーモンを実行し、DockerクライアントからDockerデーモンのIPとポートに外部接続することで同じことができます。 docker-machineには、ドライバーなしでホストを作成するオプションがありますが、それはこの目的のためですか? 接続方法が見つかりませんでした。

ありがとう
Sreenivas

drivegeneric kinbug

最も参考になるコメント

@nathanleclaireこれに関する更新はありますか? docker-machineを使用して、別のコンピューターから作成したMicrosoftAzureで実行されているDockerホストに接続する方法を理解しようとしています。 現在、解決策はありません。

全てのコメント62件

こんにちは@smakam 、私はあなたが探しているのはurlドライバーだと思います: http

こんにちは@nathanleclaire
返信ありがとうございます。
私はあなたが言及したリンクを見ました、そして私は次のことを試みました、運がありませんでした。

まず、TLSなしで試しました。
Ubuntuマシンでは、Dockerエージェントを起動するためにこれを行いました。
sudo docker -d -H unix:///var/run/docker.sock -H tcp://192.168.56.101 :2376&

docker-machineをインストールしたWindowsでは、次のようにしました。
$ docker-machine create --url = tcp://192.168.56.101 :2376 custom6
←[34mINFO←[0m [0000] "custom6"が作成され、アクティブなマシンになりました。
$ docker-machine ls
名前アクティブなドライバーの状態URLSWARM
custom6 *なしtcp://192.168.56.101 :2376

このエラーが発生します:
$ docker-machine env custom6
←[31mFATA←[0m [0000] open C:\ Users \ srmakam.docker \ machine \ machine \ custom6ca.pem:システムは指定されたファイルを見つけることができません。

docker-machineがTLSを適用するかどうかはわかりません。 証明書とキーを使用してDockerエージェントを起動し、Dockerクライアントを試してみましたが、それもうまくいきませんでした。

ありがとう
Sreenivas

基本的に、現在の形式でTLSを義務付けています。 独自のCAと証明書/キーを設定する場合は、DockerMachineの--tls-ca-cert--tls-ca-key gloablオプションを介してそれらを使用できると思います。 @ehazlettコメントはありますか?

こんにちは

TLSを試してみましたが、まだ機能させることができませんでした。何が欠けているのかわかりません。
Ubuntuホストでdockerを起動しました:
sudo / usr / bin / docker -d --tlsverify --tlscacert =

/ca.pem --tlskey =/key.pem --tlscert =/cert.pem --host = unix:///var/run/docker.sock --host = tcp://0.0.0.0 :2376

次に、ドライバーなしでdocker-machineホストを作成しようとしました。
docker-machine --tls-client-cert =

/cert.pem --tls-ca-cert =/ca.pem --tls-client-key =/key.pem create --url = tcp://:2376 custom3

環境を確認しようとすると、次のエラーが発生します。
$ docker-machine env custom3
←[31mFATA←[0m [0000] open C:\ Users \ srmakam.docker \ machine \ machinescustom3ca.pem:システムは指定されたファイルを見つけることができません。

ありがとう
Sreenivas

--tls-ca-certなどの設定はグローバルであるため、マシンに関連するすべてのものに既存のCA、クライアントなどを使用することをお勧めします。

Dockerデーモンについては、CAとサーバーの証明書/キーを使用する必要があります。上記ではCA証明書を使用していますが、クライアントキーと証明書を使用しています。 次のようなものが必要になります。

docker -d --tlsverify --tlscacert ca.pem --tlscakey ca-key.pem --tlscert server.pem --tlskey server-key.pem

@ehazlett
コマンドラインでオプションを指定するdocker-machinecreateの「certs」ディレクトリでグローバル設定を使用しようとしましたが、machines /に「ca.pem」がないという文句が表示されます。\ディレクトリ。
「server.pem」と「server-key.pem」を取得するにはどうすればよいですか? 生成する必要がありますか?

docker-machineを使用せずに、TLSを使用して別のマシン上のdockerclientとdockeragentを接続できました。

ありがとう
Sreenivas

使用されているコマンドライン引数を表示できますか? 証明書を指定する場合、マシンはそれらを使用する必要があります。 そうでない場合、それはバグです:)

こんにちは@ehazlett
まず、次のようなDockerエージェントを開始しました。
sudo / usr / bin / docker -d --tlsverify --tlscacert = / home / xxx / .docker / machine / certs / ca.pem --tlskey = / home / xxx / .docker / machine / certs / key.pem --tlscert = / home / xxx / .docker / machine / certs / cert.pem --host = unix:///var/run/docker.sock --host = tcp://0.0.0.0 :2376

次に、次のようにdocker-machineクライアントを起動しました。
docker-machine --tls-ca-cert = / home / xxx / .docker / machine / certs / ca.pem --tls-client-key = / home / xxx / .docker / machine / certs / key.pem- -tls-client-cert = /home/xxx/.docker/machine/certs/cert.pem create --url = tcp://0.0.0.0 :2376 custom3

環境を設定するときにこのエラーが発生しました:
xxx @ ubuntu :〜$ docker-machine env custom3
/home/xxx/.docker/machine/machines/custom3/ca.pemを開きます:そのようなファイルまたはディレクトリはありません

ここでは、同じUbuntuマシンでdockeragentとdocker-machineを実行しています。 Ubuntuでdockeragentを実行し、Windowsでdocker-machineを実行すると、同様のエラーが発生します。

ありがとう
Sreenivas

Dockerエンジンにkey.pemcert.pemを使用しないでください。 エンジンにはサーバーキー/証明書のペアが必要です(マシンがこれらを作成します)。

環境については、どのようにしてcustom3マシンを作成しましたか? そのファイルが存在しない場合、作成中に問題が発生したようです。

こんにちは@ehazlett
Dockerエンジンはどのように起動すればよいですか? 私の理解によると、docker-machineはTLSの使用を義務付けています。

これが私がcustom3マシンを作成した方法です。 これは私にエラーを与えませんでした。
docker-machine --tls-ca-cert = / home / xxx / .docker / machine / certs / ca.pem --tls-client-key = / home / xxx / .docker / machine / certs / key.pem- -tls-client-cert = /home/xxx/.docker/machine/certs/cert.pem create --url = tcp://0.0.0.0 :2376 custom3

ドライバーをdocker-machineで使用した場合のように、サーバーキーと証明書のペアを手動で作成する必要がありますか?

ありがとう
Sreenivas

@smakamこれは正しいはずです。 既存のCAに基づいてサーバーキーを生成する必要があります。 問題があるかどうかを確認するために、いくつかのテストを行います。

@smakamこの問題に関する更新はありますか、それとも閉じることができますか?

@nathanleclaireまだ動作させることができません。 ここに記載されている一般的なドライバー手順を使用してdocker-machine3.0を試してみました(http://blog.docker.com/2015/06/docker-machine-0-3-0-deep-dive/)
これは言及されていることです:
docker-machine create -d generic \
--generic-ssh-user ubuntu \
--generic-ssh-key〜 / Downloads / manually_created_key.pub \
--generic-ip-address 12.34.56.78 \
密林

.pubはタイプミスであり、秘密鍵を与える必要があると思います。 2つの異なるホストで2種類のエラーが発生しました。

ケース1:
SSHキーをインポートしています...
マシンの作成中にエラーが発生しました:終了ステータス1
プロバイダーをチェックして、マシンと関連するリソースが適切に削除されたことを確認する必要があります。

ケース2:
SSHキーをインポートしています...
デーモンが起動しているかどうかを確認するためのSSHコマンドの取得中にエラーが発生しました:終了ステータス1
デーモンが起動しているかどうかを確認するためのSSHコマンドの取得中にエラーが発生しました:終了ステータス1

ところで、docker-machineの詳細なログはどこに保存されますか?
Windows用のdocker-machineとLinuxの両方で試してみました。

ありがとう
Sreenivas

同じ問題。
--urlと-dの両方の一般的な方法は機能しません。

元のポスターと同じ手順を試しましたが、同様の問題が発生しました。その時点で、汎用ドライバーを試したところ、ケース1(CentOS 7)と同様のエラーが発生しました。

同じ問題。 --urlを使用して証明書を指定することはできません。

Dockerチームが私たちを段階的に説明する短いチュートリアルを書くことをお勧めするかもしれませんが、それは非常に役に立ちます。

anyconnect vpnが接続されている場合も同じ問題が発生します。接続せずにラップトップを再起動すると、問題は解決します。

問題の+1。
リモートホスト上の既存のDockerセットアップでdocker-machine create --url=を使用しようとしましたが、うまくいきませんでした。 DMは$HOME/.docker/machine/machines/<name>/ca.pemからTLSを取得しようとして失敗します。

同じ問題。 同じ手順を試しましたが、サーバー証明書/キーが生成されませんでした。
docker-machineバージョン0.4.0
Dockerバージョン1.8.0

同じ問題。 同じ手順を試しましたが、サーバー証明書/キーが生成されませんでした。
docker-machineバージョン0.4.1
Dockerバージョン1.8.1

@csokun @ miracle-in-sunday @narqo一般に、 --urlすると、「自分の証明書を持参する」と想定されますが、コードの一部が機能しなくなっているため、壊れている可能性があります。

証明書とキーを自動的に生成する場合は、 genericドライバーを試してください

それがあなたのユースケースでうまくいかない場合、あなたが取っている正確なステップとあなたが見ている結果を詳述する別の問題を提出するように頼むことができますか?

ありがとう!

こんにちはみんな、あなたは指定された--virtualbox-hostonly-cidrで試しましたか? 私のために働いた:

BartSlaman @ VLRNB176〜
$ docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.99.100/24" dev4
VirtualBoxVMの作成...
SSHキーを作成しています...
VirtualBoxVMを起動しています...
VMを起動しています...
Dockerをこのマシンに接続する方法を確認するには、C:\ Program Files(x86)\ Git \ bindocker-machine envdev4を実行します。

BartSlaman @ VLRNB176〜
$ docker-machine env dev4
DOCKER_TLS_VERIFY = "1"をエクスポートします
export DOCKER_HOST = " tcp://192.168.99.101 :2376"
export DOCKER_CERT_PATH = "C:\ Users \ BartSlaman.docker \ machine \ machines \ dev4"
DOCKER_MACHINE_NAME = "dev4"をエクスポートします

よろしく
バートスラマン

この問題に関する更新はありますか? --urlを--tls- *で試しましたが、「open /Users/user/.docker/machine/machine/ss/ca.pem no such fileordirectory」というエラーが発生しました。 docker-machineバージョン0.4.1を使用しています

ここでも同じですが、作成時にエラーが異なります。

SSHキーをインポートしています...
SSH cmdエラー!
コマンド:sudo hostname internal && echo "internal" | sudo tee / etc / hostname
エラー:終了ステータス1
出力:sudo:ttyが存在せず、askpassプログラムが指定されていません

そして、eval "$(docker-machine env internal)"を実行すると:
/Users/marlon/.docker/machine/machines/internal/ca.pemを開きます:そのようなファイルまたはディレクトリはありません

これは、証明書が生成されていないことを意味します。

おかしなことに、「docker-machinesshinternal」を実行しているマシンにSSH接続できます。

--urlを機能させ、DockerMachineで作成されたDigitalOcean上の既存のDockerエンジンを指すことができました。

--urlまたはnoneドライバーを使用するには、ホストの作成に使用したマシンに既存の~/.docker/machine/machines/dobox/フォルダーをコピーし、 cert.pemkey.pemを削除しました。 id_rsa.pubid_rsaconfig.jsonca.pemserver.pemserver-key.pem残す)。 次に、以前から新しく作成したディレクトリ内に新しいクライアント証明書/キーペア(https://docs.docker.com/articles/https/、「クライアント認証用」から開始)を生成し、それを自分のマシンにコピーしました。から接続しようとしています。 最後に、 docker-machine create --url=tcp://SOME_IP:2376 doboxを使用してリモートホストを追加し、Docker Machineが期待する場所に証明書を移動しました: ~/.docker/machine/machines/dobox/ 。 フォルダはすでに存在し、 config.jsonが含まれているはずなので、証明書を追加するだけです。 Dockerが使用しているTLSフラグ/認証スキームを変更しようとはしていません。

--tlsverify \
--tlscacert="/home/roberto/.docker/machine/machines/dobox/ca.pem" \
--tlscert="/home/roberto/.docker/machine/machines/dobox/cert.pem" \
--tlskey="/home/roberto/.docker/machine/machines/dobox/key.pem" \
-H=tcp://SOME_IP:2376

これで、2番目のクライアントマシンでdocker $(docker-machine config dobox) imagesまたはeval "$(docker-machine env dobox)"などを実行できます。

docker-machineバージョン0.4.0
Dockerバージョン1.8.2

docker.whoseのユーザー名とパスワードでクライアントとサーバーを認証する方法
https://docs.docker.com/reference/api/docker_remote_api_v1.20/を使用してい
Dockerクライアントとサーバーを同じホストマシンに配置します。
また、両方が同じマシン上にない場合はお知らせください。

神のために、既存のDockerマシンをインポートする方法のチュートリアルを追加してください。
2台の別々のPCから2つの異なるクラウド紺碧のマシンを作成しましたが、別のPCで作成された紺碧のマシンにPCから接続できなくなりました。
すでに2晩過ごし、すべての提案を試しましたが、結果はありませんでした。

@nathanleclaire wdyt?

@ dmp42正確には何についてですか? --urlが壊れていることはよく知られている問題であり、ポータブル構成で複数の異なるコンピューターからのマシンの使用をすぐにサポートしたいと考えています。

PCからPCへの既存のホストのインポートが今のところ機能していない(またはいくつかの既知の問題がある)という明確な声明が公式ドキュメントまたはここgithubのどこかにあるといいと思います。

@baio +1

標準のCentosリポジトリから標準のDockerパッケージをすでにインストールしているCentos7ホストがあります。つまり、DockerWebサイトのパッケージを使用していません。

ローカルワークステーションから、汎用ドライバーを使用してこのCentos 7ホスト用のマシンを作成しようとすると、「docker-engine」というパッケージをインストールしようとすると、「終了ステータス1」で失敗します。

Dockerがリモートホストにすでにインストールされている場合、これは機能しないと思いますか?

関連:#2270

私は最小限の再現可能な例があると思います:

簡単なVagrantfileを作成する

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Box
  config.vm.box = "ubuntu/precise64"
  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box"

  # To make this easily reproducible
  config.ssh.insert_key = false
  config.vm.network "private_network", ip: "192.168.50.4"

end

VMを起動します

$ vagrant up

必要なキー、ユーザー、IPを使用してSSH接続できることを確認します

ssh -i ~/.vagrant.d/insecure_private_key [email protected]

^これは私のために働きます

Dockerマシンを作成する

$ docker-machine create -d generic --generic-ssh-user vagrant --generic-ssh-key ~/.vagrant.d/insecure_private_key --generic-ip-address 192.168.50.4 repro

Importing SSH key...
Error creating machine: Maximum number of retries (60) exceeded
You will want to check the provider to make sure the machine and associated resources were properly removed.

あなたたちは同じ結果を得ていますか? デバッグを支援するために他に何かできることがあれば教えてください。

ここで同じ問題。 --url (ドライバーなし)を以下で動作させることができません:

  • OSXでのDockerMachine 0.5.1(クライアント側)
  • Docker 1.9(リモートサーバー側)
  • リモートデーモンは次のもので始まりました:
--tlsverify -H=unix:///var/run/docker.sock -H=0.0.0.0:2376 --tlscacert=/root/.docker/ca.pem --tlscert=/root/.docker/cert.pem --tlskey=/root/.docker/key.pem
  • ~/.docker/machine/machines/mymachine/下にインストールされたクライアント証明書(ca、key、c​​ert)

docker-machine env mymachineと入力すると、次のように失敗します。

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "": open /Users/f2i/.docker/machine/machines/anakin/server.pem: no such file or directory
You can attempt to regenerate them using 'docker-machine regenerate-certs name'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

Wihout docker-machineはすべて問題ないようです:

> docker --tlsverify -H=myhost:2376 ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS 

不思議に思うのですが、ジェネリック( --driver "generic" --generic-ip-address ...ドライバーなし( --driver "none" --url ...)の本当の違いは何ですか?
汎用接続はSSHを介して(リモートサーバーで直接dockerを使用するようなものです)、TCPを使用してホストに接続するドライバー

したがって、ドライバーを使用しserver.pemserver-key.pemが必要なのはなぜですか? それらは機械によって管理されるべきではありません。 正しい ?

それらの最後のPEMファイルを提供しても、次のことに失敗します。

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "": crypto/tls: failed to parse private key
You can attempt to regenerate them using 'docker-machine regenerate-certs name'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

「ドライバーなし」は、開発に使用される統合テストドライバーです。 しかし、十分にハッキングすれば、セットアップを使用して既存のマシンを登録できます。 将来のリリース(#2437)で削除される予定です。 現在のドキュメントは、このnoneドライバーについて誤解を招く可能性があります。

genericドライバーを使用して、任意のホストにdockerを登録して適切にインストールする必要があります。
少なくとも、ターゲットホストでdockerデーモンを再起動することに注意してください。 ただし、sshアクセスを提供する限り、「汎用」マシンをDockerマシンに登録するための信頼できる方法です。

@jeanlaurent genericドライバーの問題は、 dockerが既にインストールされている場合(ホスト名の変更、 yum update )にマシンに影響を与えることです。 私たちの多くが言おうとしているのは、 noneドライバーには一流のユースケースがあり、それが適切に機能すれば、(対象のドライバーに加えて)多くの人にとって価値のある機能になると思います。 。

これについては@metasimに同意してnoneドライバーは、非常に一般的な使用例です。 これは、リモートDockerAPIを操作するための最も基本的な方法の1つです。 testという名前を付けるのは残念です。 誤解を招く可能性があるのは、新しいマシン( docker-machine create )を作成/管理するのではなく、既存のマシンにのみ接続するという事実から来ています...

何らかの方法で既存のマシンをdocker-machineに「登録」できないようにするべきではないと言っているのではなく、適切に登録する必要があります。 noneドライバーには多くの混乱があり、多くの場所で機能せず、人々はそれを誤用しています。 ここでの目的は、実際のregister existing machine機能の準備をすることです。

しかし、マシンがnoneドライバーを介してdocker-machineに「ハッキング」されると、チェーンを破壊するものがたくさんあります-> restartupgrade 、およびssh明らかに。 jsonファイルを手動で変更することは、 noneドライバーを使用して実際にマシンを登録するのと同じくらい効率的です。

@metasim genericドライバーを「マシンをマックしない」にアップグレードすることは、それを処理する1つの方法です。

@vpusher適切な登録機能を設計する必要があるかもしれません。

@jeanlaurentご回答ありがとうございます。 このユースケース(既存のキーを含む)を処理するためにgenericをアップグレードすることは、良い方法かもしれないことがわかります。 ただし、「関心の分離」の精神で、新しいドライバー( existing ?、 preconfig ?、 manual ?、 diy検討することをお勧めします。

ご参考までに。 #2260と#2269(クローズされていますが、実際には対処されていません)は、 noneドライバーに関するこの混乱の一部をキャプチャする試み

PS:このユースケースでは、一部のコマンドが明示的にサポートされていないことは完全に許容できると思います(たとえば、 restartupgradeなど)。

@metasimうん、専用ドライバーはおそらく実際に登録機能を処理するための最良の方法ですが、それだけではありません。専用コマンドは別のものです。 ただし、その方法を決定する前に、明確化/定義する必要があります。その場合、 docker-machineにdockerをインストールせずに新しいマシンを登録する必要があります。

たとえばPR#2442を見ると、DockerバージョンのDockerホストにpingを実行しています。 ある時点でアップグレードを提供できるようにするか、Dockerホストが現在のDockerクライアントでは古すぎることを警告するためです。 Dockerデーモンをインストールしなかったマシンでは、これは困難であるか、少なくとも非常に不安定であることがわかります。

genericドライバーを何らかの方法で更新できると考えると、sshアクセスを提供せずに誰かがマシンをdocker-machineに登録したいのはどのユースケースなのか疑問に思います。

君は ? それらをリストしましょう。

noneのユースケースを定義すること、および/またはここで非推奨にする可能性についての解説: https

私の気持ちは、私たち(マシンチーム)は次のことをすべきだということです。

  • 機能の非推奨に関するDockerの既存のガイドラインに従ってください(2リリースサイクルで非推奨)。
  • したがって、 noneドライバーを非推奨にする場合は、0.7.0まで完全に削除するのを待つ必要があります。
  • 暫定では、既存のショーストッパーとバグ修正noneかどうか、それはの(理想の将来のワークフローを定義する方のドライバ、および作業をimport / registerまたは変更genericドライバー)。これにより、関心のあるユーザーがフォローし、パイプを通過する変更に備えるための十分な時間を確保できます。

@dgageot @jeanlaurentそれはどのように聞こえますか?

@jeanlaurent sshがかなり必要になることがわかりますが、それほど悪くはありません。 これまでは、ほとんどすべてがRESTAPIを介して実行できると思っていました。

私は主にdocker-machineを、 dockerが別のホストと通信するために必要な環境変数を設定するためのツールとして使用しています。 upgrade / restartなどのコマンドは使用しません。 私のDockerホストはvSphereにあり、vOrchestratorワークフローを通じて作成されたカスタムテンプレートがあります。docker-machineでvSphereドライバーを使用することはできません。

そうは言っても、自分のユースケースだけがユースケースではないことは理解していますが、少なくとも検討すべきことだと思います。

少なくとも私の目的では、おそらくdocker-machineをシェルエイリアスに置き換えることができます。

これが役立つ場合の使用例の例を次に示します。

Elasticbeanstalkには多くの利点(自動スケーリングやマシンの再起動など)があるため、docker-machineの代わりにelasticbeanstalkを使用してAmazonでec2マシンを作成したいと思います。 それらをdocker-machineに登録し、docker-swarmを使用して制御したいと思います。

これらのマシンをdocker1.9にアップグレードするのは簡単ですが、一部のAmazon linux(古代のcentosフォーク)を実行し、genericはそれらで動作しません。 そこにあるdockerエンジンにはtlsがないため、プレーンdockerを使用してリモートでそれらを管理するために使用するトリックは、socatを使用してlocalhost:2375でdocker.sockを公開することです(https://github.com/sequenceiq/docker-のように) socat)そして、ssh -i id_rsa [email protected] -L 2375: localhost:2375- Nのようなものを使用してローカルマシンからsshトンネルを実行します。 次に、docker --tls = false -H tcp:// localhost :2375を使用してネットワーク経由で接続できます。

たくさんの体操です。 sshアクセスと動作するdockerセットアップ(sslがなくても)の組み合わせは、多くの興味深いケース(アップグレードなし、他の人が気付いたように再起動しますが、とにかくそれらを使用することはありません)でdocker-machineが必要とするすべてです。

それがお役に立てば幸いです。

@bonitaoあなたがそれを綴って

既存のホストでDockerマシンを再び使用しようとしています... noneドライバー周辺の@metasimステートメントに同意します... generic以来、コミュニティにとって今日の価値がありますnone動作させて、名前をtestに変更する提案があることを知るために膨大な時間を費やしました。 @nathanleclaire genericドライバーを説明どおりに機能させる計画はありますか?

私はhttps://github.com/docker/machine/issues/2628でかなりの時間を費やしましたが、これは私たちが持っているユースケースです... Dockerで会社全体の既存のチームをサポートしています...

他の場所で作成したCIサーバーから紺碧のDockerマシンに接続する方法を理解しようとして、完全に理解が不足していると想定して、グーグルを続けてきました。 私はここに行き着きましたが、これが実際には不可能であることに驚いています(ハッカーなしでは)。

ワークステーションから紺碧のDockerマシンインスタンスを作成して完全に稼働させましたが、CIスクリプトからそれを制御してデプロイできるようにしたいだけです。CIスクリプトは、多数のCIスレーブインスタンスから実行できます。 これが達成されることになっている公式の方法は本当にありませんか?

Dockerを更新しましたが、古いdocker-machineインスタンスに接続できなくなりました。 私は得る

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "xxxxx:2376": open : no such file or directory
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

regeenrate-certsコマンドは私に与えます

Regenerate TLS machine certs?  Warning: this is irreversible. (y/n): y
Regenerating TLS certificates
Detecting the provisioner...
Installing Docker...
Copying certs to the local machine directory...
Copying ca.pem to machine dir failed: open : no such file or directory

面白いのは私ができることです

docker-machine ssh

問題なく..

修正はありますか?

シナリオ:DockerとTLSが有効になっている既存の稼働中のサーバー。

既存のサーバー/マシンをdocker-machineに追加します。

docker-machine --tls-ca-cert path/to/ca.pem --tls-ca-key path/to/ca-key.pem --tls-client-cert path/to/client.pem --tls-client-key path/to/client-key.pem create --driver none --url tcp://HOST:2376 NAME

ユーザーディレクトリ(〜/ .docker / machine / machine / NAME)に、「cert.pem」および「server.pem」と同じクライアント証明書を追加し、「key.pem」および「server-key」としてクライアント証明書キーを追加します。 pem」は、関連するSSH設定を含めるようにconfig.jsonも調整します。

私はこの問題を提起しました。 私は最近これを機能させました、そして誰かが参照したい場合に備えて私はここ(https://sreeninet.wordpress.com/2015/05/31/docker-machine/)に指示を置きました。

これが私のためにちょっと働いているスクリプトです:
https://github.com/docker/machine/issues/3344#issuecomment -212536797

@devcrust正確にはそれらはどこ

path/to/ca.pem
path/to/ca-key.pem
path/to/client.pem
path/to/client-key.pem

???

$ ls certs/
ca-key.pem  ca.pem  cert.pem  key.pem
$ ls machines/adhoc/
ca.pem  cert.pem  config.json  id_rsa  id_rsa.pub  key.pem  server-key.pem  server.pem

正しく設定できません。 私もこの問題を抱えています:

Copying ca.pem to machine dir failed: open : no such file or directory

0.6.0にアップグレードした後.... 12台のマシンへのtcpアクセスを失いました

@nathanleclaireこれに関する更新はありますか? docker-machineを使用して、別のコンピューターから作成したMicrosoftAzureで実行されているDockerホストに接続する方法を理解しようとしています。 現在、解決策はありません。

解決策:_(あなたが望む)_

docker-machine add <🖥️name>-driver <☁️️providerdriver>

とても悲しいので、多くの時間が経過しましたが、この問題を解決するための機能はまだ導入されていません。

それが価値があるもののために。 汎用ドライバーを使用してマシンを作成できますが、それによってすべてのコンテナーが再起動します。
再起動の追加:コンテナを常にオンにすると、コンテナが停止しないことが保証されます。 docker-machineaddオプションを2番目にします

私はdocker-machineaddオプションを持つためのゲームでもあります。

マシン共有へのアプローチが異なる2つのプロジェクトを次に示します。

@jeanlaurent

君は ? それらをリストしましょう。

私のアイデアは、多数のコンテナーが実行されている状態で、ローカルマシンを既存の物理サーバーに接続することでした。 docker-machine create --driver genericすると、おそらくそれらが停止します。 なぜdockerを再起動する必要があるのだろうか...

sshでコマンドを実行するだけで済みますが、その説明から、 docker-machineも使用できるように見えました。

ただし、コンピューターからVMを作成し、別のコンピューターからVMを管理したい場合。 または、ローカルOSを再インストールしました...またはVMの制御を他の誰かに委任したい...

PS Dockerを使って最初の一歩を踏み出しているので、見逃している点があるかもしれません...

@ x-yuriマシンを手動で「作成」するには、ファイルを.docker/machine/machinesからコピーして、パスを調整するだけです。

このページは役に立ちましたか?
0 / 5 - 0 評価