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
. 개발자에게 의미 있고 직관적 인 명령을 작성하도록 요청하는 데 많은 도움이됩니다.
이 문제를 해결하는 두 가지 옵션이 있습니다 ...
명령을 사용하여 해당 이름을 사용하여 이전 컨테이너를 제거하십시오.
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
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
다음 단계를 수행하여 문제를 해결했으며 도움이되기를 바랍니다.
docker ps -a
시스템의 모든 컨테이너를 나열하려면 입력 하십시오.- 도커 컨테이너를 초기화 한 NAMES 부분을 확인하십시오.
- 그런 다음
docker rm --force name_of_container
- 원하는대로 도커 컨테이너를 설치하십시오.
NIFI 사용에 문제가 있었고 docker를 사용하여 제거했다가 다시 설치했습니다. 행운을 빕니다.
참고 URL : https://stackoverflow.com/questions/31697828/docker-run-name-is-already-in-use-by-container
'Programing' 카테고리의 다른 글
여러 CSV 파일을 팬더로 가져오고 하나의 DataFrame으로 연결 (0) | 2020.03.13 |
---|---|
파이썬에서 파일이 디렉토리 또는 일반 파일인지 확인하는 방법은 무엇입니까? (0) | 2020.03.13 |
배열이 비어 있거나 존재하는지 확인 (0) | 2020.03.13 |
IIS Express 구성 / 메타베이스 파일은 어디에 있습니까? (0) | 2020.03.13 |
Postgres for Insert 문에서 UUID를 생성 하시겠습니까? (0) | 2020.03.13 |