VMware Photon OS の、Docker Hub オフィシャルリポジトリが公開されました。
Docker コンテナイメージが「docker pull photon」でダウンロードできます。
Three New Official Repos Join the Docker Library
http://blog.docker.com/2016/01/three-new-official-repos-join-the-docker-library/http://blog.docker.com/2016/01/three-new-official-repos-join-the-docker-library/
Docker Hub の photon リポジトリ。
https://hub.docker.com/r/library/photon/https://hub.docker.com/r/library/photon/
リポジトリの Tag を見ると、現時点(2016/01)でインストーラの ISO イメージが公開されている
Photon OS 1.0 TP2 と、それよりも新しい 1.0 RC が公開されています。
この時点の latest Tag は 1.0RC のイメージに割り当てられています。
ということで、Docker Hub オフィシャルのイメージからコンテナを起動してみます。
オフィシャル photon イメージからコンテナ起動。
Docker ホストは、Photon OS 1.0 TP2 を使用しています。
root [ ~ ]# cat /etc/photon-release
VMware Photon Linux 1.0 TP2
今回の Docker ホストは、photon21 というホスト名にしています。
root [ ~ ]# uname -n
photon21
Docker Hub のオフィシャルの photon はこれです。
NAME に「/」がなく、OFFICIAL が [OK] になっています。
root [ ~ ]# docker search photon | grep -v /
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
photon Photon OS is a technology preview of a min... 5 [OK]
イメージをダウンロード(pull)してみます。
タグなしで「photon」と指定しているので、「photon:latest」がダウンロードされます。
root [ ~ ]# docker pull photon
Using default tag: latest
latest: Pulling from library/photon
2b04b19ccb4f: Pull complete
a7d41096d06c: Pull complete
b12b5ead0dad: Pull complete
library/photon:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:b2848958bab911122e8469411184ab683d8105859497ecb33bb9f3760ace6ce0
Status: Downloaded newer image for photon:latest
ダウンロードされました。
root [ ~ ]# docker images photon
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
photon latest b12b5ead0dad 2 weeks ago 119.1 MB
コンテナを起動してみます。
起動と同時にコンテナの中に入っていることが、プロンプトとホスト名からわかります。
root [ ~ ]# docker run -it photon
root [ / ]# uname -n ★ここからコンテナの中。
4ee5f47acd72
latest から起動したコンテナの Photon OS のバージョンは 1.0 RC になっています。
root [ / ]# cat /etc/photon-release
VMware Photon Linux 1.0-RC
PHOTON_BUILD_NUMBER=09637bc
Photon OS では、yum のかわりに tdnf という yum 互換コマンドで RPM パッケージを管理します。
コンテナイメージに登録済みのリポジトリを見てみます。
root [ / ]# tdnf repolist
repo id repo name status
photon VMware Photon Linux 1.0(x86_64) enabled
photon-updates VMware Photon Linux 1.0(x86_64)Updates enabled
lightwave VMware Lightwave 1.0(x86_64) enabled
tdnf は、yum と同様のリポジトリ参照設定をします。
今回のコンテナでは、このように設定されていました。
tdnf / yum コマンドを実行しなくても、baseurl に設定されている URL に Web ブラウザなどで
アクセスすると、実際にどのような RPM が用意されているのか確認できます。
root [ / ]# ls /etc/yum.repos.d/
lightwave.repo photon-iso.repo photon-updates.repo photon.repo
root [ / ]# cat /etc/yum.repos.d/photon.repo
[photon]
name=VMware Photon Linux 1.0(x86_64)
baseurl=https://dl.bintray.com/vmware/photon_release_1.0_RC_x86_64
gpgkey=file:///etc/pki/rpm-gpg/VMWARE-RPM-GPG-KEY
gpgcheck=1
enabled=1
skip_if_unavailable=True
root [ / ]# cat /etc/yum.repos.d/photon-updates.repo
[photon-updates]
name=VMware Photon Linux 1.0(x86_64)Updates
baseurl=https://dl.bintray.com/vmware/photon_updates_1.0_RC_x86_64
gpgkey=file:///etc/pki/rpm-gpg/VMWARE-RPM-GPG-KEY
gpgcheck=1
enabled=1
skip_if_unavailable=True
root [ / ]# cat /etc/yum.repos.d/lightwave.repo
[lightwave]
name=VMware Lightwave 1.0(x86_64)
baseurl=https://dl.bintray.com/vmware/lightwave
gpgkey=file:///etc/pki/rpm-gpg/VMWARE-RPM-GPG-KEY
gpgcheck=1
enabled=1
skip_if_unavailable=True
root [ / ]# cat /etc/yum.repos.d/photon-iso.repo
[photon-iso]
name=VMWare Photon Linux 1.0(x86_64)
baseurl=file:///mnt/cdrom/RPMS
gpgkey=file:///etc/pki/rpm-gpg/VMWARE-RPM-GPG-KEY
gpgcheck=1
enabled=0
skip_if_unavailable=True
ちなみに、このコンテナイメージには、yum は入っていません。
ただし、photon のリポジトリには配置されているので追加インストールすることは可能です。
root [ / ]# yum
bash: yum: command not found
root [ / ]# tdnf list yum
yum.noarch 3.4.3-2.ph1rc photon
オフィシャル photon イメージのカスタマイズ。
photon では標準で tdnf を使用するようになっているので、
コンテナイメージをカスタマイズするときは、
これまで yum を使用していた手順では、かわりに tdnf コマンドを使用します。
たとえば、docker build ~ するときは、下記のような感じになります。
まず、例として httpd をインストールして起動するだけの超簡易的な Dockerfile を作成してみました。
Dockerfile の内容
FROM photon
MAINTAINER gowatana
RUN tdnf install -y httpd
ENTRYPOINT /usr/sbin/httpd -D FOREGROUND
イメージを build してみます。
root [ ~ ]# docker build -t photon-web:1.0 .
Sending build context to Docker daemon 10.75 kB
Step 0 : FROM photon
---> b12b5ead0dad
Step 1 : MAINTAINER gowatana
---> Running in 750719e6d0e2
---> e945a2934d58
Removing intermediate container 750719e6d0e2
Step 2 : RUN tdnf install -y httpd
---> Running in 989cd40787da
Installing:
Linux-PAM x86_64 1.1.8-2.ph1rc 1011.17 k
krb5 x86_64 1.12.2-1.ph1rc 3.51 M
e2fsprogs x86_64 1.42.9-4.ph1rc 2.67 M
cyrus-sasl x86_64 2.1.26-4.ph1rc 548.33 k
apr x86_64 1.5.2-5.ph1rc 519.52 k
apr-util x86_64 1.5.4-5.ph1rc 394.36 k
openldap x86_64 2.4.40-2.ph1rc 1.51 M
httpd x86_64 2.4.12-4.ph1rc 12.19 M
Total installed size: 22.30 M
Downloading:
httpd 4692452 100%
openldap 865721 100%
apr-util 156350 100%
apr 181582 100%
cyrus-sasl 276100 100%
e2fsprogs 1051512 100%
krb5 1406668 100%
/var/tmp/rpm-tmp.gShFPX: line 3: groupadd: command not found
/var/tmp/rpm-tmp.gShFPX: line 6: useradd: command not found
Testing transaction
Running transaction
Complete!
---> 9b51afe2abb4
Removing intermediate container 989cd40787da
Step 3 : ENTRYPOINT /usr/sbin/httpd -D FOREGROUND
---> Running in fac2999916a5
---> ccfd44e6ff70
Removing intermediate container fac2999916a5
Successfully built ccfd44e6ff70
「photon-web:1.0」が build されました。
root [ ~ ]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
photon-web 1.0 ccfd44e6ff70 About a minute ago 147.6 MB
photon latest b12b5ead0dad 2 weeks ago 119.1 MB
コンテナを起動して curl でアクセスすると、ちゃんと httpd でおなじみの「It works!」ページが返されています。
root [ ~ ]# docker run -d -p 8001:80 photon-web:1.0
a38e5be9e9d27a932d86b08781833a67592e4d36dcc00f9a88179426773fc86f
root [ ~ ]# curl http://localhost:8001/
<html><body><h1>It works!</h1></body></html>
ただ、Photon OS はコンテナ用の軽量 OS のため、デフォルトで設定されている photon の tdnf のリポジトリには
あまり RPM が配置されていません。
このイメージは、特定の用途(Lightwave とか)で使用するか、もしくは
カスタマイズするためにいくらか tdnf(yum)のリポジトリを追加する必要がありそうです。
以上、Docker Hub オフィシャルの photon イメージについてでした。