質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

595閲覧

Dockerイメージに変更が入ることがある?

pandanoir

総合スコア72

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/08/10 07:05

コンテナレイヤーが含まれた状態のイメージを使っているような状況がたまに起こって、困っています。

状況

たとえば、以下のような2つのDockerfileがあるとします。

FROM nginx:alpine COPY ./conf.d /etc/nginx/conf.d
FROM nginx:alpine COPY dist /usr/share/nginx/html

このとき、前者からイメージを作ってコンテナを立ち上げたあと、後者からイメージを作ると、なぜかconf.dが入った状態になったりします(再現しないこともあります)。他にもdocker-composeでimageを指定した際などにまれに起こります。

version: '3' services: web: image: nginx:alpine volumes: - ./conf.d:etc/nginx/conf.d:ro service-a: image: nginx:alpine volumes: - ./dist:/usr/share/nginx/html

推測

状況を鑑みるに、もしかするとコンテナレイヤー込みの状態でnginx:alpineが読み込まれてしまっているのではないかと推測しています。実際、改めてdocker pull nginx:alpineをすると直ります。

このように、コンテナレイヤー込でイメージが使われるなんてことはあるのでしょうか?

ちょっと自分でも意図して再現できないので、グチャグチャした質問で申し訳ないです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問欄の Compose ファイルは Dockerfile を参照しません

webservice-a も同じイメージ 'nginx:alpine' からのコンテナー起動となります
異なるのは、ホストから bind マウントするディレクトリーだけです

ただし、Docker Compose ではなく、docker コマンドで Dockerfile からイメージをビルドし、
ビルドしたイメージに nginx:alpine タグを付加していたりすると
webservice-a も最後にビルドしたイメージでコンテナを起動します
例えば、次のようなコマンドでビルドしていた場合です:

console

1docker build -t nginx:alpine

Docker のタグは、同じタグを付加すると最後に付加したイメージのみにタグが付加され、
今までタグが付いていたイメージからはタグが削除されます

つまり、ローカルに pull した公式の Nginx イメージからタグが削除されることになります

Docker Compose で複数の Dockerfile を扱うときは次のようにします:

text

1**/project/ 2 +---web 3 | +---Dockerfile 4 | +---etc. 5 | ... 6 +---service-a 7 | +---Dockerfile 8 | +---etc. 9 +---docker-compose.yml

yaml

1version: '3' 2services: 3 web: 4 build: 5 context: web 6 volumes: 7 - ./conf.d:/etc/nginx/conf.d:ro 8 service-a: 9 context: service-a 10 volumes: 11 - ./dist:/usr/share/nginx/html

投稿2020/08/10 07:28

y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pandanoir

2020/08/10 07:35

なるほど、確かに起こっている現象をみるに同じタグでイメージをビルドしている、というのが当たりに思えます。今回、ここには書いていなかったのですが、 docker-compose.ymlにimage名を指定しないままDockerfileを指定してbuildしていたので、おそらくpullしてきたイメージが上書きされていたみたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問