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

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

3
`docker-compose up`が実行されたときに名前のないボリュームが作成され、` docker-compose down && docker-compose up`を発行した後にこれらが二重に実行されるのはなぜですか?
docker composeアプリケーションを起動すると、最初に名前付きボリュームが作成され、起動するたびに追加のボリュームが作成されます。これは増分ボリュームを作成するという点で正常な動作ですか、それともdocker-composeファイルが壊れていますか?さらに、を実行した後docker volume prune、名前のないボリュームのうち2つを削除しました これは、2回開始した後の出力です。 DRIVER VOLUME NAME local 2b33c81e6e955ff36061f4120b7181c7efc7aebded2f87eaa7290027f1e7a725 local 74301eadc75018d6f7da76aec44bcf743e03261492cfcc33211941684a570030 local c42b1e2c17342c52b4b9e90f4d4b7fa24ccb30de5479e65cf4366e2373dfb0bf local dcfa63dbf99362fc92fe3b981f50abebfe1bba03063d4dd9dd790f4c058817cf local dockerinfluxdbgrafana_grafana-data local dockerinfluxdbgrafana_influxdb-data 参考までに、私のdocker-composeファイル version: "3" services: influxdb: image: influxdb:latest container_name: influxdb ports: - "8086:8086" env_file: - 'env.influxdb' networks: - backend volumes: - influxdb-data:/var/lib/influxdb grafana: image: grafana/grafana:latest container_name: grafana ports: - "3000:3000" env_file: …

2
ビルドパイプラインでサードパーティのリソースをキャッシュする方法は?
あ ビルドパイプラインビルドするアーティファクトのソースコードは別として、サードパーティのリソースにアクセスする必要があることがよくあります。これらのサードパーティの各リソースは、ビルドにリスク要因をもたらします。たとえば、 配布リポジトリは一時的に利用できないため、配布パッケージのインストールは一時的に失敗します。 以前と同じように、ディストリビューションリポジトリは永久に利用できなくなります。 一部のNPMフリーソフトウェアパッケージは、作成者が撤回を取り戻したため、存在しなくなりました。 サードパーティツールの一部のソースファイルまたはバイナリアドホックパッケージは使用できなくなりました。 このリストは、拡張することができアドリブをし、それが音としてはるかに楽しまれている姿を消すために、いくつかのサードパーティのリソースにつながる様々な理由を勉強しながら、それは最初にすべての私たちのために悲惨な結果をもたらす:ビルドパイプラインが壊れています。 Dockerイメージをビルドするときに、次の2つのケースをカバーする最良の方法は何ですか。 curlまたはwgetでダウンロードされたキャッシュファイル。 Debianパッケージのキャッシュ。 ここで考えられるいくつかのもっともらしい戦略があります。たとえば、プロキシを使用して、すべてのリクエストをこのプロキシ経由でルーティングするようにビルドシステムを構成します。2番目の安価な可能性は、curl呼び出しをラップして結果をローカルキャッシュに格納することです。 (この質問では、2番目に重要な問題として、ビルドパイプラインのいくつかのユニット間でキャッシュを共有することを検討します。)

2
100の同一のDockerマシンをAWSで起動する最良の方法は?
システムで大規模なテストを行う必要があります。システムは、マネージャーとノードの2つの主要部分で構成されています。マネージャー・サーバーは1つだけですが、ノードは100になります。マネージャーとノードはどちらもDockerイメージです。 ノードの100のインスタンス(サーバーごとに1つのインスタンス)が開始されるAWSでセットアップを起動できるようにしたいと思います。 これには何を使用しますか?マネージャーとノードは一緒に通信できなければならず、ノードはいかなる方法でも負荷分散されるべきではありません。そのため、マネージャーが通信できる専用の内部IPが必要です。 ECSとCloudFormation + EC2をカスタムAMIで確認しましたが、どうすればよいかわかりません。 理想的には、サーバーを起動して簡単に閉じるために、たまに実行できるスクリプトが必要です。 このセットアップを簡単に開始するためにAWSで何ができるかに関する提案はありますか?

3
複数の依存マイクロサービスをデプロイする方法
AWS ECSに複数のマイクロサービスをデプロイしたいと考えています。 私たちが解決する必要がある問題は、それらをアトミックな方法で展開する方法です。 ユーザーサービスバージョン2.0を必要とするフロントエンドサービスがあるとしましょう。 フロントエンドサービスを展開する前に、ユーザーサービスが利用可能であることを確認する方法。 私たちはインフラ全体を複製し、すべてを配備してから利用可能にするという考えを持っています。しかし、それは私には複雑に思えます。これらのスペアインスタンスを作成し、サービスをデプロイして、切り替えを行う方法を教えてください。 サービスごとに2つのALBとターゲットグループを使用しています(動的ポートマッピング)。

