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

Dockerは、ソフトウェアコンテナー内のアプリケーションの展開を自動化するオープンソースプロジェクトです。

2
方法:エラスティックコンテナーサービスでのDockerized MongoDBレプリケーション
Node.jsアプリと、AWS ECSで実行されているMongoDBデータベースがあります。現在取得しているセットアップは、2つのELBと2つのインスタンスで構成されており、それぞれがDockerコンテナーとそれに割り当てられたサービス(node / mongo)を実行しています。 Elastic Load Balancer -> Dockerized Node -> Elastic Load Balancer -> Dockerized MongoDB ここで入手できるMongoDBの公式Dockerイメージを実行しています:https : //registry.hub.docker.com/_/mongo/ DockerとECSを使用してMongoDBのreplicaSetをデプロイするにはどうすればよいですか?各レプリカは異なるインスタンスで実行されていますか?

3
nginxが提供する静的ファイル内でnginx環境変数を使用できますか?
nginx設定で環境変数を使用し、nginxが静的ファイル(html、js、css-たとえばAngularJsアプリ)のみを提供するように構成されている場合、nginxが提供するJSファイル内で環境変数を使用する方法はありますか? ?または、これを実行して非静的サーバー(io.js、phpなど)を実行する唯一の方法です。 ところで、nginxの設定では、環境変数をネイティブに使用することはできません。 私は環境について話すときnginxの設定Iにvarsはこの記事のように意味:どのように私はNginx.confで環境変数を使用することができます彼らが使用env APP_WEB_1_PORT_5000_TCP_ADDR;し、$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"}; ユースケースを正確に説明してください 私の特定の使用例は、Dockerコンテナーにnginxを利用したAngularJSアプリがあることです。このアプリは、別のシステムで実行されているAPIを完全に使用する「単一ページアプリケーション」です。アプリには、Google-Analtyicsコードなどの異なる設定があるため、現在、本番とステージングの間で別のDockerコンテナーを実行しています。この環境固有のデータはconfig.jsファイルに保存され、値は現在ハードコーディングされています。gitのmasterブランチの1つの値とブランチの異なる値ですstaging。制作とステージングの両方で同じコンテナを使用できるように、デザインを変更したいと考えています。私は(それを実行したときに容器の中にENVのVARを渡したいdocker run -e GACODE=UA-12345-6 ...介して、()とENVのVARを使用nginxの持ちenv GACODE;と$ENV{"GACODE"}なりますconfig.jsファイルでは、ハードコーディングするのではなく、渡されたGoogleAnaltyicsコードを使用できます。これが可能かどうかはわかりません(したがって、質問;))。nginxのみを使用すると、コンテナーが単一プロセスになりますが、io.jsを使用する必要がある場合は、複数のリンクされたコンテナーが必要であり、より多くの可動部分がより複雑になります)。

6
AWS ElasticBeanstalk docker-thin-poolがいっぱいになり、ファイルシステムが読み取り専用として再マウントされますか?
AWSがElasticBeanstalkにDockerの「シンプール」を設定する方法と、それがどのように満たされるかを理解できません。Dockerシンプールが何らかの理由でいっぱいになり、アプリがディスクに書き込もうとするとクラッシュします。 これはコンテナの中からです: >df -h > /dev/xvda1 25G 1.4G 24G 6% 実際、EBSには25GBのディスクが割り当てられています。1.6 GBがdu -sh /戻ります。 EC2の外では、それは無害に十分に始まります...(を介してlvs) LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert docker-pool docker twi-aot--- 11.86g 37.50 14.65 ただし、ファイルシステムはすぐに読み取り専用として再マウントされます。dmesg経由: [2077620.433382] Buffer I/O error on device dm-4, logical block 2501385 [2077620.437372] EXT4-fs warning (device dm-4): ext4_end_bio:329: …

