DockerコンテナにChefを流してみた
Chefのレシピを書くとき、Dockerコンテナにレシピを流せると気軽に確認ができてよいなと思い、DockerコンテナにChefを流せるようにしてみました。
リポジトリを作ったので参考にどうぞ。
https://github.com/shoyan/nginx-and-ruby-on-docker
Install
DockerとChefをインストールしている必要があるので、以下からインストールしてください。
Docker
Chef
DockerコンテナにChefを流す
まずは、Docker QuickStart TerminalをクリックしてDockerを起動します(アプリケーションにあります)。
Dockerを起動したらNginxとrubyをインストールするCookbookを実行します。
1 | $ git clone https://github.com/shoyan/nginx-and-ruby-on-docker |
以下のコマンドでimageをbuildします。
1 | $ docker build -t nginx-and-ruby . |
imageを確認
1 | $ docker images |
Dockerのコンテナを起動します。
image_idは docker imagesのIMAGE IDを指定します。
今回の場合は6b4d5602119fです(場合により変わります)。
1 | $ docker run --privileged -d --name nginx-and-ruby image_id /sbin/init |
–privilegedはCentOS7のimageでserviceコマンドを起動するおまじないです。
Dockerでsystemctlでserviceが起動できない
起動したDockerのコンテナにログインします。
1 | $ docker exec -it nginx-and-ruby bash |
ログインしたらDockerコンテナでChefを実行します。
1 |
Dockerを使うとChefを実行→コンテナを消す→真っさらな状態からもう一度Chefを流すというサイクルが気軽にできるので便利です。
もう一度真っさらな状態のコンテナを作りたいときは、以下のようにします。
1 | $ doker ps |