Docker Hub 上の公式リポジトリ

前回は、自分でイメージをビルドする方法を紹介しましたが、可能な限りDocker Hubで提供されている標準ベースイメージを選択するほうがより簡単です。

Docker Hub はクラウド上のレジストリ・サービスで、アプリケーションやサービス・コンテナの構築と配信が可能です。
誰でも無料でアカウントを作成することができます。また、デフォルトの無料プランでは、プライベートのレポジトリが1つ作成可能です。ちなみにMicroプランでは、月$7で、最大5つのプライベートのレポジトリの作成可能です。

https://hub.docker.com/ からログインするとこのような画面が表示されます。

f:id:shinji629:20181128121441p:plain

今回は、公開されている公式ベースイメージを検索し、利用していきます。

検索方法は、2つあります。
1つ目は、ウェブのサーチボックスで検索する方法です。

f:id:shinji629:20181128144155p:plain

2つ目は、コマンドから検索する方法です。

$ sudo docker search amazon

 検索結果は、このような感じになります。

f:id:shinji629:20181128144736p:plain

それでは早速、amazonlinuxを例にホストマシンにダウンロードし、実行してみましょう。

$ sudo docker pull amazonlinux
$ sudo docker run -it amazonlinux:latest bash

 -it は疑似 TTY(pseudo-TTY)をコンテナの標準入力に接続するよう、 Docker に対して命令します。つまり、コンテナ内でインタラクティブbash シェルを作成します。

試しにimage-idを確認してみます。ちなみに、AWSのアカウントなしでも気軽に利用することができます。

bash-4.2# cat /etc/image-id
image_name="amzn2-container-raw"
image_version="2"
image_arch="x86_64"
image_file="amzn2-container-raw-2.0.20181114-x86_64"
image_stamp="b1c1-d1b4"
image_date="20181114072229"
recipe_name="amzn2 container"
recipe_id="901690cd-b186-0bcf-b40b-6b66-f927-3af2-a8f848dd"

また、どんなコマンドが実行されるかなどイメージの中身をチェックすることもできます。

$ sudo docker inspect amazonlinux
[
{
"Id": "sha256:2467e0b1e91745890aa0298126eef4f5edeca2998ec07e932b468b2fb23d11f7",
"RepoTags": [
"amazonlinux:latest"

...

"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"/bin/bash\"]"
],
...

その他、イメージをマウントした後に、どんなパッケージがインストールされているかなども、チェックするこができます。

$ sudo atomic mount amazonlinux /mnt
$ rpm -qa --root /mnt|less
setup-2.8.71-9.amzn2.noarch
glibc-common-2.26-28.amzn2.0.1.x86_64
ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64
libselinux-2.5-12.amzn2.0.2.x86_64
nss-util-3.36.0-1.amzn2.x86_64
...

 アンマウントするには、次のコマンドを実行します。

$ sudo atomic unmount /mnt