2016-09-04 6 views
1

それはあなたrunベースイメージは、あなたがコミット派生画像内に保持されないとき(-v)が使用バインディング任意のボリュームのように見える、とボリューム結合オプションがなければなりません派生した画像をrun毎回渡します。ドッカー量バインディング:派生画像VS Baseイメージ

例:


docker run -it -v /opt/hostappsdir:/apps ubuntu 

容器(命名:john_doeなど)に変更を加えて新たな画像(ローカル/試験)にコミット

docker commit john_doe local/test 

次に、これはホストディレクトリのファイルをリストしません/opt/hostappsdir

docker run --rm local/test ls /apps 

が、この1は

docker run --rm -v /opt/hostappsdir:/apps local/test ls /apps 

それをしない私は、ボリューム結合オプションを毎回渡し避けることができます任意の方法はありますか?

+0

私の質問を下落させた人が、何が間違っているのかを説明すると役に立ちます。 – devlent

+0

'commit'コマンドの構文エラーを修正しました。答えを待っています... – devlent

+0

私はこの質問が投票された理由を知りません - それは正当な論争であり、したがって明確化のための有効な質問 –

答えて

3

ボリュームは定義上、コンテナのレイヤの一部ではないため、コンテナからイメージを作成するときにコミットするレイヤの一部にはなりません。

特定の設定を追加したり、いくつかの拡張を追加したり、いくつかのパッケージを追加したりすることができます。

ヒント

from <baseimage> 
COPY yourconfig /etc/somewhere 
COPY yourasset /var/www 

RUN sed ... \ // change some configuration 
    && apt-get update && apt-get install curl // some packages 

でDockerfileを作成します。私自身はのアイデア好きではない「コミット画像にコンテナを変更する」 - 危険で、毎回、よりにわたり同じ結果を生成しません。実際に変更された内容は正式化されません。あなたはあなたが行ったことを知らないので、基本イメージの更新によって画像を更新するのは難しいでしょう。たとえそれを書き留めたとしても、それをやり直す努力がたくさんあります。再び。

+0

ありがとう。あなたの応答の最初の行は、私が欲しかった答えです。私が意味する変更は、aptパッケージを追加するためのものです。コードの変更は、ホストディレクトリがコンテナにバインドされている場合にのみ行われます。 – devlent

+0

私はおそらく岩の下に住んでいたかもしれませんが、私は 'docker-compose'について学んだだけです...うわー!これは、私が期待していたことであり、ドッカーが作ったもので、私が書いたすべてのbashスクリプトを完全に冗長にしたものです! – devlent

関連する問題