>  기사  >  운영 및 유지보수  >  Docker가 컨테이너가 자동으로 종료되는 것을 방지하는 방법

Docker가 컨테이너가 자동으로 종료되는 것을 방지하는 방법

WBOY
WBOY원래의
2022-03-08 10:40:215644검색

Docker에서는 컨테이너가 자동으로 종료되지 않도록 컨테이너에 상주 프런트엔드 프로세스를 추가할 수 있습니다. docker 컨테이너의 대화형 및 tty 매개변수를 사용하여 "sh/bash" 명령을 잠재적으로 활성화할 수 있습니다. 명령을 실행하면 컨테이너가 자동으로 종료되지 않습니다.

Docker가 컨테이너가 자동으로 종료되는 것을 방지하는 방법

이 튜토리얼의 운영 환경: linux7.3 시스템, docker-1.13.1 버전, Dell G3 컴퓨터.

Docker가 컨테이너가 자동으로 종료되는 것을 방지하는 방법

docker 컨테이너의 수명 주기는 컨테이너의 전처리와 관련되어 있으며 이는 몇 초 동안만 실행되고 종료되는 일부 컨테이너를 만날 수 있는 이유이기도 합니다. 자동: 컨테이너에 상주하는 프런트엔드 프로세스가 없기 때문에 프런트엔드 프로세스 실행이 끝나면 컨테이너가 자동으로 종료됩니다.

예를 들어 docker hello-world

# 一闪而过 输出一堆东西
docker run --name hello-world hello-world
# 可以看到 hello-world 容器已经退出了
docker ps -a

컨테이너가 자동으로 종료되는 것을 방지하려면 어떻게 해야 하나요? alpine/centos/ubuntu와 같은 순수 컨테이너에 로그인하려면 이를 기반으로 일부 서비스 구성 요소를 설치한 다음 자체 이미지에 커밋합니다.

인터넷에는 while(true) 무한 루프(물론 잠시 동안 대기)를 실행하거나 컨테이너를 만들 때 tail -f /dev/null을 사용하는 방법이 많이 있습니다. 어쨌든 영구 프런트를 여는 것입니다. 프로세스를 목적으로 설정합니다. 실제로 docker 컨테이너의 대화형 및 tty 매개변수를 더 우아하게 사용하여 sh/bash(*nix 시스템이 있어야 함) 명령을 사전 명령으로 열 수 있으므로 컨테이너가 자동으로 종료되지 않습니다.

예를 들어, 알파인 이미지를 기본 이미지로 사용하여 알파인 시스템 소형 컨테이너를 생성하면 영구적으로 실행되어 대화식으로 로그인하고 특정 명령을 실행할 수 있습니다.

# 使用 alpine 系统镜像创建容器
# -i interactive=true 开启 stdin
# -t tty=true 分配会话终端
# -d 守护模式 不加也可以 不加就直接进入容器中了 需要 ctrl+p+q 切出
# 不能 exit 哟, exit 相当于结束 sh 会话了 容器会退出的
docker run -it -d --name alpine alpine sh
# alpine 肯定在运行
docker ps
# 登入容器
docker exec -it alpine sh
# apline 使用的 apk 作为包管理
# 安装个小火车
# 后续可以使用 docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl 生成新的镜像
apk add sl
# 退出容器 注:-d 启动的才可以,如果没有 -d 启动直接进入的 sh终端 则不能退出,否则容器也会退出
exit

컨테이너 변경 사항을 제출하여 새 이미지 생성

docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl
docker images
# 有账号的话发布到 docker hub 上去
docker push big_cat/alpine_sl
# 后续停止/启动容器时就不需要在指定 -it 参数了
docker stop alpine
docker start alpine

컨테이너 변경 사항을 제출하여 새 이미지 생성

docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl
docker images
# 有账号的话发布到 docker hub 上去
docker push big_cat/alpine_sl

위 명령은 실제로 sh/bash 세션 터미널을 사전 프로세스로 사용하므로 컨테이너가 자동으로 종료되지 않습니다. .

컨테이너를 생성할 때 이와 같이 작성하는 것이 조잡하다고 생각한다면 상관없습니다. docker-compose에 푸시하면 됩니다.

docker-compose.yml
version: '3'
 
services:
     big_cat_alpine:
     container_name: big_cat_alpine
     image: alpine
     stdin_open: true # -i interactive
     tty: true # -t tty
     privileged: true
     entrypoint: ["sh"] # 执行 sh

컨테이너 생성 및 로그인 컨테이너

docker-compose up -d big_cat_alpine ./
docker ps
docker exec -it big_cat_alpine sh

docker-compose를 통해 두 매개변수를 전달하세요. , 오케스트레이션 후 서비스 컨테이너를 시작합니다.

추천 학습: "docker 비디오 튜토리얼"

위 내용은 Docker가 컨테이너가 자동으로 종료되는 것을 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.