LoginSignup
7
6

More than 5 years have passed since last update.

kitchen-dockerでulimitのエラーを回避する方法

Last updated at Posted at 2014-05-27

最近test-kitchenを使いはじめました。
redisioのcookbookを動かしたところ以下のようなエラーがでました。

STDERR: /etc/init.d/redislocalhost: line 28: ulimit: open files: cannot modify limit: Operation not permitted
       could not open session

エラーメッセージを読む限りulimitを変更する権限がないおって感じのこといわれていると思います。

そもそもulimitとは

だいたいグーグル先生に聞くとシステムリソースを制限する設定を行うコマンドという答えをいただきました。

では、今回問題となった/etc/init.d/redislocalhostの28行目を見てみましょう。

$ kitchen login
$ vi /etc/init.d/redislocalhsot

     27
     28 ulimit -n 10032
     29

つまりulimitの制限しているから問題のようです。
recipeとかをtemplate書き換えてtest-kitchen動かす環境だけulimitの行を取り除くってのも微妙なアプローチですね。

dockerとulimitについて

どうしてulimitを書くとエラーになるのかはこの記事にわかりやすく解説されていたのでお読みください。

で、解決策として、Problem running Apache/Ubuntu from docker #1900を見るとどうやらprivilegedオプションを渡して実行しているようです。

docker run -p :80 -privileged IMAGE apache2ctl -D FOREGROUND

kitchen-dockerでのprivilegedの指定

kitchen-dockerのgithubを眺めている方は気づいているかもしれませんが、kitchen-dcokerではprovilegedの指定のオプションがあります。

ということで、.kitchen.ymlなり.kitchen.local.ymlの記述のサンプルをのっけておきます。

$ vim .kitchen.yml
---
driver:
  name: docker

provisioner:
  name: chef_solo

platforms:
  - name: centos-6.4
    driver_config:
      image: centos
      platform: centos
      dns: 8.8.8.8
      socket:  tcp://192.168.56.101:4243
      privileged: true

suites:
  - name: default
    run_list:
      - recipe[yum]
    attributes:

上記にように記述すればulimitによるエラーは発生しなくなります。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6