도커 - 컨테이너에서 자동 검색을 비활성화하려면 어떻게 해야 합니까?
를 사용하여 자동 다시 시작을 활성화할 수 있습니다.--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
'programing' 카테고리의 다른 글
리눅스에서 ptrace는 어떻게 작동합니까? (0) | 2023.08.09 |
---|---|
div 높이를 배경 크기로 자동 조정하려면 어떻게 해야 합니까? (0) | 2023.08.09 |
forkJoin이 더 이상 사용되지 않습니다. resultSelector가 더 이상 사용되지 않습니다. 대신 매핑할 파이프입니다. (0) | 2023.08.04 |
org.jetbrain을 실행하는 동안 오류가 발생했습니다.코틀린 그라들내부의.캅트 실행 (0) | 2023.08.04 |
PHP 배열에서 비어 있지 않은 항목을 카운트하는 방법은 무엇입니까? (0) | 2023.08.04 |