sudo usermod -aG docker $(whoami)
sudo usermod -aG docker your_current_username )
Dockerイメージへの変更をコミットする方法
ジャック・ウォレン、2017年4月27日
コンテナーを効率的に展開するためのテンプレートとしてdockerイメージを使用する場合、Jack Wallenは、実行中のコンテナーに変更をコミットして新しいdockerイメージを作成する方法を示します。

会社がdockerコンテナーを処理できる1つの方法は、コンテナーで使用するテンプレートイメージを作成することです。 たとえば、開発目的でコンテナを使用しており、デプロイされたすべてのコンテナが同じ基本ツールセットで起動することを確認したいとします。 イメージをプルし、コンテナーを開始し、ニーズに合わせて変更してから、このコンテナーで開発を開始できますが、このコンテナーを展開する必要があるたびに同じプロセスを繰り返す必要があります。
または、イメージを取得し、コンテナを起動し、開発者の基本的なニーズに合わせて変更し、これらの変更を新しいイメージにコミットできます。 これで、開発者が必要とするのは、変更されたイメージに基づいて新しいコンテナを起動することだけです。 このために、元の画像を変更する必要はありません。
これらすべてが実装したいプロセスのように見える場合、運はあなたの側にあります-それは本当に非常に簡単です。 PHPがインストールされ、build-essentialおよびnanoであるnginxの最新バージョンに基づくイメージが必要だとしましょう。 イメージをプルし、コンテナを起動し、それに接続し、ソフトウェアを追加し、コンテナのベースとして簡単に使用できる新しいイメージに変更をコミットするプロセスを説明します。
イメージをプルしてコンテナーを起動する
最初のステップは、最後のnginxイメージをプルすることです。 これは次のコマンドで実行されます。
Dockerプルnginx
イメージが読み込まれたら、それを開始して、ターミナルウィンドウを次のように使用できるようにします。
docker run --name nginx-template-base -p 8080:80 -e TERM = xterm -d nginx
これがテンプレートのベースになるため、nginx-template-baseと呼びました。
コンテナの接続と変更
次に、コンテナにアクセスする必要があります。 docker runコマンドを実行すると、長い識別子が表示されます。 コマンドを実行します:
docker exec -it CONTAINER_ID bash
CONTAINER_IDは、runコマンドを実行したときに画面に表示されるIDです。
このコマンドを実行すると、実行中のコンテナのターミナルが表示されます。 次に、必要なソフトウェアをテンプレートに追加しましょう。 これを行うには、次のコマンドを実行します。
apt-get nanoをインストール
apt-get install build-essential
apt-get install php5
注:公式のnginxイメージの場合、PHP 7はリポジトリを追加しないとインストールできません。
コンテナを終了し、変更をコミットします
ここで、コンテナを変更したため、変更をコミットする必要があります。 まず、exitコマンドでコンテナを終了します。 変更をコミットし、上記の変更に基づいて新しいイメージを作成するには、次のコマンドを実行します。
docker commit CONTAINER_ID nginx-template
CONTAINER_IDは、コンテナを最初に起動したときに指定されたIDです。
docker imagesコマンドを実行すると、新しいコンテナーが表示されます(図B):

