GNU/Linux >> Linux の 問題 >  >> Linux

ホスト上の NFS マウントを可視化し、Docker コンテナー内で読み書きできるようにする

アップデートで指摘したように、ファイルの UID はバインド マウントにマップされません。これが、Linux がバインド マウントを行う方法です。別の UID でコンテナーを開始できますが、これにより、コンテナー内の /etc/passwd が別のユーザーにマッピングされるか、(あなたの場合は) ユーザーにマッピングされません。さまざまなオプションがありますが、私の好みは、私の fix-perms スクリプトを使用して、イメージのエントリポイント内で実行される usermod コマンドでコンテナーの UID を変更することです。これはルートとして実行する必要がありますが、その後 gosu を使用できます コマンドを実行するときにユーザーにドロップダウンします。これについては、dockercon プレゼンテーションで話しました。

ホスト NFS ディレクトリへのバインド マウントの代わりに、NFS サーバーに直接ボリューム マウントを行うこともできます。これを行う方法の例をいくつか示します:

  # create a reusable volume
  $ docker volume create --driver local \
      --opt type=nfs \
      --opt o=nfsvers=4,addr=nfs.example.com,rw \
      --opt device=:/path/to/dir \
      foo

  # or from the docker run command
  $ docker run -it --rm \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=nfs.example.com\",volume-opt=device=:/host/path \
    foo

  # or to create a service
  $ docker service create \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=nfs.example.com\",volume-opt=device=:/host/path \
    foo

  # inside a docker-compose file
  ...
  volumes:
    nfs-data:
      driver: local
      driver_opts:
        type: nfs
        o: nfsvers=4,addr=nfs.example.com,rw
        device: ":/path/to/dir"
  ...

Linux
  1. Imgファイルのタイプを見つけてマウントする方法は?

  2. DockerイメージのCMDとENTRYPOINTの違い

  3. ホスト ポートを Docker コンテナに転送する

  1. docker は Linux コンテナー内で実行できますか?

  2. Docker 内の Docker はボリュームをマウントできません

  3. Docker Alpine コンテナーでのシェルの開始

  1. NFSマウントの有効性の検証

  2. docker コンテナ内で cron ジョブを実行する方法

  3. Docker コンテナー内で実行されているプロセスの、ホストの PID は何ですか?