問題タブ [dockerfile]
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.
linux - Docker は IP アドレスを設定し、サービスを開始します
docker をセットアップしてコンテナーを作成しましたが、IP サブネットで起動したいというLAN
問題docker0
がdocker -d -b docker0
あります。static
httpd
mysqld
Dockerfile:
エラー:
モードでコンテナーを開始する必要があることは知っていますが、オプション--privileged
で設定する方法がわかりませんbuild
memory - 長時間実行されているプロセスからのログによる Docker デーモンのメモリ リーク
私は次の設定をしています:
- コンテナ内で実行されている Perl サービスと書き込みログ アウト
STDERR
- アーカイブのためにそれらのログをリモートサーバーに送信するlogspout
600 MB RAM のマシンで。
また、次の場所でログを定期的に切り捨てます。
ここで提案されているように、100% ディスクのシナリオを回避します。
問題
Docker デーモンは、最初は 1% の低いメモリ使用量で始まり、コンテナーを実行して 2 日後にはゆっくりと 40% に増加します。
参照
Docker デーモンのメモリ リークは、この問題とこの問題で話題になっています。しかし、どちらもコミット時にマージされたと言って閉じられています。dockerの最新のメジャー バージョン(Docker バージョン 1.4.0、ビルド 4595d4f) を実行していますが、単調に増加するメモリ使用量の問題に直面しています。
編集:私はこの実験を行いました:コンテナでbashプロセスを実行し、多くの行をSTDERRに出力すると、dockerデーモンプロセスのメモリ使用量が非常に速く加速します
docker はログのバッファリングを行い、基になるログ ファイル ( /var/lib/docker/containers/CID/CID-json.log
) がクリアされてもメモリを解放しませんか?
ログをクリアする方法はないようです。このコミットは、実行時間の長いタスクの問題を解決しますか?
docker デーモンのメモリ使用量が増加し続ける理由がわかりません。この問題をデバッグするにはどうすればよいですか?
docker - docker mysql 永続ストレージ
私はこのアプリを docker + fig を使用してオーケストレーションしようとしています。これは、試行の初日にうまく機能します。データベースファイルを永続化したいデータコンテナと、アプリで使用されるredis + mysqlコンテナを使用します。
mysql コンテナーを起動する/var/lib/mysql
と、内部でデータ ファイルが検索され、何も見つからない場合は、デフォルトの sb が作成されます。これを入力すると、ファイルが作成され、データ ボリュームに永続化されます。
fig を学習している間fig rm --force mysql
、mysql コンテナーを削除する必要がありました。データ コンテナー上でデータが安全であることを知っていれば、恐れることなくこれを実行できました。ホストで a を実行するls
と、mysql ファイルがそのまま表示されます。
再度実行すると問題が発生しfig up
、mysql コンテナーが再度作成されます。同じボリュームを共有していて、古い mysql ファイルがまだ存在しているにもかかわらず、この新しいコンテナーは、共有ボリュームが空であるかのように新しいデータベースを作成します。これは、コンテナを閉じた場合にのみ発生し、rm
図を閉じて元に戻した場合には発生しません。
それが役立つ場合、これが私の図ファイルです:
data:
image: ubuntu:12.04
volumes:
- /data/mysql:/var/lib/mysql
redis:
image: redis:latest
mysql:
image: mysql:latest
ports:
- 3306
environment:
MYSQL_DATABASE: *****
MYSQL_ROOT_PASSWORD: *****
volumes_from:
- data
web:
build: .
dns: 8.8.8.8
command: python manage.py runserver 0.0.0.0:8000
environment:
- DEBUG=True
- PYTHONUNBUFFERED=1
volumes:
- .:/code
ports:
- "8000:8000"
links:
- data
- mysql
- redis
新しい mysql コンテナが既存のファイルを使用しない理由はありますか?
node.js - NodeモジュールをDockerにインストールする:なぜ消えているのですか?
最初のノードの Docker イメージを作成しようとしています。ヒューボット用です。の基本は次のDockerfile
とおりです。
問題は、ビルド ステップが終了した後に node_modules が存在しないことです。ビルドステップ中に、予想される場所に配置されていることがわかります。
したがって、Docker ファイルはある程度ステートレスであることを知っています。そのため、「apt update && install」が必要です。しかし、何かが取り残されます。そうしないと、インストールされた apt ビットが最後に存在しません。どうすれば永続化できnode_modules
ますか?
linux - ユーザーを Docker コンテナに追加するにはどうすればよいですか?
内部でいくつかのプロセス (uwsgi とセロリ) が実行されている docker コンテナーがあります。アクセス許可を割り当てるために、これらのプロセスの celery ユーザーと uwsgi ユーザー、および両方が属するワーカー グループを作成したいと考えています。
RUN adduser uwsgi
Dockerfile にとを追加しようとRUN adduser celery
しましたが、これらのコマンドは入力を要求するため、問題が発生しています (以下のビルドからの応答を投稿しました)。
コンテナーで実行されているワーカーのアクセス許可を設定するために、ユーザーを Docker コンテナーに追加する最良の方法は何ですか?
私の Docker イメージは、公式の Ubuntu14.04 ベースから構築されています。
adduser コマンドを実行したときの Dockerfile からの出力は次のとおりです。
docker - Docker FROM を実装するさまざまな方法は何ですか?
イメージの継承は通常、docker の from コマンドなどを使用して行われます。
私の場合、ベース イメージ ビルダーとして使用したい Dockerfile があり、そのファイルをカスタマイズする 2 つのサブ dockerfile があります。
元の dockerfile をコンテナーとして dockerhub にコミットしたくないので、たとえば、次のようにします。
slave/Dockerfile は次のようになります。
これ(または同様のもの)は可能ですか?または、最上位の Dockerfile を実際にコンテナーに変換し、それを dockerhub イメージとしてコミットしてから、docker FROMディレクティブを使用して活用する必要がありますか。
docker - dockerfile からのファイルの編集
/etc/sysctl.conf
Docker イメージにいくつかの行を追加する必要があります。
手動で編集してアプローチDockerfile
を使用するのではなく、これを行うべき等の方法はありますか?docker commit