• docker进入容器


    进入容器的三种方式:

    • sshd
    • nsenter
    • exec 

    sshd

      在容器中开启一个SSHD的服务,通过SSH的协议登录到容器中,把容器看出一个vm

    nsenter:

      nsenter包含在util-linux包中,用来进入一个进程的Namespace 

      获取一个容器的进程ID:

        docker inspect --format "{{ .State.Pid}}"  <container-id>

      nsenter --target $pid --mount  --uts --ipc --net --pid 

    exec:

      docker 1.3版本引入的一个新的指令,用来进入一个容器中运行指令

    docker  exec  <container-id>  ["CMD"] 

    orchestration as  a Service:

      orchestration as a Service的目标是协调在不同Host上的Container,把他们有机的组织在一起成为一个统一的系统;

    • 解决Container的协调管理
    • 单个数据中心单节点/多个节点跨数据中心
    • Container之间的网络通信

      Oaas解决方案:

      • Fig,简单,但是不支持跨主机的Orchestrate
      • Kubernetes, Google推出的跨云的Oaas的解决方案

      Fig:

      • Fig通过对于Docker的封装,从而方便我们构建应用的运行环境
      • 应用运行的所有组件全部运行在Container中,通过服务发现的方式连接在一起;   

      服务发现:

      • Fig使用Docker自带的Link方式来实现服务发现,Fig会负责管理Link的相关信息;   

      fig通过当前目录下fig.yml文件来创建应用的运行环境;

      fig.yml中需要定义不同的service

       Service:

        Service标示的是一个独立的组件,例如web应用,Mysql, Redis等都可以定义为一个独立的Service, Service是可以横向扩展的

        可以在Service中直接定义Image,也可以通过定义build配置项来运行时创建Image 

        所有的Service都会被运行为一个或多个Docker的Container

      fig.yml:

        build说明从当前目录来构建Image,需要当前目录有Dockerfile,镜像名默认是{当前目录名字_ServiceName}

        command表示启动Container的cmd

        links中的值是service name,这样可以在scale out中把多个container连接到自己;

      创建:

        fig up命令会根据当前的fig.yml来启动container,并且根据配置信息把对应的container连接在一起

        可以通过fig up {service}的方式,只启动某个service 定义的container

        如果在当前目录下反复执行fig up,会重新创建新的container,可以通过加参数-no-recreate来防止这个问题产生;

      检查:

        fig ps, 类似于docker ps,用来检查当前fig.yml所定义的service对于的container的运行情况;

      水平扩展:

        fig scale service=Num的方式可以水平扩展service对于的container的个数;

        新添加的container如果是link的源头之一,是不会被自动添加到link的目标container中的,这可以通过重新创建container的方式来解决;

      清除环境:

        fig  stop用来停止container

        fig  rm用来删除container 

      调试:

        可以通过使用fig run {service} cmd的方式来对环境进行调试,比如需要看到实际通过link注入到某一个service的环境变量,可以通过fig run web export的方式;

        fig run也是运行一个container,如果该service依赖于其他的service,并且其他的service没有被创建,那么也会先创建service的container,可以通过设置-no-deps来禁止;

      

      

  • 相关阅读:
    MySQL--lsblk命令查看块设备
    MySQL--linux IO调度算法
    一致性哈希
    MySQL--查询表统计信息
    MySQL--区分表名大小写
    MySQL--Online DDL
    MySQL--MODIFY COLUMN和ALTER COLUMN
    MySQL--修改表字段
    MySQL--增加或修改列注释
    鼠标事件
  • 原文地址:https://www.cnblogs.com/chris-cp/p/4859260.html
Copyright © 2020-2023  润新知