投稿者のアーカイブ
DockerのJenkinsコンテナでアクセスログについて悩んでいた
muraveです。
今年の4月にリリースされたJenkins 2系をDocker公式イメージ
で試していたのですが、Webフックからキックしてのビルドを試していて大変ハマリました。Webフックからのアクセス状況とかどうなってんだ?などなどtcpdumpとか使って調べてたんですけど、アクセスログもあったほうがいいよね、と思ったのでした。
公式イメージのJenkinsさんってそのまま立ち上げたらアクセスログ出してくれないんですよね。
調べまして、JENKINS_OPTSに
--accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=ログファイルのパス
てな感じで設定すれば良いことはわかりました。分かりましたが、コンテナ内やボリュームにログファイルを出すのは違う気がします。docker logs で見ることができるログはどういう扱いなんでしょう?
デフォルト設定のロギング・ドライバのログ(JSON形式)はホストの
/var/lib/docker/containers/(コンテナID)/(コンテナID)-json.log
にあって、これが docker logs の表示元になっています。
問題はどうやったらここに出力されるのか?ですが、標準出力、標準エラー出力へ出力すれば良いそうです。例えば、Nginx公式イメージのDockerfileでは
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
と、/dev/stdout と /dev/stderr へのシンボリックリンクを作成することで対応しているようです。
Jenkinsさんの場合は先ほどのJENKINS_OPTSでログファイルのパス指定が可能でしたので
--accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/dev/stdout
と設定すると標準出力に出力されるようになり、コンテナのログにJenkinsさんへのアクセスログが記録されるようになりました。
これでDockerのロギング・ドライバでアクセスログも統一的にあつかえますね。
例えばFluentdロギング・ドライバに切り替えてログ集約するようにしたりする場合にも安心です。
Docker for Mac の使用されていないデータボリュームを削除
murave@ファイルの権限絡みで -v オプションの事を調べていたら今日という日が終わりそう、です。
やりたいことは別にあったんですが、せっかく調べたのでメモを残しておきます。今回、結論は最後に書くので経緯とか読みたくない方は最後まで飛ばして下さい。
データボリュームっていうのは例えば、
$ docker run -v コンテナ上のディレクトリ名 busybox
$ docker volume create --name test-volume
などとすると、
$ docker volume ls
DRIVER VOLUME NAME
local 17e11ebb9fc56e18d99b175d77b0c37b90da561bff07d601279ab7bfc0b0f414
local test-volume
と言った感じでデータボリュームがホスト上に出来ます。
ランダム文字列な名前のほうは前記docker runのように名前未指定な場合によろしくやってくれてるわけです。問題なのが、コンテナを削除しても基本的にこれが残るってこと。
「開発用RDBをゲットだぜ」シリーズの調査中
$ docker rm -f $(docker ps -aq)
でバンバン動作しているコンテナを含めて全部削除しまくっていたのですが、datastoreのデータボリュームが残りまくっているってわけです。
消さねばならぬ。
宿泊業向けセミナー「自社及び顧客理解に基づくマーケテイングの展開」を聞きました
どうも、ランカードコム(宿泊業支援機関IT系)のmuraveです。
こちら、長崎県内で宿泊業を営む事業者及び支援機関向け「長崎県宿泊業生産性向上促進セミナー」
http://www.pref.nagasaki.jp/object/event-koza/event/249247.html
のセミナーとしてはラストでマーケティングに関するセミナーです。
マーケティングといえば、以前のセミナーについての私の感想は
セミナー「宿泊業における顧客満足と効率性を両立させる方法」を聞きました
宿泊業生産性向上促進個別テーマセミナー(人材育成・IT)に参加しました
に書いたのですが、人材育成・ITセミナーレポートの最後に宿泊業のお手伝いをできそうな弊社サービスの紹介もありますのでよろしくお願いします(自然な流れでダイレクトマーケティングの再利用)。
今回もいいセミナーでした。
(さらに…)
Docker公式イメージで開発用RDBをゲットだぜ(MariaDB、Percona Server編)
まえがき
Docker公式イメージで開発用RDBをゲットだぜ(PostgreSQL編)
Docker公式イメージで開発用RDBをゲットだぜ(MySQL編)
に続き予定どおりMariaDB編をお送りします。一言で済むので結論を書くと
「公式イメージのページを読み比べたらMySQLと同じでした。ありがとうございます」
という内容です。ついでに
Docker Hub で Official縛りでMySQLを検索したらPerconaも出てきたので思い出したりした。定期的にPercona良さそうだなぁと思って名前を忘れるを繰り返す存在。
— murave (@murave) 2016年8月16日
というわけでPercona Serverの公式イメージのページも見てみたらこれもMySQLの場合と同じ扱いでしたので含めてみましたよ。
Docker for Macを使用しております。
Docker公式イメージで開発用RDBをゲットだぜ(PostgreSQL編)
- 2016/08/16
- murave
- Docker
- PostgreSQL
まえがき
Laravelでの開発時にデプロイ先はMySQLなのに手を抜いて手元の開発機ではSQLiteを使っていたら痛い目にあったりしました、muraveです。
SQLiteって結構ルーズにつかえてしまうので手元の開発でSQLite使っててMySQL運用のサーバーにデプロイするとエラーがバンバンというのが昨日から連続発生中。
— murave (@murave) 2016年7月14日
開発環境にあまり影響を与えずにサクッと開発用のRDB(Relational Database)を建てられると素敵ですね。Docker公式イメージを活用すると出来そうです。
RDBというデッカイ単語を使っていますが、自分がよく使うPostgreSQL、MySQL、MariaDBなどについて調べようと思います。MySQLとMariaDB自体はほぼ同じ扱い方ができるRDBですが、公式イメージでの扱いはどうなんでしょうね。
記事にまとめながら試していこうと思います。Docker for Macを使用しており、今回はPostgreSQLです。
Docker for Mac のDockerホストに入るには
どうしたらいいんだろう?
と方法を探していたら以下のページにscreenコマンドでttyに接続すれば良いとの情報がありました。
Docker for Mac プライベートベータを早速使ってみた! – paiza開発日誌
試してみます。
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
この後、Enterすると表示が出て、moby login: にrootを入力してEnterでDockerホストに入ることができました。
添付の画像は私の場合の表示ですが、screenの設定がカスタマイズされているのでおそらく他の方とは異なります。
screen常用者の端末ではカスタマイズされていて他の人には使えないのも常ですので操作方法については別途調べるなどしてください(Ctrl-a ?でヘルプをみることができますがそもそもCtrl-aが変更されていることが多く、例にもれず私もCtrl-zにしてあります)。
私は導入していないのですがtmuxなどでも良いでしょう。たぶん。tmuxについては下記、shunの記事などをどうぞ。
OS X に byobu で tmux 環境をお手軽構築 [2015 冬版]
絶対忘れるのでメモでした。
ConoHaでDocker Machine、2016年夏
Docker for Mac からベータが取れて久しいですが、インストールしたまま放置状態でしたので勉強中です。
とりいそぎ手元の開発環境構築で使いたいのですが、最近よく開発用に利用している ConoHa で Docker Machine していました。なぜか。
Docker for Mac vs. Docker Toolbox を読みますと、Docker for Mac を手元で使う分には Docker Machine を意識する必要すらなくなっているようですが、docker-machineコマンドも含まれてはいたので調べていたらそういうことになっていたのでした。
docker-machineコマンドでConoHa上にDockerのHostをVMレベルからcreateしたりstopしたりrmしたりできるようになったわけですがいまのところあまり使い道が思いつきません。ConoHaだとVM(サーバー)止めてても課金が止まらないんですよねぇ。
検証用や確認用に一時的にHostを立ち上げて(create)終わったらすぐ消す(rm)、とかでしょうか。
せっかくですし、すぐに忘れてしまいそうなので引っかかった箇所のメモを残しておこうと思います。
セミナー「宿泊業における顧客満足と効率性を両立させる方法」を聞きました
こちら県主催の長崎県内で宿泊業を営む事業者及び支援機関向け「長崎県宿泊業生産性向上促進セミナー」のスタートアップセミナーでした。
http://www.pref.nagasaki.jp/object/event-koza/event/249247.html
「対象外じゃないの?」とおっしゃるあなたのお気持ち、わかります。
が、民泊の運用サポートを行うソフトを作ってまして、一応、支援機関枠ということで一つよろしくお願いします。
対象の中小宿泊業から見ると敵対勢力をサポートしている気もしますが、技術は中立ですよ?