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 のイメージに割り当てられています。

dockerhub-photon-repo.png


ということで、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 イメージについてでした。