docker run-> '이름은 컨테이너에서 이미 사용 중입니다'


387

docker아래 명령으로 레지스트리를 실행하면 항상 오류가 발생합니다.

dev:tmp me$ docker run \
     -d --name registry-v1 \
     -e SETTINGS_FLAVOR=local \
     -e STORAGE_PATH=/registry \
     -e SEARCH_BACKEND=sqlalchemy \
     -e LOGLEVEL=DEBUG \
     -p 5000:5000 \
     registry:0.9.1
Error response from daemon: Conflict. The name "registry-v1" is already in use by container f9e5798a82e0. You have to delete (or rename) that container to be able to reuse that name.

이 오류를 방지하는 방법은 무엇입니까?

답변:


427

나도 이것으로 혼란스러워했다. 여기에는 두 가지 명령이 있습니다.

docker run 컨테이너 에서 명령 실행

docker start 하나 이상의 중지 된 컨테이너를 시작합니다


8
이것이 Docker 컨테이너를 다시 실행하기 위해 찾고있는 대답입니다. 감사!
isapir

105
따라서이 경우 docker ps -a모든 컨테이너를 보는 데 사용 하는 것이 중요합니다 .
Sławosz

9
yes docker start -a container-name는로 작성된 컨테이너를 시작하는 데 사용할 수있는 명령입니다 docker run. 노트 -a에 대한 속기 플래그 --attach. 이렇게하면 컨테이너가 docker run기본적으로 전경에서 컨테이너를 실행하는 것처럼 컨테이너가 전경에서 시작됩니다 .
Krzysztof Wołowski 2019 년

1
@Suncatcher 예.
0x7d7b

1
@ eMPee584 아니오, docker create 컨테이너를 작성 하지만 실행하지 않기 때문입니다.
0x7d7b

182

즉, 과거에 이미 매개 변수를 사용하여 컨테이너를 시작했음을 의미합니다 docker run --name registry-v1 ....

로 동일한 이름의 컨테이너를 다시 만들려면 먼저 삭제해야합니다 docker rm registry-v1. 해당 컨테이너가 실행 중이면을 사용하여 컨테이너를 삭제하기 전에 먼저 중지해야합니다 docker stop registry-v1. 또는 단순히 새 컨테이너의 다른 이름을 선택하십시오.

기존 컨테이너 및 해당 이름의 목록을 얻으려면 간단히 호출하십시오 docker ps -a.


4
그러나 왜 중단 된 것들입니까? 또는 그들이 멈 추면 여전히 거기에 있으면 좋을까요?
mskw

2
따라서 나중에 다시 만들지 않고도 실행할 수 있습니다
Scott Stensland

2
따라서 기본적으로 "이미지를 한 번만 실행 (컨테이너를 생성 한 후 명령을 실행) 한 다음 원하는만큼 컨테이너를 시작"할 수 있습니다. 그러나 왜 우리는 한 번만 무언가를 실행해야합니까? 컨테이너에 대한 "무언가"의 가능한 변경 사항을 유지하지 않으면 (커밋하지 않으면 docker 컨테이너 상태 변경 사항이 손실됩니다.)
Maksim Gumerov

14
컨테이너 이름을 알고 있다면이 바로 가기를 사용하여 컨테이너를 제거 할 수 있습니다docker rm $(docker ps -aq --filter name=myContainerName)
Jujhar Singh

2
@JujharSingh 왜뿐만 아니라 docker rm myContainerName?
Rodrigo

152

여기서 내가 한 일은 잘 작동합니다.

1 단계 : (도커 컨테이너 이름을 나열합니다)

docker ps -a

2 단계:

docker rm name_of_the_docker_container

4
이것은 나에게 도움이되었다. "docker ps"는 직관적으로 아무것도 반환하지 않는 플래그를 필요로한다.
MichaelChan

docker ps는 실행중인 컨테이너 만 반환하고 중지 된 컨테이너를 나열하기 위해 -a가 필요합니다.
Surendra Pratap

57

다른 사람들이 말하는 것을 설명하는 것 (이해하는 데 약간의 시간이 걸렸습니다)은 단순히이 오류가 표시되면 컨테이너가 이미 있고 실행해야한다는 것을 의미합니다. 직관적 docker run으로 실행해야하지만 그렇지 않습니다. 이 명령 docker run은 컨테이너를 처음 시작 하는 데만 사용됩니다 . 기존 컨테이너를 실행하려면 필요한 것입니다 docker start $container-name. 개발자에게 의미 있고 직관적 인 명령을 작성하도록 요청하는 데 많은 도움이됩니다.


32

