Scientific LinuxのDockerイメージを作成する
Docker Indexに公式に提供されている、 Scientific Linuxのベースイメージがなかったので、 自分で作ってみました。
成果物はこちら。
- Scientific Linuxのベースイメージ: ringo/scientific
- ベースイメージを作成するのに利用したスクリプト: github.com/ringohub/docker-base-image
対象のVMを作成する
まず、Scientific Linux 6.5のDocker用ベースイメージを作成したい場合、 Scientific Linux 6.5のVMを作成します。
作り方はなんでもいいですが、Packerを使って作成する手順をまとめたのがこちらです。
以降の作業はこのVMの中で行います。
Dockerのインストール
まず、ベースイメージを作るためにDocekrをインストールします。
yumにEPELリポジトリを追加
sudo rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm sudo yum -y update
もう、EPELリポジトリ以外はアップデート済みの場合は、
sudo yum -y update epel-release
でもいいです。
Dockerのインストール
Dockerのインストールは普通にyumで行うだけ。簡単!
sudo yum -y install docker-io
Dockerベースイメージの作成
febootstrap
というツールを使って作成します。
(詳しく知らないけど、debootstrapみたいなもの??)
作成用のシェルスクリプトを書きます。 名前は適当にsl65.shとかにしました。
#!/bin/bash MIRROR_URL="http://ftp.riken.jp/Linux/scientific/6.5/x86_64/os/" MIRROR_URL_UPDATES="http://ftp.riken.jp/Linux/scientific/6.5/x86_64/updates/security/" yum install -y febootstrap xz febootstrap -i bash -i coreutils -i tar -i bzip2 -i gzip -i vim-minimal -i wget -i patch -i diffutils -i iproute -i yum scientific scientific65 $MIRROR_URL -u $MIRROR_URL_UPDATES touch scientific65/etc/resolv.conf touch scientific65/sbin/init tar --numeric-owner -Jcpf scientific-65.tar.xz -C scientific65 .
あとは、これを実行するだけ。
sudo ./sl65.sh
動作確認
シェルスクリプトを実行すると次のようなファイルが出来てます。
[vagrant@localhost ~]$ ls -l total 51960 -rw-rw-r-- 1 vagrant vagrant 53195204 Jun 1 15:10 scientific-65.tar.xz dr-xr-xr-x 21 root root 4096 Jun 1 15:07 scientific65 -rwxr-xr-x 1 vagrant vagrant 595 Jun 1 15:06 sl65.sh
こいつを、dockerにインポートします。
まず、dockerを起動。
sudo service docker start
次に、インポート。
リポジトリをlocal/scientific
にして、tagを6.5
にしました。
cat scientific-65.tar.xz | sudo docker import - local/scientific:6.5
imageを確認。
[vagrant@localhost ~]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE local/scientific 6.5 ad81296d21b0 13 minutes ago 309.6 MB
docker run
してみます。
[vagrant@localhost ~]$ sudo docker run local/scientific:6.5 cat /etc/system-release Scientific Linux release 6.5 (Carbon)
よさそう。
Docker Indexにpushする
コマンドメモしか保存していなかったので、 ここから先はScientific Linux 6.4で実行ログを収集しました。
まず、実行している(いた)コンテナ一覧をみます。
[vagrant@localhost ~]$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a266aa1f5c10 local/scientific:6.4 cat /etc/system-rele 37 minutes ago Exited (0) 37 minutes ago determined_feynman
このコンテナをコミットします。
- a266aa1f5c10
はps
で確認したCONTAINER ID
- ringo/scientific
はDocker Indexで作成した自分のリポジトリ
- :
の後ろにタグ
[vagrant@localhost ~]$ sudo docker commit a266aa1f5c10 ringo/scientific:6.4 0bdd7adac72c6d381e0fe56320252ffbfd39f1a965964115c598f2153fd7a9a8
ringo/scientific
ができました。
[vagrant@localhost ~]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ringo/scientific 6.4 0bdd7adac72c 10 seconds ago 308.9 MB local/scientific 6.4 c5cb7eb15e7e 38 minutes ago 308.9 MB
Push しましょう!!
[vagrant@localhost ~]$ sudo docker push ringo/scientific The push refers to a repository [ringo/scientific] (len: 1) Sending image list Please login prior to push: Username: ringo Password: Email: Login Succeeded The push refers to a repository [ringo/scientific] (len: 1) Sending image list Pushing repository ringo/scientific (1 tags) c5cb7eb15e7e: Image successfully pushed 0bdd7adac72c: Image successfully pushed Pushing tag for rev [0bdd7adac72c] on {https://registry-1.docker.io/v1/repositories/ringo/scientific/tags/6.4}
ベースイメージを使ってみる
まず、pullします。
[vagrant@localhost ~]$ sudo docker pull ringo/scientific Pulling repository ringo/scientific 0bdd7adac72c: Download complete 1a2eb0bba51b: Download complete c5cb7eb15e7e: Download complete ae0b1be0b6ae: Download complete [vagrant@localhost ~]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ringo/scientific 6.4 0bdd7adac72c About an hour ago 308.9 MB ringo/scientific 6.5 1a2eb0bba51b 10 days ago 322.8 MB
つぎに、runします。
[vagrant@localhost ~]$ sudo docker run -i -t ringo/scientific:6.5 cat /etc/system-release Scientific Linux release 6.5 (Carbon)
動いたー。
最後に
Scientific Linuxのベースイメージはringo/scientificにおいてあります。
また、ベースイメージを作成するのに利用した、スクリプトはgithub.com/ringohub/docker-base-imageにおいてあります。 よかったら、参考にどうぞ。
おわり!