web-dev-qa-db-ja.com

外部ドライブにコンテナーを保存して実行するようにDockerに指示する方法

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に指示するにはどうすればよいですか?

3
SunSparc

いくつかのことが私がこれを機能させるのに役立ちました。まず、外部ファイルシステムをホームディレクトリにマウントしていたため、アクセス許可の問題が発生していた可能性があります。そのため、/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を実行すると、外付けドライブがすべてのコンテンツを受信して​​います。

5
SunSparc