[docker] docker run-> ‘이름은 컨테이너에서 이미 사용 중입니다’

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.

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



답변

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

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

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


답변

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

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

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


답변

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

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

docker ps -a

2 단계:

docker rm name_of_the_docker_container


답변

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


답변

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

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

    또는

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

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


답변

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

--rm        Automatically remove the container when it exits

예 :

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

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


답변

원인

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

해결책

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

docker rm <container name>

설명

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

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

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

docker ps

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

docker ps -a