Programing

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

lottogame 2020. 3. 13. 08:14
반응형

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

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


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

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

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

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

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


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

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

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

참고 URL : https://stackoverflow.com/questions/31697828/docker-run-name-is-already-in-use-by-container

반응형