web-dev-qa-db-ja.com

Docker-更新されたイメージを再構築し、Dockerクラウドにプッシュする適切な方法は何ですか?

私が現在していること:

Dockerfile:

FROM python:3.5.1

ENV PYTHONUNBUFFERED 1

RUN mkdir /www
WORKDIR /www
ADD deps.txt /www/
RUN pip3 install -r deps.txt
ADD . /www/
RUN chmod 0755 /www/docker-init.sh

ビルドコマンド:

docker build -t my-djnago-app:latest .

タグ付け:

docker tag my-djnago-app:latest lolorama/my-djnago-app-img:latest

プッシュ:

docker Push lolorama/my-djnago-app-img:latest

これらの手順を実行した後、リポジトリイメージはまだ更新されていません。 「レイヤーは既に存在します」というメッセージが引き続き表示されます。

The Push refers to a repository [docker.io/lolorama/my-Django-app-img]
fd5aa641b308: Layer already exists
d9c60c6f98e8: Layer already exists
d9d14867f6d7: Layer already exists
64ce166099ca: Layer already exists
73b670e35c69: Layer already exists
5f70bf18a086: Layer already exists
9ea142d097a5: Layer already exists
52f5845b1de0: Layer already exists
e7fadb3ab9d4: Layer already exists
cef72744de05: Layer already exists
591569fa6c34: Layer already exists
998608e2fcd4: Layer already exists
c12ecfd4861d: Layer already exists

私は何を間違えていますか?

23
Alex T

@ lorenzvth7に感謝します!

同じタグの画像が2つありました(これをクラウドにプッシュしていました)。

解決策は次のとおりです。

  1. 画像を調べて、同じタグを持つ2つ以上を見つけます。

    docker images 
    
  2. それらを削除します。

    docker rmi --force 'image id'
    
  3. それでおしまい!上記の私の質問の手順に従ってください。
20
Alex T

ブルートフォースとはいえ、別の解決策は、再度プッシュする前に-no-cacheフラグで再構築することです。

docker rmi --force my-djnago-app:latest

docker build -t my-djnago-app:latest . --no-cache

docker Push my-djnago-app:latest
1
Timothy Perez