2016-10-16 6 views
1

Windows Server 2016でWindowsコンテナを実行していて、ベースイメージに変更を加えました。今それをコミットしたいが、私はWindowsコンテナ - コンテナをコミットする方法

docker commit <containerId> <imageName> 

を実行したときに、私は次のようなエラーにデーモンから

エラー応答を取得します。Windowsが起動して、コンテナのコミットをサポートしていませんが。

誰にでも解決策があるのだろうか。コミットが不可能な場合は、どうやってコンテナを構築しますか?

+0

私は「誰にも解決策があるのだろうか」と言いましたが、コミットできない場合はコンテナをどのように構築するのですか?実際には、基本イメージからイメージを構築することを意味しました。 –

+0

PS:コンテナの状態をsaveコマンドで保存することができます。 ドッカーsave -o C:\ filenamet.tar microsoft/nanoserver –

+0

答えはまだサポートされていないということです。 私が使用したドッカーのバージョンは ドッカーバージョン1.13.0-dev、ビルド2a3ba03 –

答えて

0

これは言及docker commitとしてdaemon/commit.go

// It is not possible to commit a running container on Windows 
if runtime.GOOS == "windows" && container.IsRunning() { 
    return "", fmt.Errorf("Windows does not support commit of a running container") 
} 

から来ている:デフォルトでは

、コンテナがコミットされると画像がコミットされている間、そのプロセスが一時停止されます。

しかし、今だけPR 26795、およびdocker pauseためcommit dd38389で行われているWindows用の一時停止、再開を実装します。
その後すぐにコミットすることができます。

コミットできない場合は、どうやってコンテナを作成しますか?

コンテナを構築することではなく、コンテナをイメージ(またはイメージを構築する)として保存することです。

+0

返事をありがとう。 コンテナをイメージとして保存することは、まさに私がやりたいことです。私は、たとえば、ベースイメージmicrosoft/nanoserverを取って、そこにいくつかの設定、インストールなどを追加して、イメージとして保存したいと思っています。 –

+0

あなたの答えVonCに感謝します。したがって、答えはこの段階ではサポートされていません。 –

+0

はい、まだサポートされていません – VonC

2

これが機能するようになりました、完全な情報については、このblog postを参照してください。あなたがしなければならないことは、コンテナを止めてから、すべてのコンテナ(たとえ稼働していなくても)を表示するために 'docker ps -a'を使います。イメージを作成するコンテナを見つけ、通常の 'docker commit {containerid} {newimagename}'を使用します。もはや実行されていないので、コミットは成功し、新しいイメージが 'docker images ls'の出力に表示されます。

+0

非常に興味深い。あなたの答えをありがとう –

+0

コンテナを最初に停止することに加えて(Windowsコンテナを一時停止するだけでコミットすることができなかったので)、実行していた対話的なターミナル 'exec -it'セッションを終了しなければなりませんでした。停止したコンテナをコミットしようとするとエラーが発生します。インタラクティブセッションを終了してコンテナを停止した後、私はそれをコミットすることができました。 –

関連する問題