本ページは、以下のサイトを翻訳したものです。
Working with Docker Images
https://docs.docker.com/userguide/dockerimages/
このサイトを翻訳中にDockerfileチューとリアルへのリンクが出てきて
ついそっちを先に訳してしまいました。
以下、翻訳したものです(参照の際は at your own risk でネ)。
-------
Docker イメージの動作
イントロダクションでは、Dockerイメージはコンテナのベースであることを議論しました。前セクションでは、例えばubuntuイメージや training/webapp イメージのような、既存のDockerイメージを使用しました。
Dockerホスト上のイメージをダウンロードしたDockerストアも学習しました。イメージがホスト上に存在しない場合、レジストリ(デフォルトではDocker Hub レジストリ)からダウンロードして使用しました。
このセクションでは、次のようなDockerイメージを探検します:
Dockerホスト上のローカルイメージの管理および動作
基本イメージの作成;
Docker Hub リポジトリへのイメージのアップロード
ホスト上のイメージのリスト
ローカルホスト上に保持しているイメージをリスト表示してみましょう。docker imagesコマンドを次のように使います:
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
training/webapp latest fc77f57ad303 3 weeks ago 280.5 MB
ubuntu 13.10 5e019ab7bf6d 4 weeks ago 180 MB
ubuntu saucy 5e019ab7bf6d 4 weeks ago 180 MB
ubuntu 12.04 74fe38d11401 4 weeks ago 209.6 MB
ubuntu precise 74fe38d11401 4 weeks ago 209.6 MB
ubuntu 12.10 a7cf8ae4e998 4 weeks ago 171.3 MB
ubuntu quantal a7cf8ae4e998 4 weeks ago 171.3 MB
ubuntu 14.04 99ec81b80c55 4 weeks ago 266 MB
ubuntu latest 99ec81b80c55 4 weeks ago 266 MB
ubuntu trusty 99ec81b80c55 4 weeks ago 266 MB
ubuntu 13.04 316b678ddf48 4 weeks ago 169.4 MB
ubuntu raring 316b678ddf48 4 weeks ago 169.4 MB
ubuntu 10.04 3db9c44f4520 4 weeks ago 183 MB
ubuntu lucid 3db9c44f4520 4 weeks ago 183 MB
ユーザガイドでこれまでに使用したイメージを参照することができます。どのイメージも起動の際にDocker Hubからダウンロードしてきたものです。
リスト上には3つの重要なイメージ情報を読み取ることができます。
- リポジトリの出自、例「ubuntu」
- 各イメージのタグ、例「14.04」
- 各イメージのID
リポジトリは潜在的に複数の異なる版のイメージを保持しています。このubuntuイメージのケースでは、Ubuntu 10.04、12.04、12.10、13.04、13.10、そして 14.04というバージョンをカバーしています。各バージョンはタグによって特定づけており、次のようなタグづけされたイメージで参照する事ができます:
ubuntu:14.04
次のように、タグイメージを参照してコンテナを実行します:
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
もしかわりに「Ubuntu 12.04」イメージを使いたいのであれば:
$ sudo docker run -t -i ubuntu:12.04 /bin/bash
もしバージョンを特定しないのであれば、ubuntuを使う例として、普通は「ubuntu:latest」イメージを使います。
Tips:
「ubuntu:12.04」のような特定タグのイメージの使用を推奨します。いつも使っているイメージのバージョンが何か明確にすることができます。
新しいイメージの取得
新しいイメージをどうやって取得するのでしょうか?Dockerは、ホスト上に存在しないイメージは自動的にダウンロードします。
ただしコンテナの起動の際に時々潜在的に追加されます。もしイメージの事前ダウンロードを実行したい場合は、docker pullコマンドを使います。「centos」イメージをダウンロードシてみましょう。
$ sudo docker pull centos
Pulling repository centos
b7de3133ff98: Pulling dependent layers
5cc9e91966f7: Pulling fs layer
511136ea3c5a: Download complete
ef52fb1fe610: Download complete
...
Status: Downloaded newer image for centos
それぞれのレイヤのイメージがダウンロードされ、イメージのダウンロードするまで待機せずにイメージを実行することが可能になります。
$ sudo docker run -t -i centos /bin/bash
bash-4.1#
イメージの検索
Dockerの機能の一つは、たくさんの人が様々な目的で構築されたDockerイメージがあります。多くはDocker Hubへアップロードサれています。Docker Hub Webサイト上でこれらのイメージを検索することができます。
docker searchコマンドを使えば、コマンドラインからでも検索は可能です。Webアプリケーション開発で使用するRubyとSinatraがインストールされたイメージを探してみましょう。docker searchコマンドを使って、sinatraという用語が含まれるすべてのイメージを検索することができます。
$ sudo docker search sinatra
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
training/sinatra Sinatra training image 0 [OK]
marceldegraaf/sinatra Sinatra test app 0
mattwarren/docker-sinatra-demo 0 [OK]
luisbebop/docker-sinatra-hello-world 0 [OK]
bmorearty/handson-sinatra handson-ruby + Sinatra for Hands on with D... 0
subwiz/sinatra 0
bmorearty/sinatra 0
...
「sinatra」という単語を使っているたくさんのイメージを見つけることができました。docker searchコマンドの結果として、イメージの名前、説明、スター数(イメージの社会的人気度-イメージを気に入ったらユーザがスターを与えることができる)、オフィシャル、そして自動化(Automated)ビルドステータスのリストが返ってきます。オフィシャルリポジトリはStackbrewプロジェクトによって構築・管理されています。また自動化(Automated)リポジトリとはイメージのソースや内容が実証されている自動化されたビルド(Automated Builds)です。
ここでは、有効なイメージ群をレビューして「training/sinatra」を使うことを決めました。これまで、2つのイメージリポジトリのタイプを学習してきました。1つは「ubuntu」イメージのような、ベースイメージもしくはルートイメージと呼ばれるものです。これらのイメージは Docker Inc により構築・検証・サポートされています。これらのイメージは単一の単語の名前により識別することができます。
もうひとつは、今回選択した「training/sinatra」イメージのような、ユーザイメージです。ユーザイメージはDockerコミュニティのメンバに所属し、構築・管理されています。ユーザイメージは、ここでは「training」のように、構築した人のユーザ名をプレフィックスとして識別することができます。
イメージのダウンロード(pulling)
docker pull コマンドを使って適当なイメージ、ここでは「training/sinatra」、を識別してダウンロードを実行することができます。
$ sudo docker pull training/sinatra
チームは自身のコンテナを実行することでイメージを使用することができます。
$ sudo docker run -t -i training/sinatra /bin/bash
root@a8cb6ce02d85:/#
自分たちのイメージの作成
チームは「training/sinatra」イメージがかなり使いやすいことがわかりました。しかし、それは彼らが必要とするものではありませんでした。彼らは「training/sinatra」イメージに若干の変更を必要としています。イメージの変更・作成する2つの方法が有ります。
- イメージから作成したコンテナを変更して新たなイメージとしてコミットする
- イメージを作成する手順を定義したDockerfileを使う
イメージの変更およびコミット
イメージを変更するために、最初に更新対象のコンテナを作成する必要があります。
$ sudo docker run -t -i training/sinatra /bin/bash
root@0b2616b0e5a8:/#
注意:
すぐに必要となるので、作成したコンテナID(0b2616b0e5a8)を書き留めておいてください。
コンテナ上で json gem を追加します。
root@0b2616b0e5a8:/# gem install json
希望する変更をコンテナにくわえたら、exitコマンドを使ってコンテナから出ましょう。
コンテナには希望する変更を加えたので、docker commitコマンドを使ってコンテナのコピーをイメージとしてコミットすることができます。
$ sudo docker commit -m "Added json gem" -a "Kate Smith" \
0b2616b0e5a8 ouruser/sinatra:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
上記のように docker commit コマンドを使いました。その際に「-m」と「-a」の2つのフラグを指定しました。「-m」フラグは、バージョン管理システム上のコミットのように、コミットメッセージの指定を許可します。「-a」フラグは変更者の指定を許可します。
また、(先ほど書き留めたID)0b2616b0e5a8により、作成したいイメージのコンテナを指定します。そしてイメージのターゲットを指定します:
ouruser/sinatra:v2
このターゲットを詳しく見ていきましょう。我々が書き込んでいるイメージは、新規ユーザ"outeruser"として編成しています。またイメージ名として、ここではオリジナルイメージ名である「sinatra」を指定しました。最後にあるイメージのタグは「v2」と指定しました。
docker imageコマンドを使って新イメージ「ouruser/sinatra」を参照することができます。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
training/sinatra latest 5bc342fa0b91 10 hours ago 446.7 MB
ouruser/sinatra v2 3c59e02ddd1a 10 hours ago 446.7 MB
ouruser/sinatra latest 5db5f8471261 10 hours ago 446.7 MB
新イメージを使って新たなコンテナを作成するには、次のように実行します:
$ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash
root@78e82f680994:/#
Dockerfileからイメージを構築
docker commitコマンドの利用は、とても簡単なイメージ拡張方法ですが、チーム間でのイメージを開発プロセスで共有するには少々厄介で簡単ではありません。代わりに新しいコマンド、docker build、を使って新規イメージをスクラッチから構築することができます。
docker buildコマンドを実行するには、Dockerにイメージの構築方法を伝えるためのインストラクションの集まりで構成されたDockerfileを作成します。
まず最初にディレクトリを作成しDockerfileを作成しましょう。
$ mkdir sinatra
$ cd sinatra
$ touch Dockerfile
それぞれのインストラクションはイメージの新たなレイヤを作成します。開発チームにおけるSinatraイメージの構築のための簡単な例を見てみましょう。
# This is a comment
FROM ubuntu:14.04
MAINTAINER Kate Smith
RUN apt-get update && apt-get install -y ruby ruby-dev
RUN gem install sinatra
Dockerfileが何をしているか見てください。それぞれのインストラクションは文(statement)の先頭にあり、大文字で書かれています。
INSTRUCTION statement
注意:
#を使ってコメントを表示できます。
最初のインストラクション"FROM"はDockerにイメージの元をがなにかを示しています。この場合は「Ubuntu 14.04」をイメージのベースとしています。
次のインストラクション"MAINTAINER"は誰が新イメージを管理しているかを指定しています。
最後に2つのインストラクション"RUN"を定義しています。RUNインストラクションは、パッケージのインストールのような、イメージ内でコマンドを実行します。ここではAPTキャッシュの更新、RubyおよびRubyGemsのインストール、そして sinatora gem をインストールしています。
注意:
Dockerfileにはもっとたくさんのインストラクションが使えます。
では、ここまでのDockerfileでdocker buildコマンドでイメージをビルドしてみましょう。
$ sudo docker build -t ouruser/sinatra:v2 .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu:14.04
---> e54ca5efa2e9
Step 1 : MAINTAINER Kate Smith
---> Using cache
---> 851baf55332b
Step 2 : RUN apt-get update && apt-get install -y ruby ruby-dev
---> Running in 3a2558904e9b
Selecting previously unselected package libasan0:amd64.
(Reading database ... 11518 files and directories currently installed.)
Preparing to unpack .../libasan0_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libasan0:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libatomic1:amd64.
Preparing to unpack .../libatomic1_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libatomic1:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libgmp10:amd64.
Preparing to unpack .../libgmp10_2%3a5.1.3+dfsg-1ubuntu1_amd64.deb ...
Unpacking libgmp10:amd64 (2:5.1.3+dfsg-1ubuntu1) ...
Selecting previously unselected package libisl10:amd64.
Preparing to unpack .../libisl10_0.12.2-1_amd64.deb ...
Unpacking libisl10:amd64 (0.12.2-1) ...
Selecting previously unselected package libcloog-isl4:amd64.
Preparing to unpack .../libcloog-isl4_0.18.2-1_amd64.deb ...
Unpacking libcloog-isl4:amd64 (0.18.2-1) ...
Selecting previously unselected package libgomp1:amd64.
Preparing to unpack .../libgomp1_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libgomp1:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libitm1:amd64.
Preparing to unpack .../libitm1_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libitm1:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libmpfr4:amd64.
Preparing to unpack .../libmpfr4_3.1.2-1_amd64.deb ...
Unpacking libmpfr4:amd64 (3.1.2-1) ...
Selecting previously unselected package libquadmath0:amd64.
Preparing to unpack .../libquadmath0_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libquadmath0:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libtsan0:amd64.
Preparing to unpack .../libtsan0_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libtsan0:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package libyaml-0-2:amd64.
Preparing to unpack .../libyaml-0-2_0.1.4-3ubuntu3_amd64.deb ...
Unpacking libyaml-0-2:amd64 (0.1.4-3ubuntu3) ...
Selecting previously unselected package libmpc3:amd64.
Preparing to unpack .../libmpc3_1.0.1-1ubuntu1_amd64.deb ...
Unpacking libmpc3:amd64 (1.0.1-1ubuntu1) ...
Selecting previously unselected package openssl.
Preparing to unpack .../openssl_1.0.1f-1ubuntu2.4_amd64.deb ...
Unpacking openssl (1.0.1f-1ubuntu2.4) ...
Selecting previously unselected package ca-certificates.
Preparing to unpack .../ca-certificates_20130906ubuntu2_all.deb ...
Unpacking ca-certificates (20130906ubuntu2) ...
Selecting previously unselected package manpages.
Preparing to unpack .../manpages_3.54-1ubuntu1_all.deb ...
Unpacking manpages (3.54-1ubuntu1) ...
Selecting previously unselected package binutils.
Preparing to unpack .../binutils_2.24-5ubuntu3_amd64.deb ...
Unpacking binutils (2.24-5ubuntu3) ...
Selecting previously unselected package cpp-4.8.
Preparing to unpack .../cpp-4.8_4.8.2-19ubuntu1_amd64.deb ...
Unpacking cpp-4.8 (4.8.2-19ubuntu1) ...
Selecting previously unselected package cpp.
Preparing to unpack .../cpp_4%3a4.8.2-1ubuntu6_amd64.deb ...
Unpacking cpp (4:4.8.2-1ubuntu6) ...
Selecting previously unselected package libgcc-4.8-dev:amd64.
Preparing to unpack .../libgcc-4.8-dev_4.8.2-19ubuntu1_amd64.deb ...
Unpacking libgcc-4.8-dev:amd64 (4.8.2-19ubuntu1) ...
Selecting previously unselected package gcc-4.8.
Preparing to unpack .../gcc-4.8_4.8.2-19ubuntu1_amd64.deb ...
Unpacking gcc-4.8 (4.8.2-19ubuntu1) ...
Selecting previously unselected package gcc.
Preparing to unpack .../gcc_4%3a4.8.2-1ubuntu6_amd64.deb ...
Unpacking gcc (4:4.8.2-1ubuntu6) ...
Selecting previously unselected package libc-dev-bin.
Preparing to unpack .../libc-dev-bin_2.19-0ubuntu6_amd64.deb ...
Unpacking libc-dev-bin (2.19-0ubuntu6) ...
Selecting previously unselected package linux-libc-dev:amd64.
Preparing to unpack .../linux-libc-dev_3.13.0-30.55_amd64.deb ...
Unpacking linux-libc-dev:amd64 (3.13.0-30.55) ...
Selecting previously unselected package libc6-dev:amd64.
Preparing to unpack .../libc6-dev_2.19-0ubuntu6_amd64.deb ...
Unpacking libc6-dev:amd64 (2.19-0ubuntu6) ...
Selecting previously unselected package ruby.
Preparing to unpack .../ruby_1%3a1.9.3.4_all.deb ...
Unpacking ruby (1:1.9.3.4) ...
Selecting previously unselected package ruby1.9.1.
Preparing to unpack .../ruby1.9.1_1.9.3.484-2ubuntu1_amd64.deb ...
Unpacking ruby1.9.1 (1.9.3.484-2ubuntu1) ...
Selecting previously unselected package libruby1.9.1.
Preparing to unpack .../libruby1.9.1_1.9.3.484-2ubuntu1_amd64.deb ...
Unpacking libruby1.9.1 (1.9.3.484-2ubuntu1) ...
Selecting previously unselected package manpages-dev.
Preparing to unpack .../manpages-dev_3.54-1ubuntu1_all.deb ...
Unpacking manpages-dev (3.54-1ubuntu1) ...
Selecting previously unselected package ruby1.9.1-dev.
Preparing to unpack .../ruby1.9.1-dev_1.9.3.484-2ubuntu1_amd64.deb ...
Unpacking ruby1.9.1-dev (1.9.3.484-2ubuntu1) ...
Selecting previously unselected package ruby-dev.
Preparing to unpack .../ruby-dev_1%3a1.9.3.4_all.deb ...
Unpacking ruby-dev (1:1.9.3.4) ...
Setting up libasan0:amd64 (4.8.2-19ubuntu1) ...
Setting up libatomic1:amd64 (4.8.2-19ubuntu1) ...
Setting up libgmp10:amd64 (2:5.1.3+dfsg-1ubuntu1) ...
Setting up libisl10:amd64 (0.12.2-1) ...
Setting up libcloog-isl4:amd64 (0.18.2-1) ...
Setting up libgomp1:amd64 (4.8.2-19ubuntu1) ...
Setting up libitm1:amd64 (4.8.2-19ubuntu1) ...
Setting up libmpfr4:amd64 (3.1.2-1) ...
Setting up libquadmath0:amd64 (4.8.2-19ubuntu1) ...
Setting up libtsan0:amd64 (4.8.2-19ubuntu1) ...
Setting up libyaml-0-2:amd64 (0.1.4-3ubuntu3) ...
Setting up libmpc3:amd64 (1.0.1-1ubuntu1) ...
Setting up openssl (1.0.1f-1ubuntu2.4) ...
Setting up ca-certificates (20130906ubuntu2) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
Setting up manpages (3.54-1ubuntu1) ...
Setting up binutils (2.24-5ubuntu3) ...
Setting up cpp-4.8 (4.8.2-19ubuntu1) ...
Setting up cpp (4:4.8.2-1ubuntu6) ...
Setting up libgcc-4.8-dev:amd64 (4.8.2-19ubuntu1) ...
Setting up gcc-4.8 (4.8.2-19ubuntu1) ...
Setting up gcc (4:4.8.2-1ubuntu6) ...
Setting up libc-dev-bin (2.19-0ubuntu6) ...
Setting up linux-libc-dev:amd64 (3.13.0-30.55) ...
Setting up libc6-dev:amd64 (2.19-0ubuntu6) ...
Setting up manpages-dev (3.54-1ubuntu1) ...
Setting up libruby1.9.1 (1.9.3.484-2ubuntu1) ...
Setting up ruby1.9.1-dev (1.9.3.484-2ubuntu1) ...
Setting up ruby-dev (1:1.9.3.4) ...
Setting up ruby (1:1.9.3.4) ...
Setting up ruby1.9.1 (1.9.3.484-2ubuntu1) ...
Processing triggers for libc-bin (2.19-0ubuntu6) ...
Processing triggers for ca-certificates (20130906ubuntu2) ...
Updating certificates in /etc/ssl/certs... 164 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
---> c55c31703134
Removing intermediate container 3a2558904e9b
Step 3 : RUN gem install sinatra
---> Running in 6b81cb6313e5
unable to convert "\xC3" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to US-ASCII for README.rdoc, skipping
unable to convert "\xC3" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to US-ASCII for README.rdoc, skipping
Successfully installed rack-1.5.2
Successfully installed tilt-1.4.1
Successfully installed rack-protection-1.5.3
Successfully installed sinatra-1.4.5
4 gems installed
Installing ri documentation for rack-1.5.2...
Installing ri documentation for tilt-1.4.1...
Installing ri documentation for rack-protection-1.5.3...
Installing ri documentation for sinatra-1.4.5...
Installing RDoc documentation for rack-1.5.2...
Installing RDoc documentation for tilt-1.4.1...
Installing RDoc documentation for rack-protection-1.5.3...
Installing RDoc documentation for sinatra-1.4.5...
---> 97feabe5d2ed
Removing intermediate container 6b81cb6313e5
Successfully built 97feabe5d2ed
docker buildコマンドの引数に「-t」フラグを使って新規イメージは「ouruser」に所属し、「sinatra」というリポジトリ名でタグを「v2」と指定しました。
また「.」を使ってDockerfileのロケーションをカレントディレクトリ上のDockerfileを指定しました。
注意:
Dockerfileのパスについても指定可能です。
では、動作時のビルドプロセスについてみていきましょう。Dockerはまず最初にビルドコンテキスト(基本的にはビルドしているディレクトリのコンテンツ)をアップロードします。これは、Dockerデーモンが実際にイメージのビルドを実行するのでローカルコンテキストが必要になるためです。
次に、Dockerfile内のインストラクションが順番に実行されるところをみていきましょう。各ステップで、新規コンテナを構築し、そのコンテナ内でインストラクションを実行し、変更をコミットするところが確認できます-ちょうどdocker commit ワークフローを早い段階で確認できました。すべてのインストラクションの実行がおわると、97feabe5d2ed というイメージ( ouruser/sinatra:v2 としてもタグ付けされる)がのこり、すべての中間コンテナがクリンナップのために削除されました。
注意:
ストレージドライバとは関係なく、イメージは最大127レイヤまでしか保持できません。
この制限は、イメージサイズ全体の最適化をうながすためにグローバルに設定されています。
新しいイメージからコンテナをこうつくできるようになりました。
$ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash
root@8196968dac35:/#
注意:
ここではイメージ生成のための短い概要だけ紹介しています。
利用可能な他のインストラクションについては飛ばしました。
ガイドの後ろのほうでよりおおくのインストラクションについて触れます。
また、各インストラクションのより詳細な説明や例はDockerfileリファレンスにて
参照できます。
明確で、読みやすく、保守しやすいDockerfileの書き方は、
Dockerfile ベストプラクティスガイドを参照してください。
さらに
さらにもっと学習したい方は、Dockerチュートリアルをご利用ください。
イメージ上にタグをセット
コミット後やビルド後に既存のイメージに対してタグを追加することも可能です。「docker tag」を使います。ouruser/sinatra イメージに新規タグを追加してみましょう。
$ sudo docker tag 5db5f8471261 ouruser/sinatra:devel
「docker tag」コマンドはイメージID(ここでは 5db5f8471261)、ユーザ名、リポジトリ名、新規タグ名が必要です。
「docker image」コマンドを使って新しいタグを確認しましょう。
$ sudo docker images ouruser/sinatra
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ouruser/sinatra latest 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB
イメージをDocker Hubへプッシュ
ビルドや新規生成した新規イメージを 「docker push」コマンドを使って Docker Hub へプッシュすることができます。 公的あるいは個人的なリポジトリにプッシュして、他の人とイメージを共有することができます。
$ sudo docker push ouruser/sinatra...
The push refers to a repository [ouruser/sinatra] (len: 1)
Sending image list
Pushing repository ouruser/sinatra (3 tags)
ホストからイメージを削除
コンテナの場合と似たような方法である「docker rmi」コマンドを使って、Dockerホスト上のイメージを削除することもできます。
これ以上必要ないので「training/sinatra」イメージを削除してみましょう。
$ sudo docker rmi training/sinatra
Untagged: training/sinatra:latest
Deleted: 5bc342fa0b91cabf65246837015197eecfa24b2213ed6a51a8974ae250fedd8d
Deleted: ed0fffdcdae5eb2c3a55549857a8be7fc8bc4241fb19ad714364cbfd7a56b22f
Deleted: 5c58979d73ae448df5af1d8142436d81116187a7633082650549c52c3a2418f0
注意:
ホストからイメージを削除するために、
「training/sinatra」をベースとする実行中のコンテナがないことを確認して下さい。
次のステップ
これまでは、Dockerコンテナ内の個々のアプリケーションのビルド方法について学習してきました。つぎにDockerコンテナ同士をリンクさせてアプリケーションスタック全体のビルド方法を学習しましょう。
DockerチュートリアルでDockerfileの知識をテストしてみましょう。
コンテナのリンクへ進む。
0 件のコメント:
コメントを投稿