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]