6
定期的なDockerプロセスを実行する最も安価で簡単な方法
クライアントが月に1、2回実行したいDocker化されたPythonプロセスがあります。いくつかのGoogle APIを呼び出し、その結果をGoogleスプレッドシートに保存します。ネットワーク要求は受け付けません。Dockerコンテナーを起動してすべてをシャットダウンする「マジックボタン」を1つ提供したいと思います。 背景:これは以前、これをDocker Cloud経由でAWS EC2マイクロインスタンスにデプロイしていました。私のクライアントはDocker Cloudアカウントを取得し、コンテナーをオンデマンドで比較的簡単に実行できました。このワークフローには2つの問題があります。 プロビジョニングされたEC2インスタンス(Dockerホスト)は、Dockerコンテナーが実行されたかどうかに関係なく、24時間365日稼働していました。これは高価になりました。 Dockerクラウドは1か月前にシャットダウンしました。 代替手段は、GoogleおよびAWS Kubernetesサービスのようです。私の予約は、クライアントが使用するには複雑すぎるためです。助言?
7 docker  cloud 

1
コンテナーにJavaScriptベースの静的Webサイトを展開/ホストするための戦略
これは、いくつかの開発チームで時々発生しますが、「正しい」方法を理解していません。 私たちは、いくつかのhtml、js、cssファイルである静的なWebサイトに「コンパイル」する多くの反応ベースのWebアプリケーションを使用しています。 ただし、これらのアプリの「ビルド」は、機能フラグの有効化/無効化、バックエンドURLの構成など、いくつかの変数を使用します。つまり、従来の意味でバイナリを「ビルド」して、デプロイ時に設定ファイルを適用することはできません。時間-「ビルド」自体にこれらの環境固有の変数を設定する必要があるため、「ビルド」できるのはデプロイ時のみです。 とりあえず、必要な環境変数をDockerコンテナーに注入し、次の行に沿って開始コマンドを実行することでこれを解決します npm build && nginx run これにはいくつかの欠点があります。 ビルドプロセスは、コンテナーのランタイム要件に比べて多くのCPU /メモリを消費します。つまり、ランタイム要件ではなく、ビルドプロセスのコンテナーをスケーリングする必要があります。 ビルドの失敗を「追跡」するのは困難です。Kubernetesでヘルスチェックを使用できますが、ビルドに2分かかる場合でも、コンテナーのヘルスチェックエンドポイントのテストを開始してその生存を確認する前に、3分(安全のために1つ余分)待つ必要があります。 デプロイには時間がかかることがあります。「シリアル」デプロイを行うようにKubernetesを構成すると、各ポッドが開始され、2〜3分の「initialDelay」期間待機してから次のポッドが開始されます。これは、デプロイが3〜4ポッドにスケーリングされている場合、10分のデプロイ時間を簡単に見ていることを意味します。 これはすべて、私にとって非常に最適ではないと感じています。コミュニティーが「ビルド時にデプロイ」という難問を最新のJavaScript Webアプリケーションで解決する方法を聞いてみたいと思います。 Kubernetesの場合、ビルドを実行し、アーティファクトを永続ストレージに配置し、起動時にアプリコンテナーを永続ストレージから単純にプルする「init-containers」を使用できることを理解していますが、これはまだ問題を「バイパス」するように感じられます根本的な問題を解決します。

1
フラスコ、Gunicorn、Docker Swarm
ですから、Dockerで実行されているFlaskにこの素晴らしいREST APIを実装し、スケーリングについて考えています。これは私がどのように進歩したかです: CMD ["flask", "run", "--host=0.0.0.0"] そして docker run -d -p 5000:5000 pyrest-alpine 正常に動作します CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "pyrest:app"] そして docker run -d -p 5000:5000 pyrest-alpine これも正常に機能します。Gunicornは、単一コンテナー内のpreforkワーカーモデルを介していくつかのスケーリングを提供しました。 CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "pyrest:app"] そして CMD ["flask", "run", "--host=0.0.0.0"] うまく動作する docker service create --name pyrest-swarm --replicas 2 -p …

3
受け入れ率の低い環境でDevOpsとツールを伝道する方法は?
革新的な破壊的テクノロジーについての刺激的な学習は、すべての人があなたにあなたの生産性を向上させることができるツールに興奮しているわけではないことに気付くかもしれないということです。 この質問は、あまり一般的なようにするには、のといけないこと何です-彼らはまた言うように、教訓 -異なる役割を持つ本物の経験に基づいて、組織内のドッカーを伝道の?

3
docker-composeを使用してdockerフォルダーをホストにマウントできません
ここでは、mariadbイメージを使用するDockerコンテナーを作成し、以下のように3つのボリュームを作成しました。 docker-compose.yml version: '2.0' services: mariadb: image: mariadb:latest restart: always container_name: mariadb environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=testdb ports: - 3307:3306 volumes: - ./database:/var/lib/mysql - ./_conf/mariadb.cnf:/etc/mysql/my.cnf:ro - ./logs:/var/log/mysql 最初の2つのボリュームは正常に機能しますが、mariadb-logsファイルをlogsフォルダーに見つけることができません。logsホストとコンテナー(/ var / log / mysql)でフォルダーが空白で表示されるようです。ホストフォルダーがDockerファイルシステムにオーバーライドされると思います。 ./logs:/var/log/mysqldocker-composeからこのボリューム()を削除すると、コンテナーにログファイルが表示されます。 私の計画は、/var/log/mysql/ローカルマシンにフォルダーをマウントすることです。 よろしくお願いします!

