Docker에서는 컨테이너가 자동으로 종료되지 않도록 컨테이너에 상주 프런트엔드 프로세스를 추가할 수 있습니다. docker 컨테이너의 대화형 및 tty 매개변수를 사용하여 "sh/bash" 명령을 잠재적으로 활성화할 수 있습니다. 명령을 실행하면 컨테이너가 자동으로 종료되지 않습니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, docker-1.13.1 버전, Dell G3 컴퓨터.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!