데몬의 도커 오류 응답 :“컨테이너가 이미 컨테이너에서 사용 중입니다”


135

PC에서 Docker를 사용하여 여기에서 찾은 다음 지침으로 Quantum GIS를 실행했습니다. docker-qgis-desktop-QGIS 데스크탑을 실행하는 간단한 도커 컨테이너

이 오류 메시지가 나타나기 시작한 지난 주까지 모든 것이 제대로 실행되었습니다.

Error response from daemon: Conflict. 
The name "qgis-desktop-2-4" is already in use by container 235566ae17b8. 
You have to delete (or rename) that container to be able to reuse that name.

이 사이트에서 실마리를 찾는데도 이것이 무엇을 의미하는지 잘 모르겠습니다. 이 일이 일어나기 전에 아무것도 변경하지 않았 으며이 명령으로 컨테이너를 성공적으로 시작했습니다.

sudo docker run --rm --name="qgis-desktop-2-4"     -i -t     -v ${HOME}:/home/${USER}     -v /tmp/.X11-unix:/tmp/.X11-unix     -e DISPLAY=unix$DISPLAY     kartoza/qgis-desktop:latest

이 문제를 어떻게 해결할 수 있습니까?

답변:


217

qgis-desktop-2-4시스템에 이미 이름 이 있는 컨테이너가있는 것 같습니다 . 아래 명령의 출력을 확인하여 실제로 존재하는지 확인할 수 있습니다.

$ docker ps -a

위 명령 출력의 마지막 열은 이름입니다.

컨테이너가 존재하면 다음을 사용하여 제거하십시오.

$ docker rm qgis-desktop-2-4

아니면 강제로

$ docker rm -f qgis-desktop-2-4

그런 다음 새 컨테이너를 만들어보십시오.


의견을 주셔서 감사합니다 @Dharmit 감사합니다. 나는 그것을 시도했지만 이제 다음과 같은 오류 메시지가 나타납니다groupadd: GID '0' already exists useradd: user 'root' already exists No protocol specified Warning: qgis.bin: cannot connect to X server unix:0.0
marty_c

이미지가 사용자 루트와 실제로 이미 존재하는 루트 그룹을 만들려고하는 것처럼 보입니다. Docker는 root : root를 기본 사용자 및 그룹으로 사용합니다. 그러나 첫 번째 문제는 첫 번째 컨테이너를 제거하면 해결됩니다.
luxas

흠, 이상해서 왜 3-4 개월로 시작하는 것이 좋을까요? 이 문제를 해결하기 위해 무엇을 할 수 있습니까?!
marty_c

1
오래된 컨테이너를 죽이고 동일한 이름으로 다시 호출하는 대신 기존 컨테이너를 어떻게 다시 시작할 수 있습니까?
Dhanesh Mane

13
@DhaneshMane docker restart또는 docker stop& docker start가 도와드립니다.
Dharmit

34

명령 대신 : docker run

다음을 사용해야합니다.

docker start **CONTAINER ID**

컨테이너가 이미 존재하기 때문에

더 많은 정보


1
'docker start'는 호스트 네트워킹을 활성화하고, 명령 줄에서 볼륨을 마운트하고, 필자의 경우 필요한 다른 옵션을 제공하지 않습니다. 그래서 개인적으로 나는 삭제하고 정리해야했습니다.
HH-

1
docker start <myContainerName>을 사용하면 @horsehair가 노출 된 모든 포트와 볼륨 마운트를 다시 설정합니다. 따라서 컨테이너를 처음 실행 한 방법에 따라 이러한 설정은 docker start로 해결해야합니다.
djchapm

네, 두 가지 방식으로 작동하고 싶을 때 이런 종류의 짜증이납니다 .... 팀에 합류 한 개발자와 이전에 한 번 실행 한 개발자에게 시작 / 실행. 그것은 :( 매우 나무 등이 아니에요 아 글쎄, 난 경우 일부를해야 할 것 같아요 bash는 스크립트 로직.
딘 힐러

9

이 오류가 상당히 많으므로 이제는 사용하지 않는 모든 컨테이너를 한 번에 일괄 제거합니다.

docker container prune 

추가 -f프롬프트없이 제거를 강제로.

사용하지 않은 모든 컨테이너를 나열하려면 (제거하지 않고) :

docker container ls -a --filter status=exited --filter status=created 

다른 객체 (네트워크, 볼륨 등)를 제거하는 방법에 대한 자세한 예는 여기를 참조 하십시오 .


8

나처럼 구글에서 여기에 착륙하고 하나의 공유 서비스로 여러 도커 작성 파일을 사용하여 컨테이너를 만들고 싶은 사람들 :

때로는 데이터베이스 도커 컨테이너와 같은 다른 프로젝트를 공유하는 경우가 있습니다. 첫 번째 실행 만 DB-Docker를 시작하고 두 번째 실행은 DB가 이미 실행 중임을 감지하고 건너 뜁니다. 이러한 동작을 달성하려면 Docker가 동일한 네트워크 및 동일한 프로젝트 에 있어야합니다 . 또한 고정 표시기 컨테이너 이름은 동일해야합니다.

첫 번째 : docker-compose에서 동일한 네트워크 및 컨테이너 이름을 설정하십시오 .

프로젝트 1의 docker-compose :

version: '3'

services:
    service1:
        depends_on:
            - postgres
        # ...
        networks:
            - dockernet

    postgres:
        container_name: project_postgres
        image: postgres:10-alpine
        restart: always
        # ...
        networks:
            - dockernet

networks:
    dockernet:

프로젝트 2의 docker-compose :

version: '3'

services:
    service2:
        depends_on:
            - postgres
        # ...
        networks:
            - dockernet

    postgres:
        container_name: project_postgres
        image: postgres:10-alpine
        restart: always
        # ...
        networks:
            - dockernet

networks:
    dockernet:

2 차 : -p param을 사용하여 동일한 프로젝트를 설정 하거나 두 파일을 같은 디렉토리에 두십시오.

docker-compose -p {projectname} up

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