無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Clairをインストールして、Dockerイメージの脆弱性スキャンをする手順

Dockerイメージの脆弱性スキャンツール「Clair」 をインストールして、ローカルのイメージをチェックする手順です。微妙にはまったのでメモ。

0.環境

$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core) 
$ docker -v
Docker version 1.10.2, build c3959b1

1.PostgreSQLをインストールして起動

$ docker pull postgres:latest 
$ docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=<パスワード> -d postgres

2.clairをインストールして起動

$ mkdir ./clair_config
$ curl -L https://raw.githubusercontent.com/coreos/clair/master/config.example.yaml -o ./clair_config/config.yaml
$ vi ./clair_config/config.yaml
# database - source を以下の通り変更
---
database:
  # PostgreSQL Connection string
  # http://www.postgresql.org/docs/9.4/static/libpq-connect.html
  source: postgresql://postgres:<パスワード>@postgres:5432?sslmode=disable
---
$ docker run -p 6060-6061:6060-6061 --link postgres:postgres -v /tmp:/tmp -v $PWD/clair_config:/config quay.io/coreos/clair -config=/config/config.yaml

脆弱性データの読み込みが開始されるので、"updater: update finished" が表示されるまで待ちます。(1時間くらいかかりました・・・)

3.ローカルチェックツールをインストールして実行。

$ sudo yum -y install golang
$ export GOPATH=~/.go
$ go get -u github.com/coreos/clair/contrib/analyze-local-images
$ docker pull <チェックしたいイメージ>
$ sudo $GOPATH/bin/analyze-local-images <チェックしたいイメージ>

継続的に実行するにはどうしたらいいんだろう・・・。

追記: docker-compose.yml

docker-compose.yml も作ってみました。

version: '2'
services:
  postgres:
    container_name: clair_postgres
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: <パスワード>
    ports: 
      - "5432:5432"
    volumes:
      - ./data:/var/lib/postgresql/data

  clair:
    container_name: clair_clair
    image: quay.io/coreos/clair
    ports:
      - "6060-6061:6060-6061"
    links:
      - postgres 
    volumes:
      - /tmp:/tmp
      - ./config:/config
    command: [-config, /config/config.yaml]

GitHub の Dockerfile から Docker Image を自動ビルドする設定手順

Docker HubAutomated Builds を使うと、GitHub または Bitbucket の Dockerfile の変更を検知して、Docker Image を自動ビルドすることができます。

  • レポジトリへのコミットを検知して、Docker Hub の Docker Image を自動でビルドします。
  • タグやブランチの追加を検出して、自動でタグ・ブランチ名をTAGとした Docker Image を作ることも可能。

一通り設定を試してみたので、メモです。

  • unagenau/docker-jiji2 に配置している Dockerfile を自動ビルドするようにしてみました。
  • Docker Hub のアカウントがない場合は、こちらから作成してください。

1. Docker Hub のアカウント と GitHubアカウントとを連携させる

まず初めに、Docker Hub のアカウント と GitHubアカウントとを連携させる必要があります。

Docker Hubにログインして、右上のメニューから Settings を選択します。

f:id:unageanu:20160207194520p:plain

続いて、 上のタブから Linked Accounts & Services を選択。

f:id:unageanu:20160207194521p:plain

GitHub を選択。

f:id:unageanu:20160207194522p:plain

リンク方法を選択します。 自動でhookを設定してくれるらしいので、 Public and Private を選択しました。

f:id:unageanu:20160207194523p:plain

連携確認の画面が表示されるので、連携を許可して完了。

2. 自動ビルドを行うレポジトリを作る

GitHubアカウントとの連携ができたら、自動ビルドを行うレポジトリを作ります。

右上のメニューから Create - Create Automated Build を選択。

f:id:unageanu:20160207194524p:plain

GitHub をクリック。

f:id:unageanu:20160207194525p:plain

Dockerfile をホストしているレポジトリを選択します。

f:id:unageanu:20160207194526p:plain

もろもろ設定します。

  • Short Description に説明を入力
  • Click here to customize をクリックすると、詳細設定画面が開きます。
  • Dockerfile をルートディレクトリに置いていなかったので、詳細画面の Dockerfile Locationで指定しています。
  • また、タグの追加を検出して、タグ名付のイメージを作成する設定も行ってみました。

f:id:unageanu:20160207194527p:plain

設定が完了後、Create をクリックすると、レポジトリが作成されます。

3. イメージをビルドしてみる

レポジトリができたら、GitHubレポジトリに変更をコミットする or タグを追加すると、自動でビルドが行われます。 また、UIから手動でビルドを実行することもできます。手動ビルドしたい場合は、Build Settings の Trigger ボタンをクリックすればOK。

f:id:unageanu:20160207194528p:plain

Build Details タブで、ビルドタスクの実行状況を確認できます。

f:id:unageanu:20160207194529p:plain

一旦 Quque に積まれた後、 10分程度待つとビルドされました。