2017-11-06 6 views
1

目的:現在、コンテナからホスト上のMySQLデータベースに接続しようとしています。Docker:run -net =ホストオプションがコンテナ内の別のシェルに変更される

アクション:--net=hostオプションを使用してホスト専用モードでコンテナを実行しているので、localhost/127.blahを使用してホストにアクセスできます。

結果:通常、Iコマンド

docker run -it [image_id] bash 

を実行すると、私は[user]@[container_id](即ち、[email protected])とシェルプロンプトを得ます。私は

docker run --net=host -it [image_id] bash 

コマンドを実行したときしかし、それは(特にプロンプ​​ト[user]@[container_id]は太字でなくなりました)が、もはや太字では、ホストと同じプロンプトに私をドロップしません。私はファイル構造のために私がコンテナにいると言うことができます。

質問:何が起こっていますか?私はホスト上のデータベースに接続するための正しい軌道ですか?なぜそれが同じプロンプトであり、太字(ホスト)から太字(コンテナ)に変わるフォントタイプの変更の重要性は何ですか?

問題がある場合、ドッカーコンテナは、バージュマシン内で作成/実行されています。

答えて

1

通常、シェルプロンプトに表示されるコンテナIDは、コンテナのホスト名です。 --net=hostを使用すると、コンテナのホスト名はホストのホスト名と同じになります。コンテナが持つ通常のネットワーク名前空間を削除しました。したがって、あなたのコンテナのbashプロンプトは、あなたのホスト上のプロンプトに似ていて、それぞれに同じフィールドを表示します。 $PS1の値をチェックすることで、プロンプトのフォーマットを見ることができます。


編集:ここでは異なる基本イメージから$PS1の異なる値の比較だ(私のホストは、Debianであることを起こる):

$ echo $PS1 
${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ 

$ docker run -it --rm debian:latest 
[email protected]:/# echo $PS1 
${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ 
[email protected]:/# exit 
exit 

$ docker run -it --rm ubuntu 
[email protected]:/# echo $PS1 
\[\e]0;\[email protected]\h: \w\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ 
[email protected]:/# exit 
exit 

$ docker run -it --rm busybox 
/# echo $PS1 
\w \$ 
/# exit 

$ docker run -it --rm centos 
[[email protected] /]# echo $PS1 
[\[email protected]\h \W]\$ 
[[email protected] /]# exit 
exit 
+0

OK。確実にする必要があります。なぜ着色の変化? – user8897013

+0

ホスト上とコンテナ内の '$ PS1'の値を比較してください。おそらくいくつかの違いがあります。どちらか、または何らかの理由でttyオプション( '-t')がコンテナにそれを渡しませんでした。 – BMitch

+0

いいえ、私はそれがファイル構造のコンテナであることに同意しましたが、プロンプトについてはわかりませんでした。ありがとう! – user8897013

関連する問題