docker-compose.ymlをversion2に

表題の通り。

■ 環境

  • Mac OSX El Capitan
  • Docker 1.10.2
  • Docker Machine 0.6.0
  • Docker Compose 1.6.2

■ Compose 1.6.2

Docker Composeを”1.6.2“にupgradeした。内容を確認していたところ、設定ファイルである”docker-compose.yml“の”version2“いうのがあるらしいので確認。Dockerは”1.10.0“系以上、Composeは”1.6.0“以上が対応しているそうである。

以前のエントリの内容を確認すると下記のようである。

$ docker-compose config
networks: {}
services:
  elasticsearch:
    container_name: elasticsearch
    image: elasticsearch
    ports:
    - 9200:9200
  kibana:
    container_name: kibana
    image: kibana
    links:
    - elasticsearch:elasticsearch
    ports:
    - 5601:5601
version: '1'
volumes: {}

$

現在は”version2“で書き方が少し変わっているようである。下記を参照した。

Conpose file reference > Versioning

これで以前の”Elasticsearch + Kibana“の”docker-compose.yml“を書き換えてみた。と言っても内容はたいしたことがないので単純な変換だけである。

version: '2'
services:
  elasticsearch:
    image: elasticsearch
    container_name: elasticsearch
    ports:
      - 9200:9200
  kibana:
    image: kibana
    container_name: kibana
    links:
      - elasticsearch:elasticsearch
    ports:
      - 5601:5601

書き方が正しいかは`config`で確認できるであろう。

$ docker-compose config
networks: {}
services:
  elasticsearch:
    container_name: elasticsearch
    image: elasticsearch
    ports:
    - 9200:9200
  kibana:
    container_name: kibana
    image: kibana
    links:
    - elasticsearch:elasticsearch
    ports:
    - 5601:5601
version: '2.0'
volumes: {}

$

問題なさそうである。

以上。

■ 関連

lsコマンドのカラー表示

Macにおいて表題の通り。

■ 環境

  • Mac OSX El Capitan
  • iTerm2

■ 環境変数

下記コードを”.bashrc“等に書くことで実現が可能である。

export CLICOLOR=1

■ alias

`ls`のオプションでも可能なので`alias`という手もある。

alias ls="ls -G"

■ カラー

いろいろ設定は好みがあると思うが、自身は下記のものを使わせてもらっている。以前どこかで参考にさせてもらった設定のままである。

export LSCOLORS=DxGxcxdxCxegedabagacad

以上。

Posted in: Mac | Tagged:

docker-compose pause/unpause

表題のコマンドについて試してみる。

■ 環境

  • Mac OSX El Capitan
  • Docker 1.10.2
  • Docker Machine 0.6.0
  • Docker Compose 1.6.0

■ pause

`docker pause`を”docker-compose.yml“で設定しているコンテナに対して行うものである。そもそも`pause`は何をしているのか、という疑問には下記のヘルプ。

$ docker pause -h

Usage:    docker pause [OPTIONS] CONTAINER [CONTAINER...]

Pause all processes within a container

  --help             Print usage
$

コンテナを一時的に停止(suspend)させるものである。”SIGSTOP“シグナルが与えられているようである。

$ docker-compose pause -h
Pause services.

Usage: pause [SERVICE...]
$

実際に行ってみる。対象のコンテナ群はいつも通りの”Elasticsearch + Kibana“である。

$ docker-compose pause
Pausing elasticsearch ... done
Pausing kibana ... done
$
$ docker-compose ps
    Name                   Command               State                 Ports
------------------------------------------------------------------------------------------
elasticsearch   /docker-entrypoint.sh elas ...   Paused   0.0.0.0:9200->9200/tcp, 9300/tcp
kibana          /docker-entrypoint.sh kibana     Paused   0.0.0.0:5601->5601/tcp
$
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                  PORTS                              NAMES
7654ad8f188f        kibana              "/docker-entrypoint.s"   7 minutes ago       Up 7 minutes (Paused)   0.0.0.0:5601->5601/tcp             kibana
940da79434bd        elasticsearch       "/docker-entrypoint.s"   7 minutes ago       Up 7 minutes (Paused)   0.0.0.0:9200->9200/tcp, 9300/tcp   elasticsearch
$

■ unpause

`pause`で一時的に停止しているコンテナを再開させる。

$ docker-compose unpause
Unpausing kibana ... done
Unpausing elasticsearch ... done
$
$ docker-compose ps
    Name                   Command               State                Ports
-----------------------------------------------------------------------------------------
elasticsearch   /docker-entrypoint.sh elas ...   Up      0.0.0.0:9200->9200/tcp, 9300/tcp
kibana          /docker-entrypoint.sh kibana     Up      0.0.0.0:5601->5601/tcp
$
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                              NAMES
7654ad8f188f        kibana              "/docker-entrypoint.s"   8 minutes ago       Up 8 minutes        0.0.0.0:5601->5601/tcp             kibana
940da79434bd        elasticsearch       "/docker-entrypoint.s"   9 minutes ago       Up 8 minutes        0.0.0.0:9200->9200/tcp, 9300/tcp   elasticsearch
$

