プログラムを実行するためのコンテナを作成しようとしています。事前構成済みのイメージを使用しており、プログラムを実行する必要があります。ただし、これは機械学習プログラムであり、実行するにはコンピューターからデータセットを取得する必要があります。
ファイルが大きすぎるため、コンテナにコピーできません。コンテナで実行されているプログラムがコンピュータのローカル ディレクトリ内のデータセットを検索するのが最適ですが、その方法がわかりません。
この参照を何らかの docker コマンドで実行する方法はありますか? または Dockerfile を使用する方法はありますか?
ベストアンサー1
はい、できます。あなたが説明しているのはバインドマウントです。https://docs.docker.com/storage/bind-mounts/この件に関する文書については。
たとえば、ホーム ディレクトリから/mnt/mydata
コンテナー内にフォルダーをマウントする場合は、次のようにします。
docker run -v /Users/andy/mydata:/mnt/mydata myimage
これで、/mnt/mydata
コンテナ内で/Users/andy/mydata
ホストにアクセスできるようになります。
Docker for Mac または Docker for Windows を使用している場合は、ホスト上にデフォルトで許可される特定のディレクトリがあることに留意してください。
Mac または Windows で Docker Machine を使用している場合、Docker Engine デーモンは macOS または Windows ファイルシステムへのアクセスが制限されます。Docker Machine は、/Users (macOS) または C:\Users (Windows) ディレクトリを自動共有しようとします。そのため、macOS でファイルまたはディレクトリをマウントするには、次の操作を実行します。
2019年7月更新:
ドキュメントのリンクと名前を正しいものに更新しました。このタイプのマウントは「バインド マウント」と呼ばれます。Docker for Mac または Windows に関するスニペットはドキュメントに表示されなくなりましたが、引き続き適用されるはずです。なぜ削除されたのかはわかりません (私の Docker for Mac には、ホスト上で許可されているマウント パスの明示的なリストがまだあります)。