サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
blue1st-tech.hateblo.jp
接続情報などコンテナ内への記述が憚られる情報について外部から与える方法としてsecretsがdocker 1.13/docker-compose.yamlのformat ver3.1からサポートされた。 予めdocker secretコマンドでファイルを登録するか、もしくはdocker-compose.yaml内でファイルを指定することで、それらのファイルがコンテナ内の/run/secretesディレクトリ以下にマウントされる。 yamlに記載する場合 以下のようなファイル構成を想定。 $ tree . ├── docker-compose.yaml └── sec.txt 秘匿すべきファイルとしてsec.txtを想定。 $ cat sec.txt hogehoge secrets項として該当のファイルをmy_secret項として登録し、services項にてsecretsとしてそれを指定
便利ツール紹介その2。 HelmはKubernetesのパッケージ管理ツールである。リポジトリに登録された構成情報(これをChartと呼ぶ)をinstallコマンドに適時引数で設定情報を与え、簡単に自分のクラスタに導入(これをReleaseと呼ぶ)することができるものである。 github.com 例えば公式リポジトリにstable/mysqlとして登録されているChartをmy-databaseという名称でパスワード等を設定して展開するには $ helm install --name my-release \ --set mysqlRootPassword=secretpassword,mysqlUser=my-user,mysqlPassword=my-password,mysqlDatabase=my-database \ stable/mysql という具合である。 もちろん用意さ
Docker for MacにKubernetesが載ったということで、今回は複数のPodのログをまとめて参照できるsternを紹介。(前々から書こうとは思ってたんだけど、機会を逸していたんだよね) github.com 導入 MacならHomebrewからインストールできる。 $ brew install stern サンプルの用意 実際の使い方の前に以下のようなサンプルを用意してみる。KuberneteへのPodの展開は現在ではDeploymentを用いることが推奨されているので、ひたすらログ出力する2つのコンテナによって構成されたPodを3つデプロイしてみる。 # deployment.yaml apiVersion: apps/v1beta1 kind: Deployment metadata: name: sample spec: replicas: 3 template: me
今朝メーリングリストで通知が来たので試してみた! docs.docker.com 導入 組み込まれるのは17.12.0-ce-mac45からということでEdge版をダウンロード&インストール。 docs.docker.com Preferences..メニューを確認するとちゃんとKubernetes v1.8.2の文字が! Kubernetesを使用するには、新たに設けられたKubernetesタブからEnable KubernetesをオンにしてApplyボタンをポチり。ちょっと待つとKubernetes is runningになる。 動作確認 そんなこんなで早速いじってみる。 contextの切り替え 操作対象のクラスタとして既存のminikubeに加えて、新たにdocker-for-desktopが追加されていることが確認できる。use-contextで切り替えて使用していく。min
ここのところ仕事ではもっぱらVue.jsを使って(慣れない)フロントエンド開発をやっていたりする。 以前に触っていたAngular.jsと感触が近い部分もあって個人的にはReact.jsより親しみやすい。 昨今のフロントエンド開発というとbabelだのwebpackだのと最初に把握しなければいけない要素が多くて、昔のような「ブラウザさえあれば気軽に開発できる」という雰囲気ではなくなってしまったのが門外漢にはしんどかったりするのだが、幸いにしてVue.jsにはサクッと雛形を用意してくれるvue-cliというツールが用意されている。 今回はそのあたりについて軽くまとめてみた。 github.com 導入 何はともあれyarnとvue-cliを導入する。 $ npm install -g yarn /usr/local/bin/yarn -> /usr/local/lib/node_module
ざっくりChrome拡張機能(Chrome Extension)の作り方を学んでみた。 学ぶにも相応にモチベーションは必要ということで、 ある程度実用的かつ拡張機能らしさがある例題として「ログインページのパスワードフォームの文字列を平文で表示する」機能を作成してみることにした。 具体的には閲覧しているページのHTMLの<input type="password">要素を<input type="text">に置換すれば良い。 この動作を拡張機能で実装してみる。 拡張機能の作成の概要 拡張機能は大雑把には、以下の要素により作成できる。 名称やアイコン、後述する実態ファイルの構成なんかを定義するmanifest.json 機能の実体となるJavascript UIを構成するHTMLとそれに付随するCSS、Javascript 今回の機能では以下のファイルを作成した。 manifest.json
以前にデータを可視化する手段の一つとしてInfluxDB+Grafanaについて調べていたけれど、 その時は導入してデータ投入して動いた段階で満足してしまっていた。 blue1st-tech.hateblo.jp そうこうしている間にバージョンは1.0を回り、ちょうど使いたい案件もあったので、 改めてもう少し真面目に使い方を調べてみた。 そもそも時系列データベースなるものは何ものなのか もちろん時系列データが扱いやすいらしいことは名前から明らかだけど、 具体的にどう便利なのかという部分を正直なところ理解していなかった。 どこまで時系列データベース一般の話かは分からないが、 InfluxDBを実際に使ってみて「ああなるほど、こりゃ便利だ」と思ったのが スキーマレスなので要素の増減に柔軟に対応できる 時系で変化するデータを集計するのに便利な機能が揃っている 古いデータを自動で削除して容量を削減
OSXでWebアプリケーションを開発する上でDocker on Macは非常に便利ではあるのだが、ファイルシステムの関係上、 多数のファイルをマウントし書き換えが高頻度で発生するような用途では動作が非常に重くなってしまう。 (僕の場合だと最近はWebpackのdev-serverによるライブロードを使ったフロントエンド開発をやってるんだけど、これがファイル数が増えるにしたがって激烈に重くなってきたのだ・・・) そこでファイル転送によって擬似的にマウントしているかのような動作を実現し、 動作速度の低下を回避するツールがdocker-syncである。 docker-sync by EugenMayer github.com 導入 Ruby製らしいのでgem install $ sudo gem install docker-sync 内部で使うらしいコマンドを諸々用意 brew install
ちょっと前まで問題なく使えていたはずのイメージが、 ある日起動してみたらどうもネットワークに接続できない。 イメージは当然作成時と同じものだし、Dockerまわりの設定は変えてない、 ネットワークも別に阻害するような設定はしてないはずなのに・・・ 結論からいえば、 ホスト側のiptablesを別件でも再起動するとDockerのデーモン起動時に設定した項目がリセットされてしまうことが原因だった。 僕は前職でこの件でかなりの時間を無駄にした経験があったのですぐに気づけたけど、 案外こういう話って記事で見かけなくて「これからDockerはじめてみよう」勢に把握されてなさそうなのでメモ的に書いてみた。 Vagrantでテスト環境を作る 実際に試してみる。 環境はCentOS7のfirewalldを無効化してiptablesを入れたもの。 (米国なんかの潮流をみるとUbuntuの方が勢いありそうだけ
Web上でSQLを記述・保存できて気軽にデータの可視化できるスグレモノRedash。 blue1st-tech.hateblo.jp Redashはシンプルながらも十分な機能があるのだが、 一方で使い込んでくるともう少しグラフに表現力があれば・・・とか、 ダッシュボードの配置がもっと柔軟なら・・・とか思ったりする場面もある。 そこで代替になりそうなのがAirbnb版RedashとでもいうべきSuperset。 github.com (以前のまだ「Caravel」という名前だった頃から試してみようとは思いつつ時間を取れないでいたら、 いつの間にか名前が変わってた。) 今回はひとまずDockerで導入を行ってみた。 おおよそは手順は公式のドキュメントに従えばよいのだが、 いくつかそのままではすんなり行かない点もあった。 Installation & Configuration — Supers
用途的には以前にやってみたKibana/Elasticsearchとも重複するところだけど、まあ色々の事情で。 blue1st.hateblo.jp ひとまず環境構築+テストデータ投入+グラフ化まで体験してみた感じでは直感的で分かりやすく好印象。 環境構築@Docker Compose 個人的にはお馴染みDocker Composeで。 blue1st.hateblo.jp ひとまずデータファイルの類は/srv/docker/grafana以下にマウントする形で集約する方針。 ポートやドメイン、パスワードなんかは適時読み替えで。 InfluxDBのAPIにあたる8086ポートに関しては同じ番号を割り当てておいた方が各所で楽ではある。 version: "2" services: influxdb: image: influxdb volumes: - /srv/docker/grafana
イケてる感じのIT企業で絶賛大流行のSlack。 (残念ながら前職ではもろもろの都合で導入できなかったし、次の職場も今のところ違うツールらしいんだけど・・・) かくいう僕も、Slackはコミュニケーションツールというよりは個人用のタイムラインとして活用してたりする。 blue1st.hateblo.jp Bitcoinの値動き通知 ゴミ出しの曜日の通知 サーバの監視アラート 重いスクリプトの完了通知 ...etc あらゆるものを一箇所にまとめられるし、スマホからも確認できるから便利なのだ。 そんな感じでテック系な使い方を挙げてみたけど、もっと単純にスマホからもPCからもアクセスできることを活かして、 例えば技術ネタだったり本や映画の感想だったりの思いついた短文をひょいひょい上げるメモとしても重宝していたりする。 で、そういった使い方をしていると欲求として出てくるのが、 発言を必要なものだけ
職場でも既存の画面を置き換えたりして徐々に布教できてきたRe:dash。 blue1st-tech.hateblo.jp blue1st-tech.hateblo.jp クエリを記述するだけなのでスタッフの要望に素早く対応できるし、数値に疑問があった時にもチェックしやすい。 それに、ダッシュボードという形でまとめられることにより、指標間の関係性にも気を向けることができる。 意識高いことを切々と語るよりも実際的なメリットを提示するのが、新しいことをはじめるときには有効ですな。 そんなわけで実際的に使っていく上で必要で色々調べたことをメモってみた。 CLIでユーザアカウントを追加する WebUI上でユーザアカウントを作成するならばメール送信の設定を行う必要があるが、 僕がやってたようなDockerでの起動の場合、メール送信の環境を整えるのはちょっと面倒だったりする。 ユーザアカウントの作成のみ
前回に引き続きredashの話題。 blue1st-tech.hateblo.jp 今回は実際にデータソースを接続し、ダッシュボードを作成してみた。 接続先データソースの準備 redashの操作の前に、何がしかサンプルのデータソースがいるということで、ひとまずdockerでmysqlを立ち上げて用意する。 $ docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=True --name sample_mysql mysql docker execコマンドでmysqlクライアントを起動し、サンプル用のデータを用意する。 $ docker exec -it sample_mysql mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is
rebuildで話題に上っていて気になったプロダクト。 Dockerで気軽に導入できそうだったので試してみた。 github.com redashは大雑把にいえばMySQLなどのデータソースに接続して、 ウェブビュー上からの操作で表やグラフを作成し、 ダッシュボードに並べて表示することができるツールだ。 業務の中では何がしかのデータをウェブで表示したいという案件もあるが、 単にクエリを一発叩いた戻り値を表示しさえすれば良いだけの場合も少なくない。 画面を個別に実装することそれ自体は大した手間ではなくても、 数が増えてくれば後々のメンテナンスコストの増大につながってしまう。 何より、「ここではこう表示されてるけど、どのデータをどう解釈してるんだっけ?」というのを毎回ソースを探して読んで確認するのは意外と大変だ。 そういった現場では、ブラウザ上でのクエリ記述のみで完結するこのredashは非常
毎回の起動時に外部から指定された文言を含んだHTMLファイルを生成して、以降はそれを返すようなDockerイメージを作りたいという案件があった。 一度コンテナを起動してしまえば完全にスタティックなページなのでわざわざMySQL等には繋ぎたくないし、 ファイルを置いたボリュームをマウントするという手もあるがホストが複数台なので管理がめんどくさい。 できることならコンテナの起動時に環境変数として値を渡すようなDocker的にお行儀の良い方法をとりたいが、 文字列結合でHTMLファイルを生成するのもかったるい。 要件的には何がしかの言語のテンプレートエンジンを使えばよいところではあるが、 本当に一文だけなんでそれだけのためには大げさだよなぁ何か無いかなぁと思ってググッていたら、 envsubst なるものをみつけた。 どうやら環境変数を埋め込んだ出力ができるらしい。 $ export var1=
直近ではDocker製ツールを用いた複数サーバへのコンテナの展開を考えていたのだが・・・ blue1st-tech.hateblo.jp 常々書いているようにホスト側のCentOS7とは相性が悪いところもあり、 またトラブル時の対応方法や他のメンバーへの周知に不安があるところ。 それに今回の案件ではマルチホストネットワークやスケーリングは必要ではないわけで、 あえて新しいツールを無理に使うよりも、 サーバのセッティングの際に使用しているAnsibleを用いた方が学習コストも抑えられるしシンプルで良いと判断した。 なにより、インフラ側と開発側が共通のツールに親しんでおくことは実運用においてメリットが大きいように思う。 Vagrantで実験環境を準備 Vagrantfileを作成し、とりあえず二台ほどCentOS7サーバを用意する。 Vagrant.configure(2) do |confi
Dockerを使ってみたい案件があり、デプロイ方法について色々検討している今日この頃。 新しいツールということもあって、 軽くググってみただけでもKubernetesとかMesosとかあるいはもっと別な方法が色々と出てくるし、 逆にいえば「これが決定版!」とはまだどれも言えそうにはない雰囲気。 サードパーティ製のツールはどれもそれなりに利点はありそうだけど、 一方で学習コストが高くついて辛い感じもあり、 また個人的にはDocker Compose使って作業してたんでそれを流用できないというのも気が進まないポイントであった。 実際のとこそこまで機能はいらないし、いっそConsulのイベント機能で無理やり…とか考えたりもした。 そんな感じで正直なところ迷走していたのだが、 公式ツールであるところのSwarmが去年末の段階で1.0.0をリリースしていたらしいということに今更になって気づく。 (な
さくらインターネットさんがDockerコンテナのホスティングサービス「Arukas」のオープンβを開始したそうな。 www.sakura.ad.jp しばらくは無料で使えるとのことなので、物は試しと早速使ってみた。 arukas.io コンテナの起動まで Githubアカウントでも登録できるということでサクッとアカウント作成。 シンプルなダッシュボードが表示される。 「新しいアプリケーションを作成」ボタンから作成画面へ。 普段Dockerを使用している人なら特に迷うところの無いような、 起動時のパラメータに相当するシンプルな設定項目が表示される。 各所に項目を入力して設定。 後述するが1コンテナで完結する必要があるので、手近なところでGrowthForecastを例としてみる。 blue1st.hateblo.jp 設定を保存後、起動ボタンをクリックすると「デプロイ中」と表示が出て、 少し
本家の方の↓の記事ではvidiben/casperjsなるDockerイメージを使っていた。 blue1st.hateblo.jp 一応これでも記事の目的は達していたのだが、 GithubみるとインストールされてるCasperJS/PhantomJSのバージョンは古そうだし、 何より日本語ページは化けてしまう。 ページをキャプチャしてどうこうする用途だとこれでは良くない。 そこで日本語がちゃんと表示できるイメージ(のDockerfile)を作成してみた。 npm経由ではPhantomJSのインストールで何かエラー吐くとかCasperJSはちゃんと入ったはずなんだけど何か音信不通になるとかで意外と苦労した。 結果的には必要なものを泥臭く公式からダウンロードして配置する方法で対応。 FROM ubuntu:14.04 RUN apt-get update -y&&\ apt-get insta
このページを最初にブックマークしてみませんか?
『blue1st-tech.hateblo.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く