0

socketplane/openvswitch dockerイメージを使用します。彼らの指示に従って実行中のコンテナで OVS コマンドをビルドして実行すると、すべて正常に動作します。ただし、OVS コマンドを実行および実行するための bash スクリプトを作成しようとすると、コンテナーは次の値を返します。

db.sock: Database connection failed (Connection refused)

実際、問題はターミナルで次のコマンドを実行することです。

docker run -itd --cap-add NET_ADMIN [container-name]
docker exec $cid ovs-vsctl show

成功しますが、bash スクリプトで同じコマンドを実行しても成功しません。

これは私のbashスクリプトです:

#!/bin/bash
cid=$(docker run -itd --cap-add NET_ADMIN [container-name])
docker exec $cid ovs-vsctl show

ありがとう

4

1 に答える 1

0

私の考えでは、あなたの問題の根本はここにあります:

docker run -itd

それらは矛盾するパラメータだからです。

  • -d「バックグラウンドで実行」と言います。
  • -it「インタラクティブに実行し、tty をアタッチします。

だから私はあなたが試してみることをお勧めします:

#!/bin/bash
cid=$(docker run -d --cap-add NET_ADMIN [container-name])
docker exec $cid ovs-vsctl show

それができない場合、私の 2 番目の推測は、コンテナーの起動プロセスに少し時間がかかることです。コンテナーを起動するときkibanaにこれを取得します。開始に数秒かかるため、「許可が拒否されました」というエラーが発生します。

簡単なテストとして、そこに「スリープ」を貼り付けてみてください。ただし、それが問題である場合は、DB の起動を確認して、「必要な」場所を確認する必要があります。

それができない場合は、コマンドを使用してコンテナーに対話的に「アタッチ」しdocker exec -it <container> bash、コマンドを実行して、直接トラブルシューティングを行うことができます。

于 2016-02-12T15:32:42.930 に答える