Dockerリポジトリの名前を変更する方法またはイメージの名前を変更する方法?


569

イメージのリポジトリ名を変更しようとしています:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
server              latest              d583c3ac45fd        26 minutes ago      685.5 MB

したがって、名前serverを次のように変更したいと思いmyname/serverます。

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myname/server       latest              d583c3ac45fd        26 minutes ago      685.5 MB

これどうやってするの?


5
REPOSITORYとTAGの違いは何ですか?
チャーリーパーカー

@CharlieParker TAGは通常、リポジトリのバージョンに使用されます。たとえば、タグが10.1のリポジトリmariadb
Ian Hunter

:ドッキングウィンドウタグ--helpからの構文は以下のcmdをフォローdocker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
anandchaugule

私は:(ことはできませんあまりにも悪い..変更dockerhubで全体のリポジトリ名たい
danger89は

回答:


1035
docker image tag server:latest myname/server:latest

または

docker image tag d583c3ac45fd myname/server:latest

タグは、完全なイメージ名(d583c3ac45fd...)の単なる人間が読めるエイリアスです。

したがって、同じイメージに好きなだけ関連付けることができます。古い名前が気に入らない場合は、タグを付け直した後で削除できます。

docker rmi server

それだけで削除されalias/tagます。にd583c3ac45fdは他の名前が付いているため、実際の画像は削除されません。


これは私にはうまくいきません。docker tag myname / server:latest dockerを実行すると、docker.ioを先頭に追加するのに適していると思われるため、イメージタグは最終的にdocker.io/myname/server:latestになります。
スコット

ホストOSとDockerのバージョンは何ですか?あなたのDockerインストールに関する何かがタグ命令を変更していると思います。
アンディ

25
また:latest、問題の画像名のタグが1つしかない場合は省略してもかまいません。しかし、それはイメージの名前が呼ばれることは非常に非常に特有だREPOSITORYの出力で(画像ではなく)docker imagesそれはと呼ばれるコマンドを使用して名前を変更する必要がありながら、tag一方でTAGその出力で個別の列です。私は彼らがこれと他の関連した事を片付けてくれることを願っています...
matanster '26 / 03/16

おそらくdocker image tag from_server:version to_server:versionここで説明されているようにしたいことに注意してください:docs.docker.com/engine/reference/commandline/image_tag
Traveler

20

省略形として、以下を実行できます。

docker tag d58 myname/server:latest

は画像d58IDの最初の3文字を表します。この場合は、これで十分です。

最後に、次のように古いイメージを削除できます。

docker rmi server

1
私の場合、完全なIDを使用すると、どういうわけかそれの最後に:latestが追加され、それが見つからなかったというエラーが表示されます。最初の3文字は、はるかにうまく機能します。(つまりdocker tag d583c3ac45fd myname/server:latestdocker tag d58 myname/server:latest機能しますが機能しません。)
John Hamilton

8

最近、一部のイメージをDockerレジストリ(docker.mycompany.com)からArtifactory(docker.artifactory.mycompany.com)に移行する必要がありました

docker pull docker.mycompany.com/something/redis:4.0.10
docker tag docker.mycompany.com/something/redis:4.0.10 docker.artifactory.mycompany.com/something/redis:4.0.10
docker push docker.artifactory.mycompany.com/something/redis:4.0.10

6
docker tag CURRENT_IMAGE_NAME DESIRED_IMAGE_NAME

2
確かにこれでうまくいきますが、なぜこの人に説明していません。彼らはDockerタグが何であるかについて混乱しているようです... docker -hの使用方法を知っていたとすると
Adam Kaplan

1

受け入れられた回答は単一の名前変更に最適ですが、同じリポジトリを持つ複数のイメージの名前を一度に変更する(そして古いイメージを削除する)方法があります。

フォームの古い画像がある場合:

$ docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
old_name/image_name_1    latest              abcdefghijk1        5 minutes ago      1.00GB
old_name/image_name_2    latest              abcdefghijk2        5 minutes ago      1.00GB

そしてあなたは欲しい:

new_name/image_name_1
new_name/image_name_2

そして、あなたは(で下塗りこれを使用することができOLD_REPONAMENEW_REPONAMEおよびTAG必要に応じて):

OLD_REPONAME='old_name'
NEW_REPONAME='new_name'
TAG='latest'

# extract image name, e.g. "old_name/image_name_1"
for image in $(docker images | awk '{ if( FNR>1 ) { print $1 } }' | grep $OLD_REPONAME)
do \
  OLD_NAME="${image}:${TAG}" && \
  NEW_NAME="${NEW_REPONAME}${image:${#OLD_REPONAME}:${#image}}:${TAG}" && \
  docker image tag $OLD_NAME $NEW_NAME && \
  docker rmi $image:${TAG}  # omit this line if you want to keep the old image
done


0

画像の名前を変更するには、画像に新しいタグを付け、「rmi」コマンドを使用して古いタグを削除します。

$ docker tag $ docker rmi

「rmi」は「画像を削除する」という意味なので、この2番目のステップは怖いです。ただし、他のタグがある場合、Dockerは実際に画像を削除しません。つまり、docker rmiをすぐに実行すると、実際に画像が削除されます(画像に他のタグが割り当てられていない場合)。


-7

docker run -it --name NEW_NAME Existing_name

既存のイメージ名を変更します。


6
新しい名前のコンテナが作成されます。画像名には何も起こりません。
jwodder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.