Docker는 저장소 이름을 변경하거나 이미지 이름을 바꾸는 방법은 무엇입니까?


568

이미지의 저장소 이름을 변경하려고합니다.

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의 차이점은 무엇입니까?
Charlie Parker

@CharlieParker TAG는 일반적으로 저장소 버전에 사용됩니다 (예 : 태그가 10.1 인 저장소 mariadb
Ian Hunter

docker tag --help cmd 아래의 구문을 따르십시오.docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
anandchaugule

dockerhub에서 전체 저장소 이름을 변경하고 싶습니다. 너무 나빠서 불가능합니다. (
danger89

답변:


1034
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가됩니다.
Scott

호스트 OS 및 Docker 버전은 무엇입니까? Docker 설치에서 태그 명령을 수정하고 있다고 의심됩니다.
Andy

25
또한 :latest이미지 이름에 대한 태그가 하나만 있으면 생략하는 것이 좋습니다. 그러나 이미지 이름은 REPOSITORY출력에서 이미지가 아니라 이미지 docker images라고 불리우는 tag반면 , 명령에서 이름을 바꾸어야하는 반면 TAG, 해당 출력에서 ​​별도의 열이됩니다. 나는 그들이 이것과 다른 관련 것들을 정리하기를 바랍니다 ...
matanster

docs.docker.com/engine/reference/commandline/image_tagdocker image tag from_server:version to_server:version
Traveler

20

속기로서 다음을 실행할 수 있습니다.

docker tag d58 myname/server:latest

여기서 d58IMAGE ID의 처음 3자를 나타냅니다.이 경우 필요한 것입니다.

마지막으로 다음과 같이 이전 이미지를 제거 할 수 있습니다.

docker rmi server

1
필자의 경우 전체 ID를 사용하면 끝에 : latest를 추가하고 찾을 수 없다는 오류가 발생합니다. 처음 3 글자가 훨씬 잘 작동합니다. (즉 docker tag d583c3ac45fd myname/server:latest, docker 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
물론, 이것은 효과가 있지만, 당신은이 사람에게 왜 그런지 설명하지 않았습니다. 그들은 사용하는 방법을 알고 않았다 가정 ... 도커 태그가 무엇인지에 대해 혼동하는 것 고정 표시기 -h
아담 카플란

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_REPONAME, NEW_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


-7

docker run -it --name NEW_NAME 기존 _ 이름

기존 이미지 이름을 변경합니다.


5
새로운 이름 으로 컨테이너 를 만듭니다 . 이미지 이름 에는 아무런 변화가 없습니다 .
jwodder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.