이 문제를 해결하는 두 가지 옵션이 있습니다 ...

  1. 명령을 사용하여 해당 이름을 사용하여 이전 컨테이너를 제거하십시오. docker rm $(docker ps -aq --filter name=myContainerName)

    또는

  2. 현재 컨테이너의 이름을 다른 이름으로 바꾸십시오. 즉,이 부분 --name registry-v1을 다음과 같이 변경하십시오 --name myAnotherContainerName

컨테이너 이름 (즉, registry-v1)이 과거에 다른 컨테이너에 의해 사용 되었기 때문에이 오류가 발생합니다. 컨테이너 가 종료되었을 수도 있습니다 (현재 사용 중이 아님).


30

새로운 이미지를 구축 할 때마다 매번 같은 이름으로 새 컨테이너를 실행하려고합니다. 가장 쉬운 방법은 --rm 옵션으로 컨테이너를 시작하는 것입니다.

--rm        Automatically remove the container when it exits

예 :

docker run --name my-micro-service --rm <image>

슬프게도 문서 의 예제에서 거의 무작위로 사용되었습니다.


이미지 또는 컨테이너?
Pim Heijden 2016 년

1
컨테이너는 빌드 된 이미지에서 실행됩니다. 클래스 정의 (이미지) 및 클래스 인스턴스 (컨테이너)와 거의 비슷합니다.
Martin

먼저 컨테이너를 말한 다음 이미지를 말합니다. 확실하지 않습니다. 또한 해당 이미지의 컨테이너가 이미 실행 중이면를 사용한 후에도 계속 실행됩니다 --rm. 다시 시작되지 않습니다.
Pim Heijden 2018 년

4
참고 사항 : 플래그를 --rm사용하여 컨테이너를 만든 경우에만 작동합니다 --rm. 즉, --rm플래그 없이 컨테이너를 만든 경우 플래그를 이용 하려면 컨테이너를 수동으로 제거해야합니다 rm.
lepe

18

원인

같은 이름의 컨테이너가 여전히 존재합니다.

해결책

동일한 컨테이너 이름을 재사용하려면 다음을 수행하여 기존 컨테이너를 삭제하십시오.

docker rm <container name>

설명

컨테이너는 다른 컨테이너에 컨테이너 이름을 사용할 수없는 다음 상태에 존재할 수 있습니다.

  • created
  • restarting
  • running
  • paused
  • exited
  • dead

다음 running을 사용하여 컨테이너의 상태를 볼 수 있습니다 .

docker ps

모든 상태의 컨테이너를 표시하고 컨테이너 이름이 사용되는지 확인하려면 다음을 사용하십시오.

docker ps -a

컨테이너를 재사용하려면 --rm이 적절한 스위치가 아닙니다. 간단한 "도커 시작 {컨테이너 이름}"이면 충분합니다.
Ken Ingram

11

우분투 18에서 이것을 해결하는 방법은 다음과 같습니다.

  1. $ sudo docker ps -a
  2. 컨테이너 ID를 복사

각 컨테이너마다 다음을 수행하십시오.

  1. $ sudo docker stop container_ID
  2. $ sudo docker rm container_ID

10

command를 사용하여 제거한 sudo docker rm YOUR_CONTAINER_ID다음 sudo docker run ...; 로 새 컨테이너를 실행할 수 있습니다 . 또는 기존 컨테이너를sudo docker start YOUR_CONTAINER_ID


7

다음 단계를 수행하여 문제를 해결했으며 도움이되기를 바랍니다.

  1. docker ps -a시스템의 모든 컨테이너를 나열하려면 입력 하십시오.
  2. 도커 컨테이너를 초기화 한 NAMES 부분을 확인하십시오.
  3. 그런 다음 입력 docker rm --force name_of_container
  4. 원하는대로 도커 컨테이너를 설치하십시오.

NIFI 사용에 문제가 있었고 docker를 사용하여 제거했다가 다시 설치했습니다. 행운을 빕니다.


4

나는 단지 도커를 배우고 있는데 이것은 나에게도 도움이된다. 해당 이름의 컨테이너를 이미 중지했기 때문에 해당 이름의 새 컨테이너를 실행할 수 있다고 생각했습니다.

그렇지 않습니다. 컨테이너가 중지되었다고해서 다시 시작할 수 없다는 의미는 아니며 이름을 포함하여 만든 동일한 매개 변수를 모두 유지합니다.

내가 그것을 실행할 때 내가 놀고 docker ps -a있는 동안 내가 만든 모든 더미 테스트 컨테이너를 보았을 때입니다.

문제가 없습니다. 더 이상 그런 것을 원하지 않기 때문에 docker rm containername새 컨테이너가 이전 이름으로 실행될 수 있습니다.

아, 이제이 답변을 작성 했으므로 위의 Walt Howard의 답변에 대한 Slawosz의 의견에서 docker ps -a

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.