JAWS-UG横浜 #10 - Docker #jawsug https://jawsug-yokohama.connpass.com/event/60066/ 平成29年7月19日(水)の発表資料配布バージョン(スクリプト付き)です。 入口としての「そもそもDockerとは」から、最新の更新情報まで。
以下でポイントごとにソースを見る/比較を行ってみます。 ポイント リクエスト処理部分 voting appとresult appという2つのサービスで処理していたのを、 entrypointというサービスで受け、それぞれ担当するDockerコンテナを起動するという形になります。 リクエスト処理部の違い voting appとresult appはそれぞれ何の変哲もないWebアプリです。 (voting appがPython/Flask、result appがNote.js/expressで作られている) 対して、entrypointもWebアプリ(Go言語)なのですが、net/httpでリクエストを受け、 go-dcgiというライブラリでDockerコンテナを起動するようになっています。 この部分のソースを見てみましょう。 非常に短いですので全文掲載しています。(コメントは私が追記したもの
この記事は何か イメージやコンテナなどの基本からdocker-compose、docker-machine, docker swarmなどのDocker周りの様々な概念の全体像を整理して、Dockerの仕組みを理解するための記事 対象読者 ・Dockerって何? ・Dockerちょっと勉強したけどDocker compose? Docker machine? Docker Swarm? 色々ありすぎて意味不明 という方 後編では「Docker Machine、Docker Swarm」について書いて行きます。 前編はこちら 中編はこちら ⑦ Docker Machine Docker Machineは、Docker Engineを搭載した仮想マシンの管理(作成、起動、停止、再起動など)をコマンドラインから実行できるツールです。 Mac OSの場合は、仮想化ソフト(Virtual Box)を
本稿は Docker Swarm Exceeds Kubernetes Performance at Scale (2016/3/9) の和訳です。 コンテナのオーケストレーションについては既に結論が出ていると、コミュニティで話す人が何人かいます。 現実 は真実を越えられません。500人以上を対象に行ったDevOpsとマイクロサービス、パブリッククラウドに関する最近の調査によって、Docker Swarm、Google Kubernetes、そして Amazon EC2 Container Service (ECS)の間でのオーケストレーションに関する競合の存在が明らかになりました。 あなたは今どのコンテナ・オーケストレーションツールとマネージメントツールを使っていますか? 回答数:501、無回答数:0 どのオーケストレーションツールが自分の環境にあっているかを考えるためには、次の三つのキ
This document summarizes a microservices meetup hosted by @mosa_siru. Key points include: 1. @mosa_siru is an engineer at DeNA and CTO of Gunosy. 2. The meetup covered Gunosy's architecture with over 45 GitHub repositories, 30 stacks, 10 Go APIs, and 10 Python batch processes using AWS services like Kinesis, Lambda, SQS and API Gateway. 3. Challenges discussed were managing 30 microservices, ensur
本投稿は、「Announcing Docker 1.9: Production-ready Swarm and Multi-host Networking」の参考日本語訳です。 ■ Docker 1.9 発表:Swarm とマルチホスト・ネットワーキングのプロダクション対応 今日、私達は Docker 1.0 を発表します。これはとても大きなものです。Docker Swarm とマルチホスト・ネットワーキングはプロダクション(訳注;実サービス・本番向けの意味)対応となりました。Docker Engine は新しいボリューム管理システムを持ち、Docker Compose は複数の環境をよりよくサポートします。これはアプリケーションをプロダクションでスケールするための基礎を構成するものです。 コンテナ化は、インフラの構築のしかたを変えつつあり、作業にあたっては正しいツールを使う必要があります
追記 2016年2月: 以下は2015年5月時点の情報です。いずれ更新または新規投稿するかもしれませんが、本記事の情報(概念的な部分はともかく特にデモ)は古い可能性がありますのでご了承ください。 2016年8月: Docker1.12のSwarm modeの記事を書きました はじめに 先日ちょうどDockerのオフィシャルなオンラインMeetupでMachine/Compose/Swarmの話をしていたので、今更ながらキャッチアップついでにまとめてみました。 初心者向けに概要を掴む程度の内容の投稿です。 なお、日本時間だと深夜1時でしたので参加された方は少ないかもしれませんが動画が公開されています。 Machine Swarm Compose DockerのMeetup自体は毎週行われており、Docker社のブログにまとめが載るのでチェックしておくと良いかもしれません。 次回(5/19)は
注意 UPDATED: 2017/02/07 この記事で説明しているクラスタは古い手法です。 本稿の内容で構築したクラスタでは docker service などの Swarm mode で導入されたコマンドが動作しません。 Docker 1.12 以降、 Swarm mode に DNS, LB が組み込まれており、外部のディスカバリサービス (Consul などの KVS) に依存しなくなりました。 Swarm mode は標準コマンド docker swarm でセットアップ可能なため、 docker-machine ssh でクラスタを構築できそうです。近日中に記事として公開予定です。 書きました → Swarm mode クラスタを構築して動かしてみる | Qiita TL;DR コマンド見れば分かる人向けの完成品はこちら → hidekuro/swarm-cluster-sam
はじめに 前回、Docker MachineでAmazon EC2をコントロールしてみました。今回は更にDocker Swarmを組み合わせて、Amazon EC2上にDockerクラスタを構成してみたいと思います。 やってみた 前回同様、Amazon EC2で構築したAmazon Linux上で実行しています。 クラスタを作成する クラスタを作成し、クラスタグループを構成するためのクラスタIDを発行します。 $ sudo docker run swarm create 934afbacc9e635c52e8b6544a2eba998 マスターノードとなるDocker Machineを作成する クラスタの管理を行うマスターノードとなるDocker Machineを作成します。前回と違うのは--swarmオプション以降で、マスターノードとなるために--swarm-masterオプションを付与
新たなサーバー環境構築ツールとして普及が始まっているDockerは、その開発も積極的に行われている。そこで本連載記事では、4回に渡って最近Dockerに実装された新機能について紹介していく。今回は、Dockerが開発するDockerクラスタ管理・運用ツール「Docker Swarm」について紹介する。 Dockerを使ったクラスタ環境とは Dockerでは1つのアプリケーションを1つのコンテナに入れ、複数のコンテナを組み合わせてサービスを構築する、という手法が推奨されている。このような構成によって各アプリケーションを分離することで、セキュリティの強化や開発・運用の効率化が期待できる。また、コンテナはデプロイが容易であるため、同じコンテナを複数のマシン上で同時に実行させる負荷分散構成を取りやすいというメリットもある。 Dockerを利用したクラスタ環境についてはDockerが登場した当初から
Machines running SwarmKit can be grouped together in order to form a Swarm, coordinating tasks with each other. Once a machine joins, it becomes a Swarm Node. Nodes can either be worker nodes or manager nodes. Worker Nodes are responsible for running Tasks using an Executor. SwarmKit comes with a default Docker Container Executor that can be easily swapped out. Manager Nodes on the other hand acce
はじめに 前々回: Docker MachineでAmazon EC2をコントロールする 前回: Amazon EC2でDocker Machine + Docker Swarmを使う 今回はDocker Machine、Docker Swarm、Docker Composeの3つを使って、Amazon EC2でDockerコンテナをオーケストレーションしてみます! やってみた Swarmクラスタを作成する まずは前回と同様に、Docker MachineでSwarmクラスタを作成します。 なおswarm createではdiscovery-stage.hub.docker.comにリクエストしてクラスタIDを取得しているのですが、タイミングによってはエラーが出る事がありました。現在はベータリリースという扱いなので仕方がないかと思いますが、ちょっと注意が必要です。 $ sudo docke
先日リリースされたDocker 1.13で、swarm mode上でのdocker composeが使えるようになったのでさっそく試しました。 何が嬉しいのか まず、1.12でdockerにビルトインのswarm modeが追加されました。 その時はクラスタをサクッと作れて嬉しいぞ!と歓喜したものです。 しかし、使ってるとservice作るのがめんどくせえ…、とすぐになりました。 そうです。 docker-composeだと各サービスを宣言的に書けるのですが、これがswarm modeのクラスタを対象としていませんでした。 /(^o^)\ナンテコッタイ serviceをコンスタントに再現可能にするためには職人によるシェルスクリプトを残すなどの工夫が必要になります。 それはそれでまあ別にいいんですが…。 まあでもツラいです。 そこで1.13ですよ。 docker-composeによる宣言的な
米Dockerは1月19日、アプリケーションコンテナエンジンの最新版「Docker 1.13」をリリースした。Dockerクラスタ機能「Docker Swarm」に関連するものなど、多数の強化が加わっている。 Docker 1.13は、2016年8月に公開された「Docker 1.12」に続く最新版。大きな新機能としては、デプロイを行う「docker stack deploy」コマンドで、デプロイツール「Docker Compose」向け設定ファイルである「docker-compose.yml」ファイルを直接読み込めるようになった。これにより、Docker組み込みのコンテナクラスタ機能であるSwarmモードへのデプロイがより容易になっている。 Swarmモードではこれ以外にも多数の設定オプションが追加されたほか、「docker run」コマンドにSwarmモードのオーバーレイネットワークへ
Abstract Heroku や Google Apps Engine は大変に便利ですが、ジョークアプリや自分専用のアプリなど全く収益性の無いアプリを沢山デプロイするにはちょっと高価です。 また、なんらかの事情で上記のようなプラットフォームに頼れないような環境で、オレオレ PaaS のようなものを構築できる知識を持っておくとなにかと便利です。 かつて、このようなものを構築するには、様々なソフトウェアとコンポーネントの知識が必要でした(簡単に構築できるものはあまり実用的ではありませんでした)。 しかし、時代は変わりました。おめでとうございます。今や Docker swarm mode によって、 PaaS モドキは簡単に作れるようになりました。殆ど知識は必要ありません。 しかし、これは終わりなき戦いのはじまりだったのです。 ここでは私は以下のことを話します Docker swarm mo
この記事でやること こういう感じのクラスタをつくります ポイントとしては、 EC2インスタンスを2台動かし、両方で swarm manager を動かす swarm agent を動かす ということをやります。 agentを複数ホストでやるやつは、ググれば結構出てきますが、 今回はmanagerも複数ホストでやってみます。 今回利用した各バージョンとかは以下のとおり。 AMI: ami-f2338ff2 CoreOS-stable-723.3.0-hvm CoreOS: 723.3.0 docker: 1.6.2 etcd: 2.0.12 docker swarm: 0.4.0 作ろう 以下、cloud-config を作っていきます あ、先に断っておきますが、 Docker Swarm によると現在まだ Note: Swarm is currently in BETA, so thing
背景 過去に大好評だったDocker入門の内容を2016年版にupdateした再入門投稿3本が終わったので、 まだ紹介していない機能を投稿していきます。 Docker Compose 入門 Docker Machine 入門(Hyper-Vの場合) Docker Machine 入門(AWSの場合) Docker 再入門3 2016 Docker 再入門2 2016 Docker 再入門1 2016 Docker 入門 (SlideShare) 動作環境 ThinkPad X200s OS:Linux MINT 18 ThinkPad X1 Carbon OS:Windows 10 Pro (Hyper-V) 個人的に開発環境OSはLinuxが主なので、MacOSやWindowsについては優先度が低いのでご了承ください。 Docker 1.12(docker swarm mode) 複数の
前回はDocker MachineでDockerノードを構築してみたので、今回は同時にアナウンスされたDocker Swarmでクラスタを構築してみます。 Docker Swarmとは Docker Swarmは複数のDockerホストをクラスタ化するためのツールです。Docker SwarmをAPIを受け取るフロントエンドとして、コンテナをクラスタのメンバー上で動かすことができます。 Docker Swarmのマネージャをホストとして指定すれば各種Dockerのツールもそのまま使えるようです。 ノードの構築 今回はIDCFクラウド上にnode1〜node3の3つの仮想マシンを作成しクラスタを後置鵜してみます。 3台の役割とlistenしているIP・ポートは以下の通りとします。 node1 マネージャ(tcp://0.0.0.0:12375) ノード(tcp://0.0.0.0:2375)
docker swarm 1.12.xのmanager1台/worker1台構成でクラスタ手動フェールオーバ/フェールバックして再起動する手順Dockerswarm はじめに 先日swarm manager1台/worker1台の構成で、おもむろにmanagerノードのOS再起動したらクラスタがぶっ壊れて悲しい思いをしたので、ちゃんとswarmクラスタのメンテナンス手順を調べました。 クラスタ運用する場合はスプリットブレインを避けるためにmanagerノードを3台以上立てるのが理想的ではありますが、開発環境などではそこまでリソースを割けないのでmanager1台運用にしてます。で、おもむろにmanagerを止めるとクラスタが壊れるので、安全にやるには一旦workerをmanagerに昇格してフェールオーバさせて、managerノードを再起動し、フェールバックさせるという手順を踏む必要があり
Docker Swarm Mode で Mastodon 立てる 公式に用意されている Docker Image はクソであれを使ってデプロイするのは混乱の元でしかない。ローカルで assets:precompile してそれをボリュームでどうにかしろとかクソすぎる。というわけでわりかし楽に使えるイメージを作った。 https://hub.docker.com/r/ssig33/mastodon/ 一応公式を擁護すると docker build 中にリンクができないみたいな問題があってそれがだるいみたいな話はある。 事前に用意 Redis と PostgreSQL をどっかに立てる。 Swarm mode 使って立ててもいい。 S3 にバケットを作って静的サイト配信を On にする。またその静的サイトを Cloudfront で配信するようにする。 何故こんなことをするかというとこういう問
Our 2018 Docker Usage Report provides an inside look at shifting container trends as revealed by a point-in-time snapshot of real-world container usage as reported by the Sysdig Monitor and Sysdig Secure cloud service. The quick summary: Organizations are getting more bang for their hardware buck by packing in 50% more containers per host, Docker still rules the roost but brand name container runt
概要 Swarm と組み合わせることで、Compose(Fig) がマルチホスト環境下で使えるようになるという話。 Sinatra コンテナと Redis コンテナからなるアプリケーションを複数の Docker ホストにまたがって配置する。 マルチホスト環境での Compose Swarm クラスタの構築 Docker Swarm リファレンス Docker Swarm を使ってマルチホスト環境下で Hello World コンテナを動かす を参考に 3 台の Docker ホストを用意する。 $ docker -H core-01:2377 info Containers: 4 Nodes: 3 core-01: core-01:2375 └ Containers: 2 └ Reserved CPUs: 0 / 1 └ Reserved Memory: 0 B / 998 MiB cor
Docker Swarm について 通常、Docker では、複数のホストにまたがってコンテナが存在する場合、docker コマンドを実行するたびに-H オプションを付加して接続先を切り替える必要が有りました。 結果として、複数のホスト上にコンテナが散財する場合、docker コマンドで透過的にコンテナを管理することが困難でした。 そういった問題はDocker Swarm を使うことで軽減することができます。 Docker Swarm は1 つ以上のDocker ホストを1 つのDocker ホスト(Docker Swarm manager) にpool することができるようになり、ユーザはそのDocker Swarm manager ホストに対してコマンドを発行することで、複数のDocker ノードをcluster として透過的に管理することができるようになります。 Docker Swa
*** note *** This only works with Docker Swarm Mode in Docker Engine 1.12.0 and later. It does not work with the separate Docker Swarm project Also this is a sample app meant for learning Docker. Running this app in production is insecure and should be avoided. If you want to run it in production you must take all security precautions, and in particular Protect the Docker daemon socket with SSL. T
おもしろい話をしようと思ったのですが、 15 分しかないので素早くやっていきます 結論 今すぐ Docker ベースで HA 環境を作らないといけない use Kubernetes ベンチャー企業でインフラのコストを低減させたい AWS や GCP が配ってるクーポンは無視して Heroku 使うべき デプロイが趣味の人 この場で Docker Swarm Mode を使いはじめるべき それ以外の人 Docker Swarm Mode にのんびり注目してみるといいです、全てが変わる可能性を持っている Kubernetes と比較した時に Docker Swarm mode が優れている点 Kubernetes の基本的な構成 引用元: kubernetesによるDockerコンテナ管理入門 - さくらのナレッジ Docker Swarm Mode の基本的な構成 図作成: ssig33 優
この記事で得られるもの 作業端末上の docker-machine コマンドだけで Swarm mode クラスタを構築する手順。 手元の VirtualBox で試せる Swarm mode クラスタ環境 先に完成品だけ見たい方はこちら。 → GitHub - hidekuro/swarm-cluster-sample 概要 Docker 1.12 以降は、とてもシンプルな手順で Swarm クラスタを構築できます。 名前解決や負荷分散は Swarm mode に組み込まれ、外部の KVS はもはや不要です。 過去の Swarm クラスタ 以前の記事 ではこんなクラスタを構築しました。 Consul にも気を配る必要があり、大変でした。 Docker 1.12 以降の Swarm クラスタ 現在の Docker では、 KVS が不要になりました。 cluster の範囲に manage
Docker マルチホストネットワーキング: swarm, consul, overlay network(VXLAN) を使用した構築手順DebianUbuntuDockerconsulDockerSwarm Docker multi host ネットワーク 今までDocker の--link 機能を使うことで、同一ホスト内のコンテナの名前解決をして同一ネットワークのコンテナに対してアクセスすることは可能でしたが、それが複数の異なるDocker ホストになると--link 機能では実現することができませんでした。 そこでDocker のmulti ホストネットワーク及びDocker overlay ネットワークの機能を使用することで異なるホスト上にあるコンテナに対して、あたかも同じネットワーク上に存在しているコンテナのように、便利にアクセスすることができるようになります。 この機能を使う
半年くらい前にこんな記事を書いたのですが、まあうまく行きませんでした。 okzk.hatenablog.com 頂いたブコメも試してみたんですけど、結果は芳しくなく。。。 Re: Dockerに載せたサービスをホットデプロイする - okzkメモ --stop-grace-periodの設定とDockerfileのHEARTBEATとSTOPSIGNALの設定をすれば出来るはず2016/08/17 06:19 b.hatena.ne.jp そんな中、元記事のヒトも試してみたようですけど、同じ結果に。。。 h3poteto.hatenablog.com そんな中、CVE-2016-9962も出ちゃったし、docker 1.13もリリースされたコトだし、ということでdocker 1.13でswarmモードをもう一回試してみました。 インストール後、swarm初期化 # docker swarm
概要 2014年末の DockerCon EUで発表された公式のオーケストレーションツール Machine, Swarm, Compose のうち Swarm についてのまとめ。 2015年02月26日にダウンロード可能な最初のバージョンが出た Swarm を一言で説明するならば、複数ホスト環境でも1ホストと同じように Docker を扱えるツール。 Machine, Compose については以下参照 Docker Machine リファレンス Docker Compose リファレンス Swarm とは Swarm は Docker 環境をクラスタリングするツール。 swarm ができること Docker コンテナを使ったシンプルなセットアップ リソースマネジメント / スケジューリング 既存の Docker Remote API と互換性のある Docker Swarm API を提
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く