図B.新しく作成した画像テンプレートを使用する準備ができました。
この時点で、新しいイメージを使用して新しいコンテナを起動する準備ができ、すべての変更が適用されます。 覚えて。 新しいコンテナを開始すると、コマンドは次のようになります。
docker run --name nginx-dev -p 8080:80 -e TERM = xterm -d nginx-template
(docker execコマンドを使用して)この新しいコンテナを入力すると、すべてが適切にインストールされ、使用する準備ができていることがわかります。
テンプレートをコンテナ化する簡単な方法
Dockerコンテナーでの作業をもう少し効率的にする方法を探している場合は、これで十分です。 イメージテンプレートの作成を開始すると、Dockerコンテナを使用した開発がはるかに簡単になります。
Dockerコンテナ移動ガイド
リック・ドナート、2016年10月28日。
Dockerは、コンテナを移動するためのさまざまなコマンド/メソッドを提供します。 この記事では、ホストとリポジトリの間でDockerコンテナーを移動するために必要なこれらのコマンドをすべて例で示します。
リポジトリからリポジトリへ
リポジトリからイメージを取得する方法と、ローカルイメージをリモートリポジトリに配信する方法を見てみましょう。
引く
docker pullコマンドは 、リポジトリからイメージを取得するために使用されます。
$ docker pull busybox
デフォルトタグの使用:最新
最新:ライブラリからのプル/ busybox
ダイジェスト:sha256:29f5d56d12684887bdfa50dcd29fc31eea4aaf4ad3bec43daf19026a7ce69912
ステータス:busyboxの画像は最新です:最新
ヒント:デフォルトでは、Dockerはdocker.ioからプルします。 別のリポジトリのプールの場合、レジストリのホスト名をdocker pullコマンドに追加します。 docker pull registry.fir3net.com/busybox([1 ])。
プッシュ
リポジトリからリポジトリにイメージを移動するには、 docker pushが使用されます。 以下は、リポジトリ内のプッシュイメージに影響する手順です。
- 認証-リポジトリで必要な場合、 docker loginコマンドによって実行されます
- タグ付け-docker tagコマンドで提供
- プッシュ-これにはdocker pushコマンドが使用されます
以下に例を示します。
//ログイン
$ docker login registry.fir3net.com
ユーザー名:felix001
パスワード:
ログインに成功しました
//タグ
$ docker tag busybox registry.fir3net.com/busybox-v0.0.1
//プッシュ
$ docker push registry.fir3net.com/busybox-v0.0.1
プッシュはリポジトリ[registry.fir3net.com/busybox-v0.0.1]を参照します(len:1)
画像リストの送信
リポジトリーregistry.fir3net.com/busybox-v0.0.1のプッシュ(1タグ)
d3a1f33e8a5a:画像が正常にプッシュされました
c22013c84729:イメージが正常にプッシュされました
d74508fb6632:イメージが正常にプッシュされました
91e54dfb1179:イメージが正常にプッシュされました
{https://registry.fir3net.com/v1/repositories/busybox-v0.0.1/tags/latest}のrev [91e54dfb1179]のタグをプッシュする
ホストからホストへ
ローカルのイメージまたはコンテナーを取得し、それを別のDocker環境にロードまたはインポートすることができます。
EXPORTまたはSAVE
では、 docker exportコマンドとdocker saveコマンドを見てみましょう。 docker exportは、コンテナの実行中(または一時停止中)のインスタンス([2])をtarファイルに保存します。 docker saveは、イメージをtarファイルに保存します。
これら2つのコマンドの例を以下に示します。
輸出する
$ docker ps
コンテナーIDイメージコマンド
5e8f397be6fa busybox "sh"
$ docker export 5e8f397be6fa -o busybox-container.tar
保存する
$ドッカー画像
リポジトリタグイメージID
busybox最新e02e811dd08f
$ docker save -o busybox-image.tar busybox
インポートまたはロード
最後に、最初に作成されたtarファイルにdocker importおよびdocker loadコマンドが適用されます。
docker importは 、 docker exportで作成されたtarファイル(つまり、コンテナー)をインポートするために使用されます。 docker loadを使用して、 docker saveで作成されたtarファイル(イメージ)をロードします。
//保存
$ docker import busybox-container.tar
sha256:94f13e1b4a26cd15a6c6d33da835e7319491a9c1dbeca16583750f7b96235403
//ロード
$ docker load --input busybox-image.tar
ロードされた画像:busybox:最新
参照:
[1] stackoverflow.com/questions/33054369/how-to-change-the-default-docker-registry-from-docker-io-to-my-private-registry
[2] blog.giantswarm.io/moving-docker-container-images-around