Docker

さくさくDocker実践入門 第五回 … イメージ登録

更新日:

差分について

そうですね。最初にやや力を込めて言っていた、差分の話はどこにいったのだ、ですね。そう突っ込みたい気持ち、わかります。僕もそう思っていました、な、なな、なんでやねん!

はい、イメージを起動したコンテナ、そこで作業されたプラスαなものの差分を、どのように管理するのか、DocketHub上で共有するのはどうやるのだ、という所をようやくやります。

取得済みの CentOS 6 のコンテナを使い、bannerfiglet コマンドを入れてみます。いずれも、でっかい文字のバナーを表示するコマンドです。レガシーなジョークコマンドとして有名ですが、意外とさくっと使って便利だったりします。

え? MacOSならば banner 入ってるし、figlet もすぐ入るって? そうですけど、いやいや、 banner コマンドを実際に使えばすぐわかりますが、BSD文化から来たものと、GNU文化から来たものとは、動作が違うのですよ。

でもそれこそ、なんでやねん! ではあります。だいぶ違うものならば別の名前にすればいいのに、とか思ったりもします。

banner と figlet を導入

CentOS 6 のコンテナを立ち上げ、さくっとインストールします。

$ docker run -it --name add1 centos:6 bash
# yum install -y epel-release
# yum install -y banner figlet

おためし。

ほら入った。Yeah!!!! え? これ出したかっただけちゃうんかって? そうですけど何か問題でも? もちろん与える文字列は何でも構いません。ただしASCIIな文字しか、ちゃんと変換してくれませんのでご注意を。

コミット&DockerHubへ格納

以下により、追加・更新などが発生したファイルがわかります。ファイル単位のdiff情報ですね。

$ docker diff add1

いったんコミットします。centos6をベースに、bannerというタグを付けて、あとでこれが何だったか思い出せるようにしてみました。YOUR_ID の所はご自分のアカウント名に変えてくださいね。君との思い出は一つも忘れないよ。

$ docker commit -m "added banner and figlet" add1 YOUR_ID/centos6:banner

push してみましょう。YOUR_ID の所は(以下略)

$ docker push YOUR_ID/centos6:banner

該当イメージの存在を確認します。エラーが出ていなければ有るはずです。有ったらもうパーティしよう! いやまだ早い!

$ docker images

もし denied と叱られた場合は、以下でログインしてみてくださいね。

$ docker login -u YOUR_ID

自身のリポジトリから取得

push が終わったらば、ローカルのイメージを消してみます。押して押して気持ちを伝えたのに、もう消すのかい? これにより新しい愛が生まれていくのです。

$ docker stop add1
$ docker rm add1
$ docker rmi YOUR_ID/centos6:banner

DockerHub の自身の場所から、改めて pull してみます。おかえり、ぐんと成長したね。いや、さっきと同じものです。

$ docker pull YOUR_ID/centos6:banner

起動して遊んでみます。今夜はパーティだ!!

$ docker run -it --name add1 YOUR_ID/centos6:banner bash
# banner "(^.^)"
# figlet
"*(^-^)*"
# exit

にこにこスマイル

20世紀の頃のBBSかお前は、という感じのアスキーアートですね。なお、 figlet のほうはフォントが選べたりとなかなかの多機能です。

$ figlet -f trek ANGERME
$ figlet -f starwars ANGERME

なんだか楽しくなってきました。PARTY HARD!! でも、このへんで止めておきます。よーし、今夜は無礼講だ! って言われた場で、それを真に受けてはいけませんです。度を超えて調子に乗ると、あとでだいたい後悔します、ええ。

次回へ

このように、イメージの受け渡し方法として 「ID/あれ:それ」 を伝えるのも有りですが、ちょっと管理しにくいものではあります。

開発チーム内ならば、小さなテキストの Dockerfile 設定ファイルを管理するのが良いです。誰かの成果な Dockerfile から build して新イメージを作り、設定はチーム内のリポジトリで管理する感じですね。

はい、次回はこのあたりの build 手法に触れまして、入門編の第一章を終えようと思います。フィナーレの回はなんと、3時間スペシャルでお送りします。いえごめんなさい、もっと手短に書きます。

-Docker
-, , ,

Copyright© Legend stardust, amazing takety's labo. , 2024 All Rights Reserved Powered by STINGER.