ぱーくんのサイト別館

ぱーくん plus idea

Dockerのvolumesでドライブやフォルダの共有がエラーになるときの対処法

 
この記事を書いている人 - WRITER -
ご訪問ありがとうございます(^^)
副業でネットビジネスに取り組んでいるぱーくんと申します。

激務でも増えない給料に失望し、将来のために別の収入源が欲しい!の一心でネットビジネスをはじめ、2018年4月に20万円達成。

ひと月36万アクセスあるサイトを作ったノウハウは無料で公開中。 ⇒⇒コチラ
ネットビジネスで未来を夢見れる方を一人でも増やしたいと思っています。

誰でも最初は初心者。
【やってみたいけど、初心者だから不安】
という方は、ぜひお気軽にお問合せください♪
詳しいプロフィールはこちら

私はWndows10Proの環境にDocker for Windowsをインストールして使ってますが、コンテナとホストの間でディレクトリを共有し、Volumesによるドライブの永続化を行おうとしたときに、エラーに悩まされました。

結局解決したのですが、その過程をメモしておきます。

 

 

ホストOSとDockerコンテナとのファイル共有の基本設定

基本的にはタスクトレイのDockerのsettingの「Shared Drives」にチェックが入っていることが必要です。

Settingの開き方

Dockerのsettingは、タスクトレイから開くことができます。

ドライブ共有の設定

ここでチェックの入っているディレクトリがコンテナと共有されます。

この「Shared」にチェックを入れて「Apply」ボタンを押すと、ユーザとパスワードの認証画面が出て、そのユーザの権限でドライブを共有できます。

別なユーザの権限にしたい時には、「Reset Credentials」を押すと、権限情報が消去されるので、再度認証できます。

 

上記でエラーが出る場合

しかし、「Apply」ボタンを押下したときに以下のようなエラーダイアログが表示されてしまいました。。


Firewall detected
A firewall is blocking file sharing between Windows and the containers.
See documenttation for more info.

ファイヤーウォールに阻まれて、ファイルシェアできなかった旨のエラーです。

この問題に対処するための情報へのリンクがありますね。

結局、多くの場合は、このリンクの情報のように

Firewallの許可の設定に、Tcp 445番ポートの、10.0.75.1から10.0.75.2への通信を許可する

設定を行えばうまくシェアできます。

ただ、環境によって、すんなりいく場合と行かない場合があるんですよね。。

 

問題の切り分け(上記の対応でうまく行かない場合)

ファイアウォールによってシェアが失敗しているのか、それともほかの原因なのかを判断するために、一回ファイアウォールの設定を無効にしてみました。

これで「Shared」にチェックを入れて「Apply」ボタンを押して成功したら、何かが445番ポートを遮断していると判断できます。

私の場合は、これで成功したので、ファイアウォール周りに原因がありそうでした。

ただ、Windowsの設定を見ても、以下のように、ちゃんと通信は許可しているんですよね。。


もう一つの原因は、Windowsのファイアーウォールの設定では通信が許可されているにも関わらず、セキュリティソフトで遮断されている場合があります。

もし、別途セキュリティソフトを入れている場合は、そちらの設定も確認してみてください。
(私の場合は、特にセキュリティソフトを入れていなかったので、別の原因でした。)

 

さらにもう一つの原因は、上記のポート開放の設定が、Dockerのネットワークに適用されていないということです。

どういうことかというと、

コントロールパネルの「ネットワークと共有センター」のところに、Dockerのネットワーク設定があります。

「vEthernet(DockerNAT)」というネットワークです。

 

実は、WindowsとDockerコンテナはこのネットワークを介して通信しているようで、このネットワークで、先ほどの445番ポートの通信ができるようになっている必要があります。

 

 

私の場合は、上記のように、「vEthernet(DockerNAT)」が所属しているネットワークが「パブリックネットワーク」になっていました。

で、私のファイアウォールの設定だと、「パブリックネットワーク」は445番を遮断するような設定になっていたわけです。

この制限を回避するために、「vEthernet(DockerNAT)」のネットワークを「プライベート」に変更することで、ようやく共有に成功しました!

 

やり方は以下の通り。

WindowsのPower Shellで

と打つと、ネットワークの状態を確認することができます。

こんな感じ。

これを、「vEthernet(DockerNAT)」の「NetworkCategory : 」が「Public」となっていることから、パブリックネットワークに所属していることが分かります。

 

これをプライベートに変更するには、

のようにします。

InterfaceIndex は、上記コマンドの結果
InterfaceIndex : 4

から確認した数字を入れます。

これで、ネットワークがパブリック→プライベートに変わりました。

この後、再度Settingから「Shared Drives」にチェックを入れ、「Apply」ボタンを押すことで、共有に成功しました。

 

この設定を行う前には、

のコマンドで、

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Drive sharing seems blocked by a firewall.

のようなエラーが出ていましたが、適用後は、エラーなく共有できるようになったことでも確認できます。

この記事を書いている人 - WRITER -
ご訪問ありがとうございます(^^)
副業でネットビジネスに取り組んでいるぱーくんと申します。

激務でも増えない給料に失望し、将来のために別の収入源が欲しい!の一心でネットビジネスをはじめ、2018年4月に20万円達成。

ひと月36万アクセスあるサイトを作ったノウハウは無料で公開中。 ⇒⇒コチラ
ネットビジネスで未来を夢見れる方を一人でも増やしたいと思っています。

誰でも最初は初心者。
【やってみたいけど、初心者だから不安】
という方は、ぜひお気軽にお問合せください♪
詳しいプロフィールはこちら

- Comments -

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Copyright© ぱーくん plus idea , 2019 All Rights Reserved.