タグ付けされた質問 「docker」

Dockerイメージ、コンテナー、ハブ、およびコンテナー化プラットフォームに関連するすべて

3
Dockerタグのバージョン管理のベストプラクティスは何ですか?
私は最近、gitコミット時にdockerイメージを構築するためにCIサーバーを接続しました。 ビルドされるコンテナは約8種類あり、それぞれに独自の言語/フレームワークがあります。一部はnodeであり、package.jsonを持っています。その他は、セマンティックバージョン情報を含まないpythonサービスです。 私の質問は、タグを作成する方法ではなく、タグの値を作成することです。 各タグが特定の画像の一意のセマンティックバージョン番号を持っていることを確認するにはどうすればよいですか?ビルドバージョンの追跡/増分の権限を持つのは誰ですか?

2
DockerfileのVOLUMEディレクトリの所有者を変更するにはどうすればよいですか?
私は次のものを持っていますDockerfile: FROM ubuntu:xenial RUN useradd -d /home/ubuntu -ms /bin/bash -g root -G sudo -p ubuntu ubuntu WORKDIR /home/ubuntu USER ubuntu VOLUME /opt/myvolume 私が作ったもの: $ docker build -t vol-test . Sending build context to Docker daemon 2.048kB Step 1/5 : FROM ubuntu:xenial ---> 0b1edfbffd27 Step 2/5 : RUN useradd -d /home/ubuntu …

2
docker compose環境ファイルで環境変数が壊れているのはなぜですか
コンテキスト:docker-composeは、Flaskアプリを呼び出すGunicornなど、いくつかのコンテナーを起動します。環境ファイルweb/env.gunicornを使用して、Gunicornスタートアップ構成を保存しています。このファイルには GUNICORN_CMD_ARGS="--bind=127.0.0.1:8001 --workers=3" 問題はGUNICORN_CMD_ARGS、パイプラインのどこかで正しく処理されないことです。実行中に発生するエラーdocker logs gunicornは Error: '8001 --workers=3' is not a valid port number. 問題は、私の設定のどこに私の仮定が間違っているのですか?端末で手動で実行すると、環境変数が受け入れられます。docker composeファイルは次のようになります version: "3" services: # nginx: # image: nginx:latest # ports: # - "80:80" # volumes: # - ./nginx:/etc/nginx/conf.d # depends_on: # - web web: build: ./web container_name: gunicorn ports: - "8001:8001" environment: - …

4
DevOps関連のコードと構成をコードリポジトリに構築する方法は?
私たちは会社として成長しており、製品が拡大し、DevOps関連の活動と取り組みも成長しています-展開パイプラインやその他のプラグインを使用して、Bambooからより柔軟で構成可能なJenkinsに切り替えました。Ansibleに切り替え、Dockerを社内のあちこちで使い始めました。 これらすべてのものには、ある程度のコーディングまたは構成が必要です-Ansibleスクリプトと構成、Jenkinsグルーヴィーなスクリプト、Dockerfiles、YAML構成。 今のところ、我々はのためのハイレベルのディレクトリに別の「OPS」リポジトリを作成したjenkins、ansible、docker及びother(ひどい名前であるが、現在はすべて「その他」DevOpsチームのためのオートメーションのものがあります)。 私たちのアプローチは正しく感じられず、拡張できない場合がありますが、DevOps関連のコードをコードリポジトリに保持するためのベストプラクティスと推奨事項は何ですか?

1
EclipseでDockerツールを構成する方法は?
Eclipseプラグイン「Dockerツール」は、Docker Machineのインストール、またはネットワーク接続を想定しているようです。 しかし、Windows 10では、このプラグインが期待するものとは異なるように見えるため、必要な実行可能ファイルを参照できません。また、どうすればローカルネットワークのURLを確認できますか?Docker情報はこれを明らかにしません。