今までは一時的に不要になったものを`stop`して置いておいたりしたのだが、今後は`pause`をしておいてみることにする。

ちなみに`unpause`していない状態(“STATUS“が”Paused“)で`start`をしてもコンテナは開始されないし、`down`で停止と削除をしようとしたら下記のようにエラーとなった。

$ docker-compose down
Stopping kibana ... error
Stopping elasticsearch ... error

ERROR: for elasticsearch  Cannot stop container 940da79434bdb050056405ab28565c1f1c52c04727a5631728934f1b00c10106: unpausecontainer: Container 940da79434bdb050056405ab28565c1f1c52c04727a5631728934f1b00c10106 is paused. Unpause the container before stopping
ERROR: for kibana  Cannot stop container 7654ad8f188f717c4487fb9e6fe5924feb7886c5d650c67f4455deaf42c18623: unpausecontainer: Container 7654ad8f188f717c4487fb9e6fe5924feb7886c5d650c67f4455deaf42c18623 is paused. Unpause the container before stopping
$

以上。

■ 関連

docker-compose events

表題のコマンドを試してみる。

■ 環境

  • Mac OSX El Capitan
  • Docker 1.10.2
  • Docker Machine 0.6.0
  • Docker Compose 1.6.0

■ Docker

Docker/Docker Machine共に先日リリースされた”1.10.2“にupgradeしている。”1.10.1“の時のであるが下記エントリ。

docker/docker-machine upgrade

■ events

各コンテナに対するイベントを取得できるようである。どんなイベントが存在するのかよくわからないので試しながらやってみる。

端末1:

$ docker-compose events
 

何も返答が返っていないで固まっているのかと思ったが、どうやらイベントを待っているようである。別の端末から各操作を行ってみる。使用する”docker-compose.yml“はいつも通りの”Elasticsearch + Kibana“のものである。

端末2:

$ docker-compose up -d
Creating elasticsearch
Creating kibana
$

この時に取得できたイベントは下記。

端末1:

2016-02-24 19:18:15.234321 container create 88e08bb891f1c04108032a372c2121643fd5e646172e68599aecf3c993bc8c8a (image=elasticsearch, name=elasticsearch)
2016-02-24 19:18:15.289717 container start 88e08bb891f1c04108032a372c2121643fd5e646172e68599aecf3c993bc8c8a (image=elasticsearch, name=elasticsearch)
2016-02-24 19:18:15.396868 container create c891b553ff6c66661678e02a5634940cd4f023728efb8f24e7fb4052c6db2264 (image=kibana, name=kibana)
2016-02-24 19:18:15.499875 container start c891b553ff6c66661678e02a5634940cd4f023728efb8f24e7fb4052c6db2264 (image=kibana, name=kibana)

`up`に対して、”create“と”start“のイベントが取得できるようである。

同様に調べていくと`docker-compose`の各コマンドに対して下記のようにイベントが取得できた。

  • create -> create
  • down -> ERROR
  • kill -> unpause + kill + die
  • pause -> pause
  • restart -> kill + die + stop + start + restart
  • start -> start
  • stop -> kill + die + stop
  • unpause -> unpause
  • up -> create + start
  • rm -> ERROR

`down`と`rm`の時に`docker-compose events`コマンドの実行でERRORとなりストップした。また`docker-compose events`を実行して以降のイベントしか取得はできないようである。

以上。

■ 関連

docker-compose config

表題のコマンドについて。

■ 環境

  • Mac OSX El Capitan
  • Docker 1.10.1
  • Docker Machine 0.6.0
  • Docker Compose 1.6.0

■ config

以前から利用している”Elasticsearch + Kibana“の”docker-compose.yml“ファイルを使用してやってみる。

$ docker-compose config
networks: {}
services:
  elasticsearch:
    container_name: elasticsearch
    image: elasticsearch
    ports:
    - 9200:9200
  kibana:
    container_name: kibana
    image: kibana
    links:
    - elasticsearch:elasticsearch
    ports:
    - 5601:5601
version: '1'
volumes: {}

$

networks“や”volumes“は今回のversionから使用することができるようであるが、まだよく把握できていない。実際に適用されている設定が表示されたものなのであろう。しかし、これだけでは”docker-compose.yml“とほとんど変わりがない。と思ってヘルプを再度確認して納得。

$ docker-compose config -h
Validate and view the compose file.

Usage: config [options]

Options:
    -q, --quiet     Only validate the configuration, don't print
                    anything.
    --services      Print the service names, one per line.
$

Validate“が主な機能なのであろう。試しに適当に追加して再度実行してみると下記のような結果になった。

$ docker-compose config
ERROR: Validation failed in file './docker-compose.yml', reason(s):
Unsupported config option for kibana: 'port' (did you mean 'ports'?)
$

メッセージの通り、”kibana“のコンテナ設定で”ports“の箇所を”port“に書き変えて実行してみた結果である。納得。

以上。

■ 関連