1
gitlab-runnerをgitlabと同じdockerホストで実行するように構成するにはどうすればよいですか?
Doclabコンテナでgitlabインスタンスを実行しています。次に、同じホストでgitlab-runnerをセットアップします。両方が実行されています: docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 279473dceb2f gitlab/gitlab-runner:alpine "/usr/bin/dumb-ini..." About a minute ago Up About a minute gitlab-runner 6d7af0d6b946 gitlab/gitlab-ce:latest "/assets/wrapper" 2 hours ago Up 2 hours (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8022->22/tcp gitlab Dockerイメージを共有ランナーとして登録しました。 concurrent = 1 check_interval = 0 [[runners]] name = "default shared …

2
ドッカーのビルド中とその後のアプリケーションテストの実行の長所と短所は何ですか?
dockerfileはアプリケーション環境を作成します(例:env変数、apt-getを使用したライブラリーのインストールなど)。また、そのgitリポジトリからPythonアプリケーションコードをプルしてコピーします。 ただし、ビルドされたコンテナーでテストを実行するために、アプリケーションテスト(一部のユニット、一部の統合)をdocker RUNコマンド(例RUN /bin/bash -c "source activate cool_env; pytest":)内に配置するか、CIスタック(例:Jenkins、Openshift)を使用してビルド後に配置するかについては、議論しています。 それぞれの長所と短所は何ですか?

2
Dockerコンテナー内で実行されているNode Microサービスをどのように監視しますか?
「Docker化されたアプリケーションはどの程度健全ですか?」に関するこの記事 は監視の問題を説明していますが、Dockerコンテナー内のマイクロサービスを実際に監視する方法の良い例は提供していません。 現在、マイクロサービスを監視するためにPM2モニターを使用していますが、それらをDockerコンテナーに配置すると、それぞれが独自のDockerコンテナーで実行されるすべてのさまざまなマイクロサービスの1つの画面内でこのデータにアクセスできなくなります。 Dockerswarmモニタリングはコンテナーの状態を通知しますが、コンテナー内で実行されているマイクロサービスは通知しません。 この問題を解決する確かな実証済みの方法は何ですか?

1
パブリックIPv6でDocker SwarmコンテナーにDNS名を割り当てる
公開されているIPv6でDockerコンテナー(Swarmモードで実行)をセットアップする方法を理解しようとしています。 Docker Swarmがメッシュルーティングを使用していることは知っていますが、DNS名をアドレスに動的に割り当てる方法がよくわかりません。 例として、Gitサーバー(HTTP 80 443およびSSH 22を使用)git.example.comと通常のWebサーバーexample.com(HTTP 80 443を使用)を実行するとします。どちらもパブリックIPv6アドレスを持っていますが、IPv6アドレスを(たとえばCloudFlareで)ハードコードしたくありません。結局、これはDevOpsです。 これを行うにはどうすればよいですか?これには自分のDNSサーバーを実行する必要があると思います。 注:さらに調査を行った結果、残念ながらEnterprise Editionの一部にすぎないDocker HTTP Routing Mesh(HRM)でこれが可能であるようです。これに対する同様のオープンソースのアプローチを知っている人はいますか?

1
Ansibleを使用してdocker-composeをデプロイするベストプラクティスは何ですか?
Ansibleは、システムにdocker-composeをデプロイし、その後コンテナーを起動するために使用されます。 ansibleがローカルシステムから実行されると、Docker-composeファイルはAnsibleを使用してデプロイされます。 コードがbitbucketにプッシュされると、ファイルのコンテンツは次のようになります。 ../../../../docker-compose.yml CIはこれもシステムにデプロイします。 構造 project/ansible project/docker-compose.yml project/ansible/roles/role/files/docker-compose.yml 討論 docker-compose.ymlを2か所で変更する必要があることを防ぐために、シンボリックリンクが作成されていますが、このファイルにはコンテンツではなくリンクが存在するため、bitbucketでは無視されているようです。 このQ&Aは次のことを示しています。 シンボリックリンクによって参照されるデータはリポジトリに保存されません。 docker-compose.ymlでコードの重複を避けるためにシンボリックリンクを作成すると、問題が発生するようです。

1
コンテナーで実行されているJenkinsスレーブのDocker(dind)でのDockerの代替方法は何ですか?
コンテナーで実行されているJenkinsスレーブを使用する場合、DockerのDockerの代替または「安全な」(セキュリティの観点から)実装とは何ですか。 アーキテクチャの例: Dockerコンテナーとして実行されているJenkinsマスター Dockerコンテナーとして実行されているJenkinsスレーブ Dockerコンテナで実行されるテストタスク いくつかの既知の選択肢: DOOD(Docker-Outside-Of-Docker) Docker APIを使用したJenkinsプラグイン 制約の明確化:アイデアは、Jenkinsをオーケストレーターとして使用し、Dockerをクリーンな環境で使用することです。残りのアーキテクチャは変更される可能性があります。

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