TOP

docker-composeをそろそろちゃんと使ってみた

2016-10-15 14:33:42

どんな物かは知ってたけどまだ手を出してなかったので使ってみた

run.sh:普段使っていた起動スクリプト

Docker for {Windos|Mac} にはデフォルトでdocker-compose入ってるみたいなので残しておく事はなさそうだけど、今まで使っていたrun用のシェル(run.sh)

docker run  --privileged  -d -it -p 19022:22 -p 80:80 -p 443:443 --hostname 9zilla --name 9zilla 9zilla:latest /sbin/init

docker-compose.ymlに移す

↑のrun.shの内容をdocker-compose.ymlに書き換えるとこうなった

version: "2"

services:
    9zilla:
        container_name: 9zilla
        hostname: 9zilla
        image: nobiki/9zilla:latest
        ports:
            -  "80:80"
            -  "443:443"
            -  "19022:22"
        networks:
            b0:
                ipv4_address: 172.18.0.100
        privileged: true
        command: /sbin/init

networks:
    b0:
        driver: bridge
        ipam:
            driver: default
            config:
                -  subnet: 172.18.0.0/16
                   gateway: 172.18.0.1

公式のマニュアル → Compose file reference

docker-composeコマンドの使い方メモ

基本的には、dockerコマンドとほぼ同じで、downupが用意されてるようだ

$ docker-compose up --help

Usage: up [options] [SERVICE...]

Options:
    -d                         Detached mode: Run containers in the background,
                               print new container names.
                               Incompatible with --abort-on-container-exit.
    --no-color                 Produce monochrome output.
    --no-deps                  Don't start linked services.
    --force-recreate           Recreate containers even if their configuration
                               and image haven't changed.
                               Incompatible with --no-recreate.
    --no-recreate              If containers already exist, don't recreate them.
                               Incompatible with --force-recreate.
    --no-build                 Don't build an image, even if it's missing.
    --build                    Build images before starting containers.
    --abort-on-container-exit  Stops all containers if any container was stopped.
                               Incompatible with -d.
    -t, --timeout TIMEOUT      Use this timeout in seconds for container shutdown
                               when attached or when containers are already
                               running. (default: 10)
    --remove-orphans           Remove containers for services not
                               defined in the Compose file

$ docker-compose down --help

Usage: down [options]

Options:
    --rmi type          Remove images. Type must be one of:
                        'all': Remove all images used by any service.
                        'local': Remove only images that don't have a custom tag
                        set by the `image` field.
    -v, --volumes       Remove named volumes declared in the `volumes` section
                        of the Compose file and anonymous volumes
                        attached to containers.
    --remove-orphans    Remove containers for services not defined in the
                        Compose file

docker-compose up -dすると、docker-compose.ymlのimage:に記載したイメージを勝手にpullしてくれる、また、既にpullしてあった場合はスキップしてくれたりするので、コンテナ起動までワンライナーで行ってくれる。

// 起動
$ docker-compose up -d

コンテナを終了や破棄する時はdocker-compose downする。--rmiオプションでイメージ削除まで行ってくれる。

// 停止
$ docker-compose down

公開してみた

今回これを作成すると同時に、Automated buildを使っていつも使ってる自分の開発環境(9zilla)を公開してみた

Github: nobiki/9zilla

DockerHub: nobiki/9zilla