2015年11月4日水曜日

CentOS7 で docker 1.8 を試してみた

概要

久しぶりに docker に触りました
バージョンアップもしていたので試したことをメモしておきます
これ をベースに進めていきます

環境

  • CentOS 7.1.1503 64bit
  • kernel 3.10.0-229.el7.x86_64
  • Docker 1.8.3 build f4bf5c7

インストールおよび docker デーモンの起動

以降の作業は root ユーザで実施しました

HelloWorld サンプルの実行

  • docker run hello-world

DockerHub で公開されている hello-world というイメージをダウンロードしてコンテナとして起動します
このサンプルはヘルプ的なものが表示されてすぐに終了します

インタラクティブモード

  • docker run -it ubuntu bash

ubuntu というイメージをダウンロードしてインタラクティブモードで bash を実行します
普通に SSH をしているように ubuntu 上でコマンドが実行できます
apt でパッケージのインストールも行えます
インタラクティブモードは exit 等で抜けない限り docker 上のプロセスとして存在します
exit 後はプロセスが終了します ( コンテナが削除されます )

特定のプログラムを実行するサンプル

  • docker run docker/whalesay cowsay boo

docker/whalesay というイメージをダウンロードして「cowsay boo」というコマンドを実行します
cowsay というコマンドは AA を作成し引数に渡された文字列をセリフとして出力するネタコマンドです
docker/whalesay イメージはすでに cowsay がインストールされているイメージなのでコンテナとして実行することができます
実行すると AA が表示されてコンテナが終了します

独自のイメージを生成してみる (Dockerfile 入門)

  • mkdir mydocker
  • cd mydocker
  • touch Dockerfile
  • vim Dockerfile
FROM docker/whalesay:latest
RUN apt-get -y update & apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
  • docker build -t docker-whale .
  • docker images
  • docker run docker-whale

やっていることは単純で Dockerfile を作成して、そこに実行するコマンドを記載しているだけです
FROM, RUN, CMD は Dockerfile 内で使えるコマンドです
FROM は取得するイメージを指定し、RUN はイメージ作成時に実行されるコマンドで、CMD はコンテナ起動時に実行されるコマンドです
他のパラメータについてはこちらを参照してください

docker build の -t オプションで作成するイメージ名を指定します
build が完了したら docker images で作成できたイメージを確認しましょう

REPOSITORY                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker-whale                latest              421acc6431fe        About an hour ago   276.8 MB

あとは作成したイメージを指定して docker run します
fortune というコマンドを使って先ほどの cowsay に出力される吹き出しのセリフをランダムに変更しているだけです
コンテナを何度か起動してみるとセリフが毎回変わっていることが確認できると思います

作成した独自のイメージを DockerHub で公開する

  • docker tag 421acc6431fe kakakikikeke/docker-whale:latest
  • docker login –username=username –password=password –email=your-registed-email@sample.com
  • docker push kakakikikeke/docker-whale

まず tag で公開用のイメージをローカルに作成します
tag を付けるときは「ユーザ名/イメージ名」という命名規則で作成してください
最後にコロンでバージョン名を記載します

次に docker login コマンドで認証します
DockerHub に登録したユーザ名、パワワード、メールアドレスを使って認証します
認証に成功すると /root/.docker/config.json に認証用のファイルが生成されます

そして最後に push します
push に成功すると DockerHub のコンパネ上に自分のイメージが表示されるようになります
my_docker_images.png

公開した自分のイメージを使ってみる

  • docker rmi -f 421acc6431fe
  • docker pull kakakikikeke/docker-whale
  • docker run kakakikikeke/docker-whale

既存のローカルのイメージを削除して、DockerHub からイメージを pull してあとは run しているだけです
ダウンロードしたイメージでもコンテナが正常に動作していることが確認できると思います

最後に

紹介は以上です
「-it」オプションのインタラクティブモードは非常に便利な機能だなと思いました
Dockerfile を作るのが捗る気がします

Tips

CentOS 6 でも試してみたのですがエラーが発生し動きませんでした

  • CentOS 64bit 6.7
  • kernel 2.6.32-358.el6.x86_64
  • Docker 1.7.1

Error response from daemon cannot start container xxxxxxxxxx no such file or directory

CentOS の 6 系はそもそもサポート対象ではなくなったっぽいので納得と言えば納得ですが、まぁ仕方ないといったところでしょうか
古いバージョンの Docker なら動くかもしれないです
https://github.com/docker/docker/issues/14365

なんかすごいブーイングですが、押し通してる感じです

0 件のコメント:

コメントを投稿