1
KubernetesのCPU使用率とDockerコンテナーメトリックの競合
最近、本番環境をKubernetesに切り替えました。コンテナーにCPU制限を適用したいのですが。適合しないCPUメトリックが競合しています。これが私の設定です: として実行されているDataDogエージェント Daemonset CPU制限なしで実行されている既存のアプリケーション 問題のコンテナはマルチスレッドのRubyアプリケーションです 2つのメトリック:kubernetes.cpu.usage.{avg,max}およびdocker.cpu.usage c4.xlarge クラスタノード(4つのvCPUまたはKubernetesの用語では4000m) kubernetes.cpu.usage.max問題のコンテナについて〜600mを報告します。docker.cpu.usage約60%を報告します。したがって、1000mのCPU制限は、通常の操作では十分な容量を超えることになります。 制限を1000mに設定しました。その後docker.container.throttlesながら大幅に上がるkubernetes.cpu.usage.maxとdocker.cpu.usage同じまま。この間、システムはすべてひざまずきます。これは私には意味がありません。 Dockerの統計を調査しました。docker stats(および基になるAPI)は、CPUコアに従って負荷を正規化しているようです。したがって、私の場合、docker.cpu.usageKubernetesに換算すると60%の(4000m * 0.60)から2400mになります。ただし、これはKubernetes番号とは相関しません。Kubernetesの数値が正しくないという私の仮説を検証するために、別の実験を行いました。制限を2600mに設定しました(追加のヘッドルームのため)。これによりスロットルは発生しませんでした。ただし、KubernetesはCPU使用率に変化がないことを確認しました。これは私を混乱させます。 だから私の質問は: これはKubernetes(またはスタック内の何か)のバグのように感じますか? 私の理解は正しいですか? 私のフォローアップ質問は、RubyアプリケーションのCPUを適切に決定する方法に関するものです。1つのコンテナーはPumaを使用します。これは、構成可能な量のスレッドを備えたマルチスレッドWebサーバーです。HTTP要求は、スレッドの1つによって処理されます。2番目のアプリケーションは、スレッドサーバーを使用するリサイクルサーバーです。各着信TCP接続は、それ自体のスレッドによって処理されます。スレッドは、接続が閉じると終了します。Ruby as GIL(Global Interpreter Lock)なので、一度に1つのスレッドのみがRubyコードを実行できます。これにより、IOなどを実行する複数のスレッドが可能になります。 最善のアプローチは、各アプリケーションで実行されるスレッドの数を制限し、スレッドの数に基づいてKubernetes CPUの制限を概算することだと思います。プロセスは分岐しないため、CPUの合計使用量を予測することは困難です。 ここでの問題は、これらのアプリケーションのCPU使用率と制限を適切に予測する方法です。

1
Dockerイメージがどこから来たかを知る方法は?
システムにDockerイメージがあります12346789ABCD。 それがどこから来ているのかを知る方法はありますか? 具体的には、それがローカルでビルドされたか、リポジトリからダウンロードされたか、後者の場合、どのリポジトリからダウンロードされたかを知りたいです。
9 docker 

1
Dockerized Flask:ピアによって接続がリセットされました
次の最小限の例を使用して、Docker化されたFlaskアプリに接続しようとすると、エラー104「ピアによる接続のリセット」で失敗します。 app.py: from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run() Dockerfile: FROM python:alpine RUN pip install flask COPY . /src/ EXPOSE 5000 ENTRYPOINT ["python", "/src/app.py"] docker-compose.yml: … test: build: . ports: - 127.0.0.1:5000:5000 Flaskアプリは期待どおりに実行されているようです: $ docker logs test * Running …
9 docker  python 

2
Dockerでは、コンテナをOSに依存しないようにできますか?
現在、Windowsベースのサーバーを使用して2つのVMをホストしています。1つのVMはWindowsアプリでWindowsを使用し、もう1つのVMはLinuxアプリでLinuxを使用します。 以下のシナリオは可能ですか? Windows 2016(VMなし)を備えたベアサーバー。Dockerエンジンをインストールします。Windowsアプリコンテナーをインストールします。Linuxアプリコンテナーをインストールします。 DockerエンジンはOSを抽象化して、この構成で両方のアプリを実行できるようにしますか?Dockerエンジンは、JavaコードをさまざまなOSで実行する方法に似た「インタープリター」として機能するという意味ですか?

2
Dockerfileの代わりに構成管理ツールを使用しないのはなぜですか?
私はDockerと構成管理ツールにかなり慣れています。 最初はbashスクリプトの作成を開始して、開発マシン用のVagrantボックスをプロビジョニングしましたが、今はそのためにChefを使用するように切り替えました。同じソースを使用して、開発環境と本番環境の両方をプロビジョニングし、同じようにそれらを試して取得できるようになりましたできるだけ。 Chefを使い始めてから、シェルスクリプトの行をプロジェクト間でコピーして貼り付ける必要がないというDRYの側面、1つの統合されたソースを使用してさまざまなLinuxディストリビューションを実行するマシンをプロビジョニングする機能、および便利さを楽しんだコミュニティ提供のクックブックを使用する方法。 Chefを使用してvmをプロビジョニングしているので、RUNコマンドに続いてシェルコマンドをDockerfileに追加してChefレシピを実行するだけで達成できることを達成するとき、後退するような気がします。 私はググって何も見つかりませんでした(しかし、たぶんそれを逃しただけかもしれません)が、Dockerコンテナーを構築するChefレシピを使用する簡単な方法があるようには見えません。何故ですか? コンテナは不変であることを意図しており、構成管理ツールは通常、マシンの寿命全体でマシンを再構成するために使用されますが、コンテナの最初の構築中に使用した場合でも、多くの利点を提供しませんか?