1
パッケージの特定のバージョンを指定するLinux環境を構築するにはどうすればよいですか?
特定のバージョンのJavaに関連付けられたカスタムアプリケーションを実行するdockerfileを作成しています。 私がcentos7ベースイメージを使用しているのは、それが私が参照していた記事が使用していたものであり、何かを使用する必要があるためです。正直に言って、私が使用しているユーザーランドは気にしません。このイメージのポイントは、ホストされているソフトウェアであり、Linuxディストリビューション自体は目的を達成するための手段にすぎません。重要なのは、JDKが他のアプリケーションやユーザーによって使用されないことです。 述べたように、私のアプリケーションは使用しているJavaの特定のバージョンに関連付けられています。Javaバージョンへの更新には、リリース前にその特定のバージョンのソフトウェアの完全な回帰テストが必要です。 私がフォローしていた記事は、次のような関連するdockerfile JDKインストールパーツから始まりました。 FROM centos:centos7 RUN yum makecache \ && yum update -y \ && yum install -y \ java-1.8.0-openjdk-devel \ && yum clean all それは十分に具体的ではありません。イメージがビルドされるときはいつでも、ランダムなバージョンのJavaを取得します。これは私が望むものではありません。特定のバージョンのJavaが必要です。 dockerファイルを次のように変更しました。 FROM centos:centos7 RUN yum makecache \ && yum update -y \ && yum install -y \ java-1.8.0-openjdk-devel-1.8.0.65-3.b17.el7 \ && yum clean …
9 linux  centos  java  yum  docker 

2
AWSでDocker / AnsibleとAnsible、Puppet、Foremanを使用した不変サーバーモデル?
私たちは興味深い議論にぶつかり、2つの陣営に陥っています。見落としている可能性のあるアイデアや落とし穴に関する特定の問題に興味があります。本当に、私たちが決定を下したり、私たちが説明していないことを指摘したりするのを助けることができるものは何でも。私はこれが「意見なし」のルールを少し厳密に回避していることを知っていますが、それでもまだ受け入れ可能な質問であることを願っています。長さについても申し訳ありませんが、かなりのニュアンスがあります。 1)一方(私-偏見がないわけではない)は、不変サーバーモデルがクラウドシステムにとって非常に興味深いものであると考えています。そのために、インフラストラクチャのすべてのコンポーネントをDockerに移動するプロトタイプを作成しました。私たちのカスタムアプリケーションは、ローカルDockerレジストリにデプロイするDockerイメージに、Jenkinsを介して直接構築されます。次に、Ansibleロールの大規模なセットと、空のサーバーに到達できるプレイブックを作成し、Dockerをインストールして、必要に応じてすべてのコンテナーをインストールするようにDockerに指示しました。数分後、アプリ全体とそれをサポートするすべてのインフラストラクチャが接続され、機能します-ロギング、モニタリング、データベースの作成/入力など。完成したマシンは、完全にコピーされた自己完結型のQAまたは開発環境です応用。これをスケールアウトするための計画は、新しいPlaybookを作成して、ベースの信頼できるAMI(おそらく非常に最小限のイメージ)から新しいAWSサーバーを構築し、本番アプリケーションのローリングデプロイを実行して構成管理とリリースを処理し、通常はサーバーを再び編集しないことです。それらを新しくするだけです。私が説明したものを実際に機能させることについては心配していません-それが妥当なモデルである場合でも。 2)他のキャンプは、Puppetを使用して構成管理を処理したい、Ansibleはビルドプロセスから生成されたtarballであるカスタムアプリケーションをデプロイし、Foremanはプロセス全体のトリガーと管理を処理し、Kateloはある程度のベースを実行したい画像管理。リリースには、必要に応じてPuppetが構成を変更し、Ansibleが更新されたコンポーネントをある程度のForemanの調整でデプロイすることが含まれます。新しいサーバーが必要になった場合、サーバーはかなり迅速に構築されますが、その意図は、標準プロセスの一部としてサーバーを使い捨てにすることではありません。これはフェニックスサーバーモデルに近いですが、長寿命です。 だから私の質問は本当にこれに帰着します:私が上でそれらを説明したように、ツールを備えた不変のサーバーモデルは実際にそれが現れるのと同じくらい現実的ですか?私のステージングプロセスは、文字どおりアプリケーションのクローン全体をライブで構築することができ、QAでそれをハンマーに任せて、データベースストレージとDNS設定を反転させてライブにすることができるというアイデアが大好きです。 または、不変サーバーモデルは実際には失敗しますか?AWSとクラウド環境の両方でかなりの経験を持っているので、それは本当に問題ではありません-合理的に洗練されたアプリを今後確実にデプロイする方法の問題です。非常に頻繁にリリースされるため、これは特に重要です。 実際にEC2サーバーを作成することを除いて、Ansibleは必要なほとんどのことを行っていますが、それは難しくありません。このモデルでパペット/フォアマン/カテロが実際に必要な理由を理解できません。Dockerは、私が知ることのできる実際のツールでは、カスタムデプロイスクリプトよりもはるかにクリーンでシンプルです。Ansibleは、その場で構成する必要がないか心配する必要がなくなり、新しい構成で再構築するだけの場合、Puppetよりもはるかに簡単に使用できます。私はKISSプリンシパルのファンです-特にマーフィーの法則が蔓延している自動化で。機械が少ないほど、IMOは向上します。 アプローチについての考え/コメントまたは提案は大歓迎です!

