zoukankan      html  css  js  c++  java
  • 如何在一个Docker中同时运行多个程序进程?

    那么基本思路是在Dockerfile 的CMD 或者 ENTRYPOINT 运行一个”东西”,然后再让这个”东西”运行多个其他进程 简单说来是用Bash Shell脚本或者三方进程守护 (Monit,Skaware S6,Supervisor),其他没讲到的三方进程守护工具同理

    Bash Shell脚本

    入口文件运行一个Bash Shell 脚本, 然后在这个脚本内去拉起多个进程 注意最后要增加一个死循环不要让这个脚本退出,否则拉起的进程也退出了 run.sh

    #!/bin/bash
     
    # start 1
    start1  > /var/log/start1.log 2>&1 &
    # start 2
    start2 > /var/log/start2.log 2>&1 &
     
    # just keep this script running
    while [[ true ]]; do
        sleep 1
    done

    在Dockerfile的入口中运行run.sh

    ENTRYPOINT  ["run.sh"]

    用Bash Shell 的方式,任意发行版的linux都支持,缺点是不能拉起crash的进程,也就是只能拉起运行不能”守护” 如果不关心进程crash问题那么可以用这种方式

    启动脚本范例:

    #!/bin/bash
    
    # short for Host Home
    HH="/home/work/s2"
    
    # short for Container Home
    CH="/home/work/app/s2"
    
    #==============env start===============#
    
    DOCKER_ENV=""
    
    # 时区
    DOCKER_ENV=" -e TZ=Asia/Shanghai $DOCKER_ENV "
    
    # 中文支持
    DOCKER_ENV=" -e LC_ALL=C.UTF-8 $DOCKER_ENV "
    
    # gpu
    DOCKER_ENV=" -e CUDA_VISIBLE_DEVICES=${cuda.visible.devices} $DOCKER_ENV "
    
    # CAFFE_PREDICT_DEVICEID
    DOCKER_ENV=" -e CAFFE_PREDICT_DEVICEID=0 $DOCKER_ENV "
    #==============env end=================#
    
    
    #==============volumes start===============#
    
    DOCKER_VOLUMES=""
    
    # 配置文件挂载
    DOCKER_VOLUMES=" -v $HH/data/data:$CH/data/ $DOCKER_VOLUMES "
    # 日志文件挂载
    DOCKER_VOLUMES=" -v $HH/logs:$CH/log $DOCKER_VOLUMES "
    
    #==============volumes end=================#
    
    docker run --restart=always --runtime=nvidia -ti -d --security-opt seccomp:unconfined --cap-add SYS_PTRACE -p $${serverId}:8120 --name content-ocr-s2-${serverId} $DOCKER_ENV $DOCKER_VOLUMES $DOCKER_IMAGE
    联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
  • 相关阅读:
    第27篇-虚拟机字节码指令之操作数栈管理指令
    第26篇-虚拟机对象操作指令之putstatic
    第25篇-虚拟机对象操作指令之getfield
    第24篇-虚拟机对象操作指令之getstatic
    第23篇-虚拟机字节码指令之类型转换
    第22篇-虚拟机字节码之运算指令
    第20篇-加载与存储指令之ldc与_fast_aldc指令(2)
    第19篇-加载与存储指令(1)
    第18章-x86指令集之常用指令
    第17章-x86-64寄存器
  • 原文地址:https://www.cnblogs.com/zl1991/p/14680181.html
Copyright © 2011-2022 走看看