docker & alpine

いまdocker熱いですね。

どうもそれとセットでalpine linuxってのが熱いらしいです

何がいいのそれっていうと、コンテナサイズが劇的に軽くなるということのようです

くわしくはこのあたりに:

Docker、オフィシャルイメージのOSをAlpine Linuxへ切り替える計画が明らかに。OSの軽量化に傾倒するDocker - Publickey

で、alpineベースでmemcachedとredisのコンテナがあるんですけど両方くっついたコンテナの方がほしくなったので、dockerの勉強がてら作ってみました

github.com

使い方は

$ git clone git@github.com:rane-hs/memcached-and-redis.docker.git
$ cd memcached-and-redis.docker
$ docker build -t memcached-redis-alpine .
$ docker run --restart always --name mcdocker -i -t -d memcached-redis-alpine
$ docker inspect mcdocker | grep IPAddr   # コンテナのIPを入手

で、↑で入手したアドレスにログインします

$ telnet 123.45.67.89 11211   # telnet
$ redis-cli 123.45.67.89      # redis

docker commands

使ったコマンドたち。

以下は↑のリンクをgit cloneしてきて1個中に入った状態で叩かれていることを想定しています

build container

docker build -t memcached-redis-alpine .
  • memcached-redis-alpine という名前でコンテナイメージを作ります

run container

docker run --restart always --name mcdocker -i -t -d memcached-redis-alpine
  • mcdocker という名前でコンテナを走らせます。イメージは↑で作った名前です

check running container

docker ps
  • いまローカルにあるイメージの一覧はdocker images
  • 両方 -aがoptionalで使えます

remove container (-f : force)

docker rm -f mcdocker
  • イメージ削除はrmi

remove unused container image (1liner)

docker rmi -f $(sudo docker images -a | awk '/^<none>/ { print $3 }')
  • 全部きえるわけではないです

check container setting

docker inspect mcdocker

run container shell

docker exec -it mcdocker /bin/ash
  • attachdocker runしたスクリプトにアタッチしちゃうので、Ctrl-Cとかexitしちゃうとコンテナごと閉じます。
  • ここではexecを使ってシェルを立ち上げています。alpine linuxではbashがないのでashとしましたがubuntuではbashでよさそう

お役立ちリンク

qiita.com

Docker pull issue (ApplyLayer exit status 1 stdout: stderr: chmod /bin/mount: permission denied) | Alpine Linux forums

  • alpine linuxdocker pull mysqlできないのは上記を見て対応してください

speakerdeck.com

  • dockerオススメTIPS15選。
  • sudo dockerプレフィックスをdockerにする方法もあります