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

Ubuntu で docker を実行中:マウントされたホスト ボリュームはコンテナーから書き込み可能ではありません

uid の場合 ホスト上 (id -u ) は uid と同じではありません ドッカーコンテナ(多くの場合「ドッカー」)のユーザーの場合、この問題が発生する可能性があります。試すことができます:

<オール>
  • 自分のユーザーと Docker コンテナ内のユーザーの UID を同じにする
  • あなたと Docker の両方が属するグループに対して、ディレクトリのグループ権限を書き込み可能に設定します。
  • nuclear オプションも使用できます:
  • chmod a+rwx -R project-dir/

    核オプションはあなたの git を作ります ワークスペースが汚れていると、非常にイライラするため、長期的な最善の解決策ではありません.出血が止まります。

    問題をさらに理解するには、次の情報が役立つことがあります:

    <オール>
  • https://github.com/docker/docker/issues/7906
  • https://github.com/docker/docker/issues/7198

  • 新しい答え:

    この質問には多くのトラフィックがあるようで、現在利用可能なより良い解決策があります-fixuid は、その名前が示すように、コンテナーの起動時にコンテナー ユーザーの uid と gid を変更するための魔法の実行可能ファイルです (-u someone:somebody を使用)。

    詳細な説明については、https://boxboat.com/2017/07/25/fixuid-change-docker-container-uid-gid/を参照してください。

    以前の回答:

    docker バージョン 1.7 以降では、次のように :Z または :z フラグを使用して、コンテナーへのアクセス許可を持つホスト ディレクトリをマウントするオプションがあります:

    docker run -v ./api:/usr/src/app:Z
    
    • :z - ラベル 'svirt_sandbox_file_t' を使用してすべてのコンテナーに権限を追加します
    • :Z - 現在のコンテナ ラベルにのみ権限を追加します

    docker-compose v1.4.0 の時点で、次のように docker compose で使用できます:

    volumes:
       - ./api:/usr/src/app:Z
    

    追加する必要がありますが、これにはまだいくつかの問題があります (docker-compose を使用してホスト ディレクトリにアクセス許可を追加するを参照してください)。

    参照:

    Docker でボリュームを使用すると、SELinux で問題が発生する可能性があります - http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/

    Docker ユーザー ガイド -https://docs.docker.com/engine/userguide/dockervolumes/#volume-labels

    v1.4.0 の Docker-compose リリース ノート - https://github.com/docker/compose/releases/tag/1.4.0


    Linux
    1. Dockerコンテナからカスタムイメージを作成する方法

    2. ホストから Docker コンテナのネットワーク名前空間にアクセスする方法

    3. Docker イメージ/コンテナの中身は?

    1. ヒューズ ベースのボリュームを Docker コンテナーに公開できません

    2. Docker でディレクトリとしてマウントされた単一のファイル ボリューム

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

    1. Do-release-upgradeを使用してDocker内のUbuntuを14.04から16.04にアップグレードしますか?

    2. Docker コンテナーで実行されている OS はどれですか?

    3. CentOS 8 の Docker CE コンテナーとの間のネットワーク接続がない