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
. 개발자에게 의미 있고 직관적 인 명령을 작성하도록 요청하는 데 많은 도움이됩니다.
답변
이 문제를 해결하는 두 가지 옵션이 있습니다 …
-
명령을 사용하여 해당 이름을 사용하여 이전 컨테이너를 제거하십시오.
docker rm $(docker ps -aq --filter name=myContainerName)
또는
- 현재 컨테이너의 이름을 다른 이름으로 바꾸십시오. 즉,이 부분
--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