概要
久しぶりに docker に触りました
バージョンアップもしていたので試したことをメモしておきます
これ をベースに進めていきます
環境
- CentOS 7.1.1503 64bit
- kernel 3.10.0-229.el7.x86_64
- Docker 1.8.3 build f4bf5c7
インストールおよび docker デーモンの起動
以降の作業は root ユーザで実施しました
- curl -sSL https://get.docker.com/ | sh
- service docker start
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 のコンパネ上に自分のイメージが表示されるようになります
公開した自分のイメージを使ってみる
- 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 件のコメント:
コメントを投稿