精华内容
下载资源
问答
  • Class文件如下:import java.io.*;import java.sql.*;import java.util.Date ;import oracle.sql.*;import javax.servlet.http.*...import org.apache.struts.action.*;import org.apache.struts.upload.*;public class

    Class文件如下:

    import java.io.*;
    import java.sql.*;
    import java.util.Date ;
    import oracle.sql.*;
    import javax.servlet.http.*;
    import org.apache.struts.action.*;
    import org.apache.struts.upload.*;

    public class UploadAction extends Action
    {
      public ActionForward execute(ActionMapping mapping,
                                   ActionForm form,
                                   HttpServletRequest request,
                                   HttpServletResponse response)
          throws Exception {
        if (form instanceof UploadForm) {
          Date date = new Date();
          System.out.println("-------------File Upload Begins-------------------") ;
          UploadForm theForm = (UploadForm) form;
          file://通过struts的FormFile类来获得上传的文件,前台jsp页面对应的代码
          file://<html:file property="theFile" />
          FormFile file = theForm.getTheFile();
         
          Connection conn = null;
          PreparedStatement ps = null ;

          String union_Id = "" ;
          String union_Version = "" ;
          union_Id = theForm.getUnion_Id() ;
          union_Version = theForm.getUnion_Version() ;
          file://actionpart是数据库表中的字段名,由于表中有多个blob字段,所以用变量来表示其名称
          String actionpart = theForm.getActionpart() ;
          System.out.println("actionpart is:"+actionpart) ;
          file://取得数据库连接,dbPool的源代码附在后面
          dbPool dbp = new dbPool();
          conn = dbp.getConnection() ;

          ResultSet BlobDetails = null;
          Statement stmt = null;

          try {
            InputStream stream = null;
            FileInputStream fstream = null;
            stream = file.getInputStream();
            System.out.println("------------uploadFileSize is : "+stream.available() +"------------") ;

            conn.setAutoCommit(false);
            stmt = conn.createStatement();
            file://先用empty_blob()来初始化该字段
            sql = " update regunion set " + actionpart + "  = empty_blob() where  union_id= " + union_Id +" and  union_Version = "+ union_Version;
            stmt.executeUpdate(sql) ;
            conn.commit() ;
            stmt.close() ;
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
            sql = "select " +actionpart + " from regunion where union_id= " + union_Id +" and  union_Version = "+ union_Version + " for  update ";
            BlobDetails = stmt.executeQuery(sql);

            if (BlobDetails.next()) {
              BLOB l_mapBlob = (BLOB)BlobDetails.getBlob(1);
              OutputStream l_blobOutputStream = ((BLOB) l_mapBlob).getBinaryOutputStream();

              byte[] l_buffer = new byte[10* 1024];

              int l_nread = 0;
              while ((l_nread=stream.read(l_buffer)) != -1) // Read from file
                {
                l_blobOutputStream.write(l_buffer,0,l_nread); // Write to Blob
                }

              stream.close();
              l_blobOutputStream.close ();
            }
            BlobDetails.close();
            conn.commit() ;
          }
          catch (FileNotFoundException fnfe) {
            fnfe.printStackTrace() ;
            return mapping.findForward("error");
          }
          catch (IOException ioe) {
            ioe.printStackTrace() ;
            return mapping.findForward("error");;
          }
          catch(SQLException ex){
            ex.printStackTrace() ;
            return mapping.findForward("error");;
          }finally{
            if(conn != null){
              try{
                stmt.close();
                conn.close() ;
              }catch(Exception sqle){
                sqle.printStackTrace() ;
              }
            }
          }


          request.setAttribute("union_Id",union_Id) ;
          request.setAttribute("union_Version",union_Version) ;
          System.out.println("-------------File Upload Ends-------------------") ;
          return mapping.findForward("success");
        }else{
          return null;
        }
      }
    }

    附:dbPool.java程序

    package com.prient.nbsc.unifylaw;
    import java.sql.*;
    import com.prient.nbsc.common.DBPOOL;
    public class dbPool {
      public Connection getConnection(){
        try {
          Connection conn = null;
          Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
          String bridge = "jdbc:oracle:thin:@10.6.89.2:1521:sjk";
          conn = DriverManager.getConnection(bridge,"user","user") ;
          return  conn;
        }
        catch (Exception e) {
          System.out.println(e);
          return null;
           }
      }
    }

     

    展开全文
  • \看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!\\\Open Container Initiative启动...\\Docker Registry协议v2是Docker工具集用于在注册表和用户之间推送和拉取镜像的协...
    \

    看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

    \
    \\

    Open Container Initiative启动了容器发行规范项目,用以标准化容器镜像注册表的API。它基于Docker Registry协议v2,使用对象为Docker工具集和公有云供应商。

    \\

    Docker Registry协议v2是Docker工具集用于在注册表和用户之间推送和拉取镜像的协议。由于协议的广泛使用性质,它被作为新标准的基础,所有的实现都可以遵循该协议。根据Docker工程师Michael Crosby的说法,截至目前为止,已经有超过400亿个镜像是通过该协议推送的。该协议的v2版本与之前版本有重大变化,包括移除镜像内部与Docker工具集本身的紧密耦合。

    \\

    OCI执行董事Chris Aniszczyk在新闻稿中表示:

    \\
    \

    随着容器和云原生技术的蓬勃发展,社区需要一个可靠的行业发行标准,以提高互操作性,并与中立机构一起制定规范。

    \
    \\

    除了标准Docker Hub注册表之外,各种云供应商已经通过托管注册表支持v2协议。例如,AWS Elastic Container Registry(ECR)通过额外的身份验证层来支持它,其中标准的“docker login”命令可以通过单独调用AWS API获取令牌后进行身份验证。Google Cloud Platform的容器注册表在标准注册表协议上具有类似的认证机制。其他实现包括Quay.ioGitLab容器注册表、华为DockyardJFrog Artifactory。目前尚不清楚在新规范下,是否会为不同的认证机制提供统一的包装层,该包装层将隐藏底层云提供商特定的机制。其他一些注册管理机构实现了一些在Docker注册表中不存在的端点,将其作为增值选项。

    \\

    OCI是Linux基金会的一个项目,在过去已经对容器生态系统的其他方面进行了标准化,如镜像运行时规范。这两个标准去年都推出了1.0版。从目前的公告来看,这一版本又是一个里程碑。运行时规范将Docker的runc项目作为参考实现。镜像格式规范也是如此,该规范基于Docker的镜像格式v2。标准化是根据OCI技术监督委员会的政策进行的,首先提出提案,随后进行讨论和投票。

    \\

    查看英文原文OCI Standardizes Container Registry API Based on Docker’s V2 Protocol

    展开全文
  • 目标是使用标准 OCI 协议和图像格式检索用于使用户更容易获取容器图像的源代码。 用法 $ > ./BuildSourceImage.sh -h BuildSourceImage.sh version 0.1 Usage: BuildSourceImage.sh [-D] [-b < path> ] [-c < path>...
  • OCI简介

    千次阅读 2019-06-27 17:14:38
    oci - 简介 OCI(Oracle Call Interface)是ORACLE公司开发的一个应用程序开发工具,是一个通过访问Oracle数据库的服务器,控制各类SQL语句的执行,进而创建应用程序的的应用程序接口(API)。它支持SQL所有的...

    文章整理自网络:

    oci - 简介


           OCI(Oracle Call Interface)是ORACLE公司开发的一个应用程序开发工具,是一个通过访问Oracle数据库的服务器,控制各类SQL语句的执行,进而创建应用程序的的应用程序接口(API)。它支持SQL所有的数据定义,数据操作,查询,事务管理等操作,支持C和C++的数据类型,调用,语法和语义。它提供了一组可对Oracle数据库进行存取的接口子例程(函数)。
           OCI程序实质上就是用高级语言写的程序,其特点是内部含有对OCI子函数库的调用,通过在第三代程序设计语言(如C语言)中进行调用可达到存取ORACLE数据库的目的。


    oci
     - 函数名称


    ORACLE调用接口(Oracle Call Interface简称OCI)


    oci
     - 函数功能


    提供了一组可对ORACLE数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取ORACLE数据库的目的。


    oci
     - 基本编程流程


    OCI基本编程流程如图所示:

     

           1,创建和初始化OCI环境。OCI环境即OCI函数的工作环境,在调用其他函数之前必须先调用OCIInitialize()和OCIEnvInit()函数创建和初始化OCI环境,其他OCI函数要在这个环境中才能执行。
           swordOCIEnvInit(OCIEnv**envhpp,ub4mode,size_txtramemsz,dvoid**usrmempp);
    参数:envhp:环境句柄的指针mode:初始化模式,OCI_DEFAULT,OCI_THREADED等xtramemsz:在应用程序中需要分配的内存的大小usrmempp:返回指向刚分配的用户内存的指针。

         2,申请句柄
           句柄是指向OCI库所分配的内存区域的指针,该内存区域中的数据由OCI库维护,应用程序可通过句柄访问其中的数据。
           一个句柄可以用来存放上下文或连接信息(如环境或服务上下文句柄).它是由链接库管理,可以简化编程。利用OCIAtrrtGet()和OCIAtrrSet()这些获取或设置属性的OCI接口可以访问到句柄中存放信息。

           需要申请的句柄一般有以下几类:
           服务器句柄OCIServer,句柄类型OCI_HTYPE_SERVER
           错误句柄OCIError,用于捕获OCI错误信息,句柄类型OCI_HTYPE_ERROR
           事务句柄OCISession,句柄类型OCI_HTYPE_SESSION
           上下文句柄OCISvcCtx,句柄类型OCI_HTYPE_SVCCTX
           SQL语句句柄OCIStmt,句柄类型OCI_HTYPE_STMT


           需要设置的句柄属性:
           服务器实例:
           句柄类型OCI_HTYPE_SVCCTX,属性类型OCI_ATTR_SERVER
           连接数据的用户名:
           句柄类型OCI_HTYPE_SESSION,属性类型OCI_ATTR_USERNAME
           用户密码:
           句柄类型OCI_HTYPE_SESSION,属性类型OCI_ATTR_PASSWORD
           事务:
           句柄类型OCI_HTYPE_SVCCTX,属性类型OCI_ATTR_SESSION
           OCIHandleAlloc()——分配句柄,返回刚初始化的句柄指针
           swordOCIHandleAlloc(CONSTdvoid*parenth,dvoid**hndlpp,ub4type,size_txtramem_sz,dvoid**usrmempp);
    参数:
    parenth:新申请句柄的父句柄,一般为OCI环境句柄
    hndlpp:申请的新句柄
    type:OCI句柄类型
    xtramem_sz:为句柄分配内存的大小
    usrmempp:申请到的内存块指针


           3,连接服务器,建立会话
           OCIServerAttach(m_srvhp,m_errhp,(text*)"",strlen(""),OCI_DEFAULT);建立与指定服务器的连接
    参数:
    text*:类型变量为空,表示连接默认数据库服务
    OCI_DEFAUL:表示应用程序的操作模式为阻塞模式,在这种方式下,只有当OCI调用完成后才将控制权返回给客户端应用程序。
           这里,只介绍单用户,单连接的情况:
           OCILogon(envhp,errhp,&svchp,(text*)"hr",nameLen,(text*)"hr",passwdLen,(text*)"oracledb",dbnameLen);
           使用了这种方法之后,servicecontext,server,andusersessionhandles都是只读的,不能通过OCIAttrSet()对其属性进行改写。
           使用OCILogon()后,在程序结束时,必须使用OCILogoff()来终止它。

           4,执行SQL语句并处理数据
           5,结束会话断开数据库连接
           使用OCISessionEnd()删除每一个用户会话。
           OCILogoff(m_svchp,m_errhp);


           6,断开与数据源的连接,释放句柄
           OCIServerDetach()断开与数据源的连接:
                OCIServerDetach(m_srvhp,m_errhp,OCI_DEFAULT);
           OCIHandleFree()释放所有已分配的句柄
                OCIHandleFree――释放句柄
           swordOCIHandleFree(dvoid*hndlp,ub4type);
    参数:
    *hndlp:要释放的句柄
    ub4type:句柄类型
    --------------------- 
    作者:长烟慢慢 
    来源:CSDN 
    原文:https://blog.csdn.net/cymm_liu/article/details/6856799 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • docker OCI runtime

    2018-12-29 19:14:00
    Open Container Initiative(OCI)目前有2个标准:runtime-spec以及image-spec。前者规定了如何运行解压过的filesystem bundle。OCI规定了如何下载OCI镜像并解压...OCI(当前)相当于规定了容器的images和runtime的协议...

      Open Container Initiative(OCI)目前有2个标准:runtime-spec以及image-spec。前者规定了如何运行解压过的filesystem bundle。OCI规定了如何下载OCI镜像并解压到OCI filesystem bundle,这样OCI runtime就可以运行OCI bundle了。OCI(当前)相当于规定了容器的images和runtime的协议,只要实现了OCI的容器就可以实现其兼容性和可移植性。implements中列出了部分OCI标准的实现。本文不讨论windows下的实现,具体参见Open Container Initiative Runtime Specification

    system bundle是个目录,用于给runtime提供启动容器必备的配置文件和文件系统。标准的容器bundle包含以下内容:

    config.json:该文件包含了容器运行的配置信息,该文件必须存在bundle的根目录,且名字必须为config.json
    容器的根目录,可以由config.json中的root.path指定

    下面使用runc来运行一个容器,runc是根据OCI标准生成的一个cli工具。前面两个命令用于提取filesystem,最后一个用于生成config.json,两者组织在一起就是一个filesystem bundle

    # mkdir rootfs
    # docker export $(docker create busybox) | tar -C rootfs -xvf -
    # runc spec

      使用runc来运行这个bundle,可以使用state查看该容器的状态

    # runc run busybox
    # runc state busybox
    {
      "ociVersion": "1.0.0",
      "id": "busybox",
      "pid": 41732,
      "status": "running",
      "bundle": "/home/test",
      "rootfs": "/home/test/rootfs",
      "created": "2018-12-25T14:41:58.82202891Z",
      "owner": ""

     

    OCI runtime包含runtimeruntime-linuxconfigconfig-linux

    • runtime规定了如下内容
      • state
        • ociVersion:创建容器时的OCI版本
        • id:容器唯一的ID
        • status:容器的runtime状态,可以为如下值
          • creating:容器正在被创建(lifecycle的第2步)
          • created:容器完成创建,但没有返回错误且没有执行用户程序(lifecycle的第2步之后)
          • running:容器正在执行用户程序且没有返回错误(lifecycle的第5步之后)
          • stoped:容器进程退出(lifecycle的第7步)
        • pid:host上看到的容器进程
        • bundle:host上容器bundle目录的绝对路径
        • annotation:容器相关的标注,可选

    由于runc实现了OCI runtime,使用runc state查看上述busybox可以得到state相关的信息

    {
       "ociVersion": "1.0.0",
        "id": "busybox",
        "pid": 41732,
        "status": "running",
        "bundle": "/home/test",
        "rootfs": "/home/test/rootfs",
        "created": "2018-12-25T14:41:58.82202891Z",
        "owner": ""
    }
      • lifecycle 描述了容器从创建到退出的事件触发点
        1. OCI runtime的create调用与bundle的路径和id相关
        2. OCI runtime的必须依据config.json中的设置来创建环境,如果无法创建config.json中指定的环境,则返回错误。此阶段主要创建config.json中的资源,并没有执行用户程序。该步骤之后任何多config.json的修改都不会影响容器
        3. runtime使用容器的唯一id来执行start容器命令
        4. runtine必须执行 prestart hooks,如果 prestart hooks执行失败,则返回错误,并停止容器,执行第9条操作
        5. runtime必须执行用户程序
        6. runtime必须执行poststart hooks,如果poststart hooks执行失败,则必须记录warning日志,而poststart hooks和lifecycle继续运行
        7. 容器进程退出,可能由错误退出,人为退出,程序崩溃或runtime 执行kill命令引起
        8. runtime使用容器的唯一id来执行delete容器操作
        9. 如果在容器创建阶段(第2步)没有完成某些步骤,则容器必须被销毁
        10. runtime必须执行poststop hooks,如果poststop hooks执行失败,则必须记录warning日志,而poststop hooks和lifecycle继续运行
      • operation runtime必须支持如下操作
        • query state:state <container-id>,参见上述state描述
        • create:create <container-id> <path-to-bundle>,runtime应该提供检测id唯一性的功能。该操作中会用到config.json除process之外的配置属性(因为process实在start阶段用到的)。实现中可能会与本规范不一致,如在create操作之前实现了pre-create
        • start:start <container-id>,执行config.json的process中定义的程序,如果process没有设定,则返回错误
        • kill:kill <container-id> <signal>,向一个非running状态的容器发送的信号会被忽略。此操作用于向容器进程发送信号
        • delete:delete <container-id>,尝试删除一个非stopped的容器会返回错误。容器删除后其id可能会被后续的容器使用
    # runc delete busybox
    cannot delete container busybox that is not stopped: running
    • configuration定义了进程运行,环境变量等配置。现有jsongo版本的配置,其中go中定义了与平台(linux,solaris,windows相关的tag),如下:
    // Linux is platform-specific configuration for Linux based containers.
    Linux *Linux `json:"linux,omitempty" platform:"linux"`
    // Solaris is platform-specific configuration for Solaris based containers.
    Solaris *Solaris `json:"solaris,omitempty" platform:"solaris"`
    // Windows is platform-specific configuration for Windows based containers.
    Windows *Windows `json:"windows,omitempty" platform:"windows"`
    // VM specifies configuration for virtual-machine-based containers.
    VM *VM `json:"vm,omitempty" platform:"vm"`
      • Specification version:必选,指定了bundle使用的OCI的版本
      • root:
        • path:容器的bundle路径,可以是相对路径和绝对路径,该值通常为rootfs
        • readonly:当设置为true时,容器的根文件为只读,默认false
      • mount:按照配置的顺序进行挂载
        • destination:容器中的挂载点,必须是绝对路径
        • source:挂载的设备名称,文件或目录名称(bind mount时),当option中有bind或rbind时改mount类型为bind mount
        • option:mount的选项,参见mount
      • process:定义了容器的进程信息
        • terminal:默认false,为true时,linux系统会为该进程分配一个pseudoterminal(pts),并使用标准输入输出流
        • consoleSize:指定terminal的长宽规格,width和height
        • cwd:执行命令的绝对路径
        • env:环境变量
        • args:命令参数,至少需要指定一个参数,首参数即被execvp执行的文件

    根据平台不同支持如下配置

    POSIX process 支持设置POSIX和Linux平台

      • rlimits:设置进程的资源,如cpu,内存,文件大小等,参见getrlimit。docker里面使用--ulimit来设置单个进程的资源
        • type:linux和Solaris
        • soft:内核分配给该进程的资源
        • hard;可配置的资源的最大值,即soft的最大值。unprivileged进程(没有CAP_SYS_RESOURCE capability)可以将soft设置为0-hard之间的值

    Linux process:

      • apparmorProfile:指定进程的apparmor文件
      • capabilities:指定进程的capabilities
      • noNewPrivileges:设置为true后可以防止进程获取额外的权限(如使得suid和文件capabilities失效),该标记位在内核4.10版本之后可以在/proc/$pid/status中查看NoNewPrivs的设置值。更多参见no_new_privs
      • oomScoreAdj :给进程设置oom_score_adj值,进程的oom涉及以下3个文件,oom_adj和oom_score_adj功能类似,oom_adj主要用于兼容老版本,oomScoreAdj的功能就是设置/proc/$PID/oom_score_adj中的值(范围-1000~1000),系统通过该值和oom_score来决定kill进程的优先级。oom_score为只读文件,oom通过对系统所有进程的oom_score进行排序,值越大,越可能在内存不足时被kill掉。(参见linux oom机制分析oom介绍
    /proc/$PID/oom_adj
    /proc/$PID/oom_score
    /proc/$PID/oom_score_adj

    可以通过如下命令查看系统所有进程的oom_score

    ps -eo pid,comm,pmem --sort -rss | awk '{"cat /proc/"$1"/oom_score" | getline oom; print $0"\t"oom}'
      • selinuxLabel :设置进程的SELinux 标签,即MAC值
      • user 用于控制运行进程的用户
        • uid:指定容器命名空间的user id
        • gid:指定容器命名空间的group id
        • additionalGids:指定容器命名空间中附加的group id
      • hostname:指定容器进程看到的hostname
      • Platform-specific configuration:包含在linux,Windows,solaris,vm等host平台上使用namespaces,cgroup等。下面以linux为例
        • Default Filesystems:如下路径需要正确挂载到容器中,以便容器进程的正确执行
    Path        Type
    /proc       proc
    /sys        sysfs
    /dev/pts    devpts
    /dev/shm    tmpfs
        • namespaces,为包含如下参数的数组
          • type:指定namespace类型,为ipc,mount,user,network,uts,pid,cgroup,如果没有指定namespace type,则继承父namespace的属性
          • path:namespace的文件,如果没有指定,则生成一个新的namespace
        • User namespace mappings,uidMappings和gidMappings指定了user和group从host到容器的映射关系,为结构图数组,包含containerid,hostid和size这3个属性
        • device:列出了必须在容器中存在的设备,为结构体数组,有如下属性
          • type:设备的类型
          • path:容器中的全路径
          • major, minor:设备的主设备号和次设备号,主设备号表示类型,次设备号表示分区,可以使用"ls -al /dev"查看主次设备号。设置可以参见device
          • fileMode:文件ADC访问权限
          • uid:容器中设备的uid
          • gid:容器中设备的gid
        • cgroup:用于控制容器的资源以及设备接入等。
          • Cgroups Path:cgroup的路径,该路径可以是绝对路径,也可以是相对路径。如果没有设置该值,cgroup会使用默认的cgroup路径

    可以使用resources字段来配置cgroup,注意:只有在需要更新cgroup的时候才配置该字段内容

        "cgroupsPath": "/myRuntime/myContainer",
        "resources": {
            "memory": {
            "limit": 100000,
            "reservation": 200000
            },
            "devices": [
                {
                    "allow": false,
                    "access": "rwm"
                }
            ]
       }

    Device whitelist:用于配置设备白名单

    • allow (boolean, REQUIRED) -允许
    • type (string, OPTIONAL) - 设备类似: a (all), c (char), or b (block). 默认为all
    • major, minor (int64, OPTIONAL) - 设备的主次号. 默认all
    • access (string, OPTIONAL) - 设备的cgroup权限.r (read), w (write), 和m (mknod).

    Memory:具体可以参见cgroup memory

    • limit (int64, OPTIONAL) - 设置内存使用limit
    • reservation (int64, OPTIONAL) - 设置内存的soft limit
    • swap (int64, OPTIONAL) - 设置memory+Swap使用limit
    • kernel (int64, OPTIONAL) -  设置内存的hard limit
    • kernelTCP (int64, OPTIONAL) - 设置内核TCP buffer的hard limit
    • swapness:设置swap的使用比例
    • disableOOMKiller:是否开启oomkiller

    CPU:具体可以参见cgroup CPU

    • shares (uint64, OPTIONAL) - cgroup中task使用的cpu的相对比例
    • quota (int64, OPTIONAL) - 一个period中使用的cpu时间
    • period (uint64, OPTIONAL) - 以毫秒为单位的cpu周期 (CFS scheduler only)
    • realtimeRuntime (int64, OPTIONAL) - 以毫秒为单位的 cgroup tasks连续使用cpu资源的最长周期
    • realtimePeriod (uint64, OPTIONAL) - 实时调度的 period
    • cpus (string, OPTIONAL) - CPU列表
    • mems (string, OPTIONAL) - memory nodes列表

    Block IO:

    Huge page limits:

    • pageSize :大页大小
    • limit:bytes为单位限制的大页的使用上限

    Network:

    • classID:cgroup网络报文的标签
    • priorities

    name:网卡名称
    priority:网卡优先级

    PIDs:

    limit:cgroup限制的pid的数目

    RDMA

    Sysctl:允许在容器运行过程中修改内核参数

    Seccomp:在linux内核中为应用提供了一种沙盒机制。更多参见seccomp

    seccomp

    defaultAction:seccomp的默认动作,允许值类型为syscalls[].action

    architectures:系统调用的平台,如下

    SCMP_ARCH_X86
    SCMP_ARCH_X86_64
    SCMP_ARCH_X32
    SCMP_ARCH_ARM
    SCMP_ARCH_AARCH64
    SCMP_ARCH_MIPS
    SCMP_ARCH_MIPS64
    SCMP_ARCH_MIPS64N32
    SCMP_ARCH_MIPSEL
    SCMP_ARCH_MIPSEL64
    SCMP_ARCH_MIPSEL64N32
    SCMP_ARCH_PPC
    SCMP_ARCH_PPC64
    SCMP_ARCH_PPC64LE
    SCMP_ARCH_S390
    SCMP_ARCH_S390X
    SCMP_ARCH_PARISC
    SCMP_ARCH_PARISC6

    syscalls:匹配seccomp的系统调用,该属性可选

    name:系统调用的名称,至少有一个

    action:seccomp的动作规则。libseccomp v2.3.2中如下:

    SCMP_ACT_KILL
    SCMP_ACT_TRAP
    SCMP_ACT_ERRNO
    SCMP_ACT_TRACE
    SCMP_ACT_ALLOW

    args:

    index (uint, REQUIRED) - 系统调用的index
    value (uint64, REQUIRED) - 系统调用参数的值
    valueTwo (uint64, OPTIONAL) - 系统调用参数的值
    op (string, REQUIRED) - 系统调用参数的动作。 libseccomp v2.3.2如下

    SCMP_CMP_NE
    SCMP_CMP_LT
    SCMP_CMP_LE
    SCMP_CMP_EQ
    SCMP_CMP_GE
    SCMP_CMP_GT
    SCMP_CMP_MASKED_EQ

    Rootfs Mount Propagation

    rootfsPropagation:设置rootfs的mount Propagation类型,slave,private或shared

        • Linux Runtime:该规范规定了容器文件描述符相关的内容。默认下runtime只会打开stdin, stdout和stderr这3个文件描述符

    Masked Paths

    maskedPaths:容器无法读取该设置的路径

        "maskedPaths": [
            "/proc/kcore"
        ]

    Readonly Paths

    readonlyPaths:容器只读该设置的路径

      • POSIX-platform Hooks:支持使用hooks来设置lifecycle中用户自定义动作
        • hooks
          • prestart:在用户程序运行前以及容器命名空间创建后执行,包含如下属性的数组:
            • path:类似execv的路径,为均对路径
            • args:类似execv的参数
            • env:环境变量
            • timeout:终端hooks的超时时间
          • poststart:在用户程序执行之后且在start步骤返回前执行,同 prestart的数组一样
          • poststop:在容器删除之后且在delete步骤返回前执行,同prestart的数组一样
      • Annotations:为key-value类型的任意字符串,如果没有annotation,该字段可以为空,也可以不存在
      • extensibility:遇到无法识别的字段需要返回错误

     

    runtime包含1config.mdconfig-linux.md, and runtime-linux.md.

     

    参考:

    https://cizixs.com/2017/11/05/oci-and-runc/

    https://github.com/opencontainers/runtime-spec/blob/master/config.md

    https://github.com/opencontainers/runtime-spec/blob/master/specs-go/config.go

    Rootfs Mount Propagation

    转载于:https://www.cnblogs.com/charlieroro/p/10176944.html

    展开全文
  • OCI 编程

    千次阅读 2012-05-30 15:06:22
    OCI编程的一般过程  与OCI7.3中使用的宿主语言定义变量存储空间(很拗口,不用管它)的方式不同,OCI9以后已不再使用原有的变量结构来初始化及维护数据库的信息,而改用句柄的形式来和Oracle数据库进行交互。将常用的...
  • OCI编程历程

    2019-09-27 17:57:29
    那哥们直接来了一句:“那东西没什么搞头,就调用些函数,然后做些错误处理”……… 我很是郁闷,回想起来实习时第一个能拿得出手的程序就是对OCI10封装库,当时为了测试效果一个人在机房里呆了一个多月,每天不停的...
  • 1.安装oracle的底层协议支持rpm-ivhoracle-instantclient11.2-basic-11.2.0.2.0.i386.rpmrpm-ivhoracle-instantclient11.2-devel-11.2.0.2.0.i386.rpmoracle-instantclient可以到oracle的官方下载。我的系统是32位的...
  • 首先,您需要OCI租赁。 如果您没有,可以在注册。 DAI需要许可证密钥。 如果您还没有密钥,则可以获取。 您可以在获取密钥之前部署这些模板,但是在首次登录时会提示您输入密钥。 部署 要部署,只需单击魔术按钮! ...
  • 您必须接受 Instant Client 的 OTN 开发和分发许可协议才能下载此软件。 用法 (有关更多信息,请参阅tutum/apache-php 。) 开始将所有接口中的外部端口 80 绑定到容器的映像: docker run -d -p 80:80 ...
  • 可以从采用OCI分发规范或Docker Registry HTTP API V2协议的注册表中提取图像 可以采用OCI图像格式导入和转换图像 设置符合OCI运行时规范的容器包 使用符合OCI的运行时来生成容器进程 访问文档 完整文档可在“。 ...
  • JDBC驱动oci和thin区别

    千次阅读 2017-03-21 09:49:43
    JDBC驱动oci和thin区别
  • mamp安装oci8扩展

    2018-11-14 23:21:46
    mac安装OCI8扩展0.环境1.安装Oracle Instant Client 0.环境 MacOs:10.14 MAMP PRO:5.1(16575) php:5.4.45 1.安装Oracle Instant Client 在Oracle官网下载Oracle Instant Client相关文件。 以12.2.0.1.0-2版本为例,...
  • Qt连接oracle数据库 oci驱动qsqloci

    千次阅读 2018-12-16 01:24:01
    Qt连接oracle数据库,oci驱动编译 前段时间项目需要,需连接并获取oracle数据库,查询资源文件在服务器端路径,并下载资源文件到本地进行加载、解析。所以对Qt连Oracle接数据库进行了一番学习,翻阅各种书籍,搜索...
  • 浅谈SAP的OCI模式

    千次阅读 2013-10-20 17:46:29
    OCI 标准最初是由SAP公司制订的,这个标准被应用到SAP系统内部,在不更改供货商内部的系统和应用逻辑的基础上,和外部的供货商系统(主要是online shop)通过互联网和Http协议来进行产品的订购。发展至今天,OCI...
  • OCI--编程历程

    千次阅读 2014-02-14 14:58:04
    OCI编程历程  前几天和哥们聊天,谈到连接数据库及一些数据库调用接口的开发问题。那哥们直接来了一句:“那东西没什么搞头,就调用些函数,然后做些错误处理”……… 我很是郁闷,回想起来实习时第一个能拿得...
  • linux如何开启php的oci扩展

    千次阅读 2016-01-26 10:36:54
    1.安装oracle的底层协议支持 rpm -ivh oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm rpm -ivh oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm oracle-instantclient可以到oracle的官方下载。我...
  • Oracle的oci和thin连接

    2011-06-01 16:28:40
    Oracle的oci和thin连接 2010年04月27日 星期二 03:42 P.M. Oracle的oci配置可以在ora92\network\admin\SAMPLE有sqlnet.ora和tnsnames.ora的样本(包含注释) Oracle的oci和thin的不同 今天,在配置开发环境的...
  • docker、oci、runc以及kubernetes梳理

    千次阅读 2019-04-04 14:27:13
    Dockerd 与 docker-containerd 之间是通过 grpc 协议通信的。 当 docker-containerd 收到 dockerd 启动容器的请求之后,会做一些初始化工作,然后启动 docker-containerd-shim 进程,并将相关配置作为参数传给它。...
  • Hybrid_MultiCloud_Overlay:MutiCloud_Overlay演示了在一个或多个云(例如AWS,Azure,GCP,OCI,阿里巴巴和Hub和分支拓扑,点对点拓扑以及单个云中的vSphere私有基础结构)上进行覆盖的用例。 覆盖协议IPv6和IPv4...
  • 本文讲的是揭秘开放容器标准(OCI)规范【译者的话】本文介绍了OCI运行时和镜像规范,以及在过去的一段时间里大家对该规范的一些误解。OCI规范制订工作尚未落幕,未来也将对容器产生更加深远的影响。【3 天烧脑式...
  • Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,726
精华内容 1,490
关键字:

oci协议