3
docker-machineが再起動時にデータをクリアするのはなぜですか?
OSXでDocker Toolboxを使用しています。 永続データを保存するためのデータボリュームコンテナーを作成しました:https : //docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container。 このデータが実際にはboot2docker VM(docker-machineによって作成された)に保存されており、コンテナーには保存されていないことを確認しました。ただし、「docker-machine restart」は、vm上のこのカスタムデータをクリアします。 何が起こっているかについてのドキュメントが見つかりません。/ var / lib / docker内のデータが保持されることを言及しているフォーラム投稿を1つ見つけましたが、それを述べている公式のドキュメントは見つかりませんでした。また、上記の永続ストレージガイドがこのパスを使用していないことや、データは削除されます。 これは予想されたものであり、永続的なデータを保存するための正しいパスに関する公式ドキュメントはありますか? 編集:失敗したシナリオの例を追加 $ docker-machine ssh alt docker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello" docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello" hello docker@alt:~$ exit $ docker-machine …

2
RUNでDockerfileから/ etc / hostsファイルに書き込めません
私はかなりシンプルなDockerfileを使用してDockerイメージを作成しています。Dockerfile内に次のコマンドがあります。 RUN printf "192.92.13.243 www.hahaha.com \n" >> /etc/hosts この時点ではイメージの作成は停止しないため、コマンド自体は問題ないようです。 問題は次のとおりです。イメージを実行すると、「/ etc / hosts」内に挿入されているはずの行がそこにありません。 今、私は周りを検索しましたが、バージョン1.2以前のdockerでは、コンテナー内のホストファイルに問題があることがわかりました。私の場合、現時点で最新のバージョン1.5を使用しています。 何か不足していますか? 更新1: dockerのgithubページには、オープンとクローズの両方で多くの問題があるようです。

2
JenkinsユーザーにDocker unixソケットにアクセスする権限がないのはなぜですか?
JenkinsジョブでDockerコマンドを実行できると考えて、jenkinsユーザーをdockerグループに追加しました。jenkinsユーザーに切り替えると、(手動で)動作することを確認できます。 ubuntu@hostname:~$ ps aux | grep java jenkins 2210 9.5 7.5 1950316 292896 ? Sl 00:01 1:00 /usr/bin/java -jar /data/jenkins/jenkins-1.586.war --httpPort=8080 -Xloggc:/var/log/jenkins/gc.log ubuntu@hostname:~$ getent group docker docker:x:999:jenkins ubuntu@hostname:~$ ls -la /var/run/docker.* -rw-r--r-- 1 root root 4 Oct 23 18:32 /var/run/docker.pid srw-rw---- 1 root docker 0 Oct 23 18:32 /var/run/docker.sock ubuntu@hostname:~$ …

3
Dockerコンテナーでの接続または実行を防ぐ方法
ビルド済みのDockerコンテナーのユーザーが、そのコンテナーの実行中のインスタンス内のシェルにアクセスできないようにするにはどうすればよいですか?私はググって、このシナリオに関連するすべての投稿を読み、実用的な解決策なしに出てきました。コンテナ内の特定のリソースへのアクセスを防止しようとしています。この問い合わせのために、構成ファイル内のシリアル番号を考えてみましょう。私は、ubuntuイメージに基づくjava:7イメージに基づいて構築しています。 ソリューションをテストするには、次の手順を実行します。 Dockerコンテナーを作成して実行する コンテナをエクスポートする docker export [コンテナー名] | gzip -c> mycontainer.tar.gz 外部システムにコンテナーをインポートする gzip -dc mycontainer.tar.gz | Dockerインポート-[コンテナ名] コンテナーを実行する 次の方法のいずれか/すべてを使用して、実行中のコンテナにシェルします。 docker exec -it [コンテナ名] bash docker attach [コンテナ名] docker run -ti --entrypoint = / bin / bash [コンテナ名] [コンテナ名]はコンテナの名前です bash、dash、およびshはすべて有効なシェルです
9 docker 

