問題タブ [docker-volume]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Docker ボリューム - データベースへの書き込み権限が必要
私はREST APIとして使用されるフラスコサーバー(python 3.5のvirtualenv内)で作業しています(フラスコで提案されている開発専用)。最初に、ローカルの sqlite データベースに接続し、データベースの変更をできるだけ早くコミットします。今、私はdockerコンテナですべてを実行したいと思っていましたが、sqliteファイルがコンテナにあるため、データベースにどのようにアクセスできるのか疑問に思っていました.
そこで、アプリケーションを構築する dockerfile を指す docker-compose ファイルにボリュームを作成しました。
Dockerfile:
.dockerignore
docker-compose.yml
実行するdocker-compose up
と、次のようになります
output/reports.db でデータベースを作成し、docker-compose を再度開始すると、次のエラーが返されます。
したがって、明らかに、ファイルに書き込む権限がありません。この動作をテストするには、次のようにマウントされたテスト ファイルに書き込みます。
エラーメッセージ:
このファイルの所有者を見てみましょう。
コンテナーにはユーザー 4262 が存在しないことが判明しましたが、ホスト マシンではユーザー アカウントにこの ID が割り当てられています。したがって、問題が何であるかはわかっていると思いますが、これらのファイルにアクセスする方法はわかりません。ボリューム定義に「:rw」を追加しようとしましたが、まだ書き込み権限がありません。ボリュームが定義されている場合、ファイル/ディレクトリの所有者を変更しないようにdockerに指示するにはどうすればよいですか。
ローカル ボリューム ドライバーに問題があると考えていますが、他の誰かが既にこの問題を抱えており、必要なアクセス許可を取得するためにイメージを構成する方法を教えてくれる可能性があります。
こんにちは、トーマス
docker info
docker-compose -v
lsb_release -a
python-2.7 - docker-py を使用してコンテナーからホスト フォルダーを実行および共有する
永続的な共有フォルダーを持つ python docker を使用してコンテナーを実行したいと考えています。そのためのコマンドラインは次のとおりです。
docker run --rm -ti -v /home/docker:/container_shared_folder ubuntu:14.04 bash -c my_command
docker-py を使用してそれを理解するのを手伝ってもらえますか?
よろしく!
docker - docker-compose: バインド マウントとマネージド マウントのマウントを定義します
サービスの定義に docker-compose を使用しています。docker では、docker ボリュームには 2 つの概念があります。まずbind mount
、ホストストレージへのマウントについてです。
次にmanaged mount
、ホストに依存しない抽象ストレージについてです。
これらの概念を docker-compose にマッピングしたいと考えています。これは、docker-compose をどのように定義bind mount
し、いつ使用するかを意味します。managed mount
wordpress - エラー: ファイル './docker-compose.yml' では、ボリュームは文字列ではなくマッピングでなければなりません
質問: なぜこのエラーが発生するのですか?
エラー: ファイル './docker-compose.yml' では、ボリューム 'mariavolume' は文字列ではなくマッピングである必要があります。
私の docker-compose ファイルは、これとほぼ同じです: https://docs.docker.com/compose/wordpress/
docker - Docker ボリューム ストレージの複製
Docker 化されたバージョンの ElasticSearch を実行しており、ボリュームを使用して ElasticSearch ディレクトリを Docker の外部にマップしています。
私の問題は、docker コンテナー ( /var/lib/docker/containers/ 内) のサイズが、/path/to/outside/docker/container ディレクトリにあるファイルと同じ速度で増加していることです。docker コンテナ内の内容が /path/to... ディレクトリの内容と同じであることを確認しました。
このデータの重複は正常ですか?
添付の Docker 情報:
docker - Rex-Ray および VirtualBox メディア ストレージを使用して永続ボリュームを Docker コンテナーにマウントできない - 「無効な管理対象オブジェクト参照」エラー
Rex-Ray プラグインを使用してデータ ボリュームを Docker コンテナーにマウントしようとしています。ストレージ プロバイダーとして VirtualBox Media を選択しました。
私が使用しているバージョンは次のとおりです。
- ドッカー 1.12.5
- Rex-Ray 0.6.3 と libStorage 0.3.5
- VirtualBox 基本パッケージ 5.1.12
セットアップ:
- VirtualBox で実行されている 1 つの CentOS 7 VM
- CentOS 7 VM で実行されている Docker 1.12.5
- CentOS 7 VM にインストールされて実行されている Rex-Ray
- Mac OS X 10.12.1 ホスト マシン
Mac OS ホスト マシンの場合:
1. VirtualBox SOAP API認証をオフにしますVBoxManage setproperty websrvauthlibrary null
2. vboxwebsrv -H 0.0.0.0 -v
Rex-Ray が VirtualBox と通信できるように、VirtualBox SOAP API を開始します。
CentOS 7 VM では、次のことを (ルートとして) 実行しています。
1. でDockerを起動systemctl start docker
2. Rex-Ray/etc/rexray/config.yml
ファイルを作成します。
ここで、endpoint
は VirtualBox SOAP API が Mac OS X ホスト マシンで実行される IP であり、volumePath
作成後にボリュームが保存される Mac OS X ホスト上の既存のフォルダーです。
この構成ファイルは、 https://github.com/codeellemc/labs/tree/master/setup-virtualbox-dockermachineの Dell EMC チュートリアルにあるのと同じ形式に従います。
3. を使用してRex-Rayサービスを開始しますrexray start
4 . で1GBのボリュームを作成
docker volume create -d rexray --name pg_data --opt=size=1
5. postgres
公式イメージを使用して Postgres Docker コンテナーを実行してみます。前に作成したrexray
ボリューム/var/lib/postgresql/data
は、Postgres コンテナー内のディレクトリにマウントされます。
docker run -dit --name pg -e POSTGRES_PASSWORD=mysecretpassword --volume-driver=rexray -v pg_data:/var/lib/postgresql/data postgres
コンテナの起動に失敗し、次のエラーが表示されます
Error response from daemon: VolumeDriver.Mount: {"Error":"VirtualBox error: Invalid managed object reference """}
次の図は、私の VirtualBox ストレージ設定を示しています。
どんな助けでも大歓迎です
mysql - docker-compose の使用時に MySQL でユーザーが作成されない
これは、docker-compose によって作成されたコンテナーにいるときに表示されるものです。
そのため、適切に設定されていても、 usersdbuser
テーブルには存在しません。$MYSQL_USER
私はこれdocker-compose.yml
を持っています:
自動的に作成されると思っdbuser
ていましたが、そうはなりませんでした。
sql
データベースとテーブルがまだ存在しない場合は作成するためのファイルもありますが、現在、Tomcat はデータベースに接続できません。
この質問と同じ症状ですが、すでにユーザー名/パスワードに辞書を使用しています。
アップデート:
私は近づいています。コンテナ内で手動で行ったとき:
次に、ユーザーがMySQL
テーブル内に作成され、アプリケーションをサーバーにデプロイできましたが、アクセスが拒否されtomcat
たことに関するエラーは発生しませんでした。dbuser
では、なぜこのコマンドを自分で実行する必要があったのでしょうか。mysql docker docsのInitializing a fresh instanceによると、docker-compose で実行する必要があります。
amazon-web-services - AWS ECS で使用する場合のストレージ要件
アプリケーション用に AWS EC2 Container Service をセットアップしましたが、AWSはLinux OS用のボリュームとDocker用の別のボリュームを(デフォルトで)持つように強制しているようです。とにかくこのあたりはありますか?
なぜ少なくとも 22GB でなければならないのですか? 10 GB と 15 GB まで下げてみましたが、インスタンスは起動すらしませんでした...
何か案は?
docker - rsyncを使用してパーティション間でdockerイメージフォルダーをコピーする
データを別の場所に移動したいのですが/var/lib/docker
、それを安全にするためにrsync
.
しかし、データはスパース ファイルで保存されており、rsync は適切に処理していないようです。
の正しいパラメータはrsync
何ですか?
-a
uid/gid+rights を適切に保持します-S
スパースファイルを効率的に処理しますが、rsync は決して終了しないようです
がない-S
と、rsync は元の場所に格納できるよりも多くのデータをコピーしようとします (48G パーティションで 100G)。では、-S
10Gくらいで永遠にくっついてしまいそうです。
docker - Docker データ コンテナーとボリュームで Web アプリをデプロイする
データ コンテナーを使用すべきではないという一般的なコンセンサスについて、私は混乱しています。達成したい特定のユースケースがあります。
docker nginx コンテナーが必要で、その背後にアプリケーションを含む他のコンテナーが必要です。アプリの最新バージョンを実行するために、プライベート Docker レジストリから準備完了のコンテナーをダウンロードしたいと考えています。アプリケーションは今のところ純粋に静的な html、javascript です。
したがって、私の計画は、ファイルを保持し、いくつかの /webapp フォルダーに名前付きボリュームを指定する docker イメージを作成することです。nginx コンテナはこのボリュームを提供します。「docker コンテナ化」の方法で多数のファイルをリモート システムに移動する方法は他にありません。私は実際に呪われたデータ コンテナーを作成していませんか?
とにかく、アプリコンテナの交換中に何が起こりますか? アプリ コンテナーを停止すると、ボリュームはホストに配置されるため、アクセス可能なままになります。アプリコンテナの新しいバージョンをプルして起動すると。ボリュームが再度作成され、同じ場所に保存されているイメージ ファイルが事前にファイル化され、ホストのコンテンツが置き換えられるため、nginx コンテナーは新しいバージョンのアプリケーションからサーバーに配置されます。nginx コンテナーからまだ存在しないボリュームを参照するとどうなりますか。
名前付きの値は、画像のコンテンツとともに自動的にファイルされないようです。同様に、ここから取得したこの構文が機能しないため、docker ファイルに名前付きボリュームを作成する方法がわかりません