Ubuntu LinuxでDockerを実行しています。他の場所から大量のデータを取り込むDockerfile
があります。ローカルファイルシステム(ext4)にマウントした外部ドライブにDockerfile
を置きます。次に、その外部ドライブファイルシステム内からビルドを実行しました。
docker build -t mycontainer .
コンテナーの作成中にドライブの使用状況を監視しました。ドライブの使用はすべて、接続されたドライブではなく、ルートファイルシステム上で行われました。
Dockerのルート/ベースを/var/lib/docker
から別の場所に変更する方法についての記事をいくつか読んだことがありますが、これまでに入手できるのはdocker.service: Failed with result 'exit-code'
だけです。
また、-g options
ファイルに/lib/systemd/system/docker.service
を追加してみました。
ExecStart=/usr/bin/dockerd -H fd:// # original
ExecStart=/usr/bin/dockerd -g /new/path/docker -H fd:// # updated
これも役に立ちませんでした。
外部ドライブを使用するようにDockerに指示するにはどうすればよいですか?
いくつかのことが私がこれを機能させるのに役立ちました。まず、外部ファイルシステムをホームディレクトリにマウントしていたため、アクセス許可の問題が発生していた可能性があります。そのため、/mnt
でファイルシステムを再マウントし、権限と所有権を次のように更新しました。
# chown -R root:root /mnt/external-drive/docker-base
# chmod 701 /mnt/external-drive/docker-base
次に、次の内容で/etc/docker/daemon.json
ファイルを作成しました。
{
"graph": "/mnt/external-drive/docker-base"
}
Dockerサービスを再起動しましたが、すべて順調です。 docker build
を実行すると、外付けドライブがすべてのコンテンツを受信しています。