programing

도커 - 컨테이너에서 자동 검색을 비활성화하려면 어떻게 해야 합니까?

goodsources 2023. 8. 4. 23:04
반응형

도커 - 컨테이너에서 자동 검색을 비활성화하려면 어떻게 해야 합니까?

를 사용하여 자동 다시 시작을 활성화할 수 있습니다.--restart=always하지만 용기를 멈춘 후에 그 속성을 어떻게 끄죠?

저는 보통 웹 서버를 실행하고 일반적으로 포트 80을 매핑합니다.

docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash

그러나 이미지의 새 버전을 실행하고 싶지만 이전 컨테이너를 그대로 유지하고 싶을 때가 있습니다.문제는 여러 개의 컨테이너가 있는 경우--restart=always모두 호스트의 포트 80을 놓고 경합하기 때문에 이 중 하나(슬롯?)만 시작됩니다.

사용할 수 있습니다.--restart=unless-stopped@Shibash가 언급한 것처럼 옵션 또는 재시작 정책을 업데이트합니다(도커 1.11 이상이 필요함).

도커 재시작 정책에 대한 설명서를 참조하십시오.

docker update --restart=no my-container

기존 컨테이너에 대한 재시작 정책을 업데이트합니다.my-container)

아래를 사용하여 모든 자동 재시작(데몬) 컨테이너를 비활성화합니다.

docker update --restart=no $(docker ps -a -q)

다음을 사용하여 단일 컨테이너를 다시 시작하지 않도록 설정합니다.

docker update --restart=no the-container-you-want-to-disable-restart

근거:

도커는 컨테이너가 종료될 때 자동으로 시작할지 또는 도커가 재시작될 때 시작할지를 제어하는 재시작 정책을 제공합니다.이 기능은 Docker가 키 서비스를 실행할 때 종종 매우 유용합니다.

메모들

도커를 사용하는 경우 이 정보를 확인하는 것이 유용할 수 있습니다.

restart no는 기본 재시작 정책이며 어떠한 경우에도 컨테이너를 재시작하지 않습니다.항상을 지정하면 컨테이너가 항상 다시 시작됩니다.종료 코드가 오류 발생 시 오류를 나타내는 경우 오류 발생 시 정책이 컨테이너를 재시작합니다.

restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

restart: always

컨테이너를 시작할 수 있습니다.--restart=unless-stopped.

컨테이너를 다시 시작하는 군집이 있는 경우 재시작 옵션에 관계없이 중지하거나 설정한 모든 컨테이너가 다시 시작됩니다.그것은 기능이지, 버그가 아닙니다.

잊어버린 서비스를 실행하고 있지 않은지 확인합니다.

docker service ls

그러면 서비스를 중지할 수 있습니다.

docker service rm <service id discovered with previous command>

이 질문에 대한 답변이 아니라 도커가 시스템 시작 컨테이너를 자동으로 시작하지 않도록 방지하는 방법에 대한 답변입니다. 이 질문은 중복된 것으로 표시되었습니다.

컨테이너가 다음으로 시작되는 경우restart=on-failure컨테이너를 중지할 때 0이 아닌 종료 코드로 종료되는 잘못된 명령이 있습니다.docker stop그것은 이상한 행동을 보여줍니다: 컨테이너를 멈춘 후에.docker stop컨테이너가 중지되었지만 도커 데몬(또는 시스템)을 다시 시작하면 자동으로 다시 시작됩니다.이 문제를 해결하려면 컨테이너 명령을 수정하거나 다음을 사용합니다.no또는unless-stopped다시 시작 정책으로 지정합니다.

모든 도커 컨테이너의 재시작 정책을 변경하려면...

부팅 시 시작할 도커 컨테이너 식별

이 셸 스크립트는 "아니오" 이외의 재시작 정책을 가진 모든 도커 컨테이너를 식별합니다.

루트 사용자로

CONTAINERS=$(for f in  /var/lib/docker/containers/*/hostconfig.json ; 
do 
container=`echo $f | rev | cut -d '/' -f 2| rev`
jq \
 --arg container "$container" \
 --arg file "$f" '{"RestartPolicy":.RestartPolicy.Name, 'file':$file, 'container':$container} | select(.RestartPolicy != "no")' "$f" | \
  jq .container -r | tr '\n' ' '
done)

아니면 NON-root...

CONTAINERS=$(for f in  $(sudo sh -c "ls /var/lib/docker/containers/*/hostconfig.json"); 
do 
container=`echo $f | rev | cut -d '/' -f 2| rev`
sudo jq \
  --arg container "$container" \
  --arg file "$f" '{"RestartPolicy":.RestartPolicy.Name, 'file':$file, 'container':$container} | select(.RestartPolicy != "no")' "$f" | \
  jq .container -r | tr '\n' ' '
done)

(선택 사항) 선택한 컨테이너 목록 보기

echo $CONTAINERS

모든 용기를 한 번에 "아니오"로 설정합니다.

docker update --restart=no $CONTAINERS

도커 업데이트 --docker=yes/no <container-name/containerId>

현재 실행 중인 컨테이너만 업데이트:

docker update --restart=no $(docker ps -q)

언급URL : https://stackoverflow.com/questions/37599128/docker-how-do-you-disable-auto-restart-on-a-container

반응형