4
ネットワーク名前空間内のiptables LOGルール
Dockerコンテナーのiptablesルールをセットアップしようとしています。nsenterを使用して、コンテナーのネットワーク名前空間内でiptablesコマンドを実行しています。 # log access to port 8080 PID=$(docker inspect --format "{{.State.Pid}}" $ID) /home/ubuntu/nsenter -n -t $PID iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 8080 -j LOG このアプローチは、LOGルールを除いて完全に機能します。それらはどこにも記録しないようです。ホストシステムに適用される同じルールが機能し、にログを記録することに注意してください/var/log/kern.log。 これらのログルールの出力はどこにありますか?これはネットワーク名前空間の既知の問題/制限ですか?

4
ECSサービスはタスク定義を更新しません
ecsクラスターでは、2つのec2インスタンスでサービスを実行しています。そして、新しいdockerイメージを取得するようにタスク定義を更新します。ただし、新しいタスク定義があっても、古いタスク定義はまだ実行されています。 次のコマンドを使用して、タスクの定義とサービスを更新しました。 aws ecs register-task-definition --family service90-task --cli-input-json file://service90-task.json aws ecs update-service --cluster service90-cluster --service service90-service --desired-count 0 TASK_REVISION=`aws ecs describe-task-definition --task-definition service90-task | egrep "revision" | tr "/" " " | awk '{print $2}' | sed 's/"$//'` aws ecs update-service --cluster service90-cluster --service service90-service --task-definition service90-task:${TASK_REVISION} --desired-count 2 何度か試しましたが、どこが間違っているのかわかりません。ecsサービスに古いタスク定義の代わりに新しいタスク定義を実行させたい。

1
UFWがdockerを使用して公開されたポートをブロックしないのはなぜですか?
私はufwにいくつかのルールを設定しましたが、何もブロックしていないと思います。これが現在のステータスです。 ~# ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip To Action From -- ------ ---- 22 ALLOW IN Anywhere 80 ALLOW IN Anywhere 27015:27115/udp ALLOW IN Anywhere 27015:27115/tcp ALLOW IN Anywhere 22 (v6) ALLOW IN Anywhere (v6) 80 (v6) …
8 firewall  docker  ufw 

2
分散ファイルシステム上のデータを含むコンテナー化されたPostgreSQL
誰かが実際に何らかの形で分散ファイルシステム-GlusterFSまたはそれ以外のもの-の運用環境のコンテナーでPostgreSQLを実行しているかどうか知りたいです。 私は現在Mesos / Marathonを実行しています。PostgreSQLノードに障害が発生した場合、Marathonは他のノードでPostgreSQLの別のインスタンスを起動するだけで、適切に実行されると(サービスの検出とアプリケーションによるデータベース接続の損失からの回復)、究極のフォールトトレランスが実現されます。 私はPostgreSQLにログ配布やホットスタンバイバックアップなどの独自のHAソリューションがあることを知っていますが、マスターからスレーブに切り替えるタイミング、適切に行う方法などの問題を解決する必要があります。 では、GlusterFSまたは同様の製品のPostgreSQLをどのように実行しますか?もしそうなら、それは安定していますか?パフォーマンスはどうですか?

2
Dockerの公式Wordpressコンテナー内でLet's Encryptを使用する
Let's Encrypt を公式のDocker Wordpressコンテナに入れようとしています。 環境をセットアップする $ cat docker-compose.yml wordpress: hostname: some.fqdn.com image: wordpress links: - db:mysql ports: - 80:80 - 443:443 db: image: mariadb environment: MYSQL_ROOT_PASSWORD: example $ docker-compose -f docker-compose.yml up -d $ docker exec -ti root_wordpress_1 bash Let's Encryptをインストールする $ apt-get update && apt-get install -y git-core [...] …


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