2
Dockerイメージの暗号化(エンドツーエンド); オフラインチャネルでの転送
私たちはイントラネットでDockerイメージを開発および構築しており、私たちに属するいくつかのホスト(開発者、内部テスト、外部テストなど)にそれらを展開する必要があります。これらの一部はイントラネットにあり、一部はインターネットでサードパーティがアクセスできます。 最終的な展開は、いくつかのノード(実稼働、さまざまなテスト段階)上の顧客のイントラネット内です。これらはファイアウォールの背後にあり、イントラネット外の物に定期的にアクセスすることを許可していません。つまり、デプロイメントのために外部レジストリへのアクセスを許可できるものもあれば、不可解なソフトウェアのアップロードを通じて手動で画像を配信する必要があるものもあります。ツール。 画像を暗号化して保存できる(できればGPGまたは同様の、単純なパスワードではない)インターネット上のレジストリ(おそらく、そこにあるVMで自分で実行した可能性があります)を持つ方法を探しています。しかし、その場合は、手動でアップロードメカニズムを介して、単に「半分」のものを配信することもできます。顧客は非常に偏執的であるため、エンドツーエンドの暗号化を維持することは非常に重要です。 頭に浮かぶ、それを完全に処理できるツールはありますか?1つの解決策は、専用ホスト上の顧客の敷地に完全なレジストリをミラーリングし、暗号化の部分をそのまま維持することです。 「標準」のソリューションは素晴らしいでしょう。何か無駄のない/軽量の/確立された/安定したものがすでにある場合、私は何かを一緒にハッキングするのは嫌です。 編集(+タイトルに編集):Portusによって提供されているような広範な許可スキームは良いスタートですが、実際の画像のエンドツーエンドの暗号化に理想的です。顧客は超偏執的で、Docker、クラウドベースのサービスなどを始めたばかりです。

1
本番環境でのDockerを使用した永続ストレージ-ソリューションとその理由
私は最近、モノリシックSaaSアプリケーションをコンテナー化されたマイクロサービスに分割したい会社で働き始めました。しかし、永続ストレージの基本的な部分を把握するのに苦労しています。なぜそれほど多くの異なる競合プラットフォームがあるのですか?Portworx、Rexray、StorageOS、Flocker、Inifintなど。 私の質問 誰かが単にNFSサーバーを起動し、階層的なフォルダー構造をストレージバックエンドとして使用しないのはなぜですか?これらのツールの1つを使用すると、どのようなメリットがありますか? Dockerでこのようなものを使用することはどれほど危険ですか?Dockerベースの環境で致命的なデータ損失の一般的な原因は何ですか? どの永続ストレージソリューションを推奨しますか、またその理由は何ですか?私の会社はSaaSプラットフォームを運用しています。データペイロードはサイズが小さい(5kb-100kb)。データ処理は、リソース消費量が中小です。全体的なボリュームは中程度ですが、増加し続けています。モノリシックアプリケーションを個別のコンテナ化されたマイクロサービスとしてクラウドに完全に移行したいと考えています。データウェアハウスを含みます。 多少は関係ありませんが、関連しています。Rancher/ Cattleとは対照的に、Kubernetesをオーケストレーターとして使用することの利点は何ですか?中小規模のプラットフォーム用にKubernetesが過剰設計されていませんか?ワンクリックインストール以外に、ランチャーでKubernetesを使用する利点はありますか? 洞察をありがとう。世間知らずでごめんなさい。すべてのドキュメントと補足資料を歓迎します。 編集:コンテキストでは、基盤となるクラウドプラットフォームとしてAzureを使用しています。

1
CircleCIでDockerへのデプロイを自動化するにはどうすればよいですか?
circle.ymlファイルとCircleCIアカウントは、すでにテスト用にDockerを使用するように設定されていますが、ビルドが成功したら継続的なデプロイに移行したいと思います。 これが私がこれまでcircle.ymlに持っていたものです: machine: services: - docker dependencies: override: - docker info - docker build -t pgeiss/appname . test: override: - docker run -d -p 8080:8080 pgeiss/appname; sleep 10 - curl --retry 10 --retry-delay 5 -v http://localhost:8080/res.json

1
Webアプリケーションのワーカープロセスを別のコンテナーに配置する必要がありますか?
私のセットアップは、PostgreSQLとRedisデータベースを持つFlaskアプリに基づいています。さらに、ワーカープロセスは、電子メールの送信などの非同期タスクを処理するために開始されます。私はGunicornを使用して複数のアプリプロセスを作成しています。アプリプロセスからワーカープロセスへのジョブの受け渡しは、Redisを介して行われます。 問題は、同じコードに基づいているにもかかわらず、ワーカープロセスを別のコンテナーで開始する必要があるかどうかです。現在、私は関連するビットで開始スクリプトを使用しています: gunicorn --bind=0.0.0.0:8000 --workers=3 manage:app & python -u manage.py run_worker また、それらを分離する必要がある場合、どのようにして、共通のファイルシステムコンテナーを確実に再利用することができますか?さらに、メインアプリまたはワーカープロセスでGunicornをスケーリングする場合、コンテナーの追加インスタンスを作成するか、コンテナー内のプロセス数を増やす必要がありますか? 関連:異なるコンテナーでnginxとphpをドッキングする利点は何ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.