进入容器的三种方式:

  • 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来禁止;

  

  

docker进入容器的更多相关文章

  1. Docker的容器

    容器是一个打包了应用和服务的环境,是一个轻量级的虚拟机,每一个容器都由一组特定的应用和必要的依赖库组成. 容器的管理操作 容器常见的命令:查看.创建.启动.终止和删除 创建容器 docker crea ...

  2. 【转】深入 Docker:容器和镜像

    在本专栏往期的 Flux7 系列教程 里,我们已经简单地探讨了 Docker 的基本操作.而在那篇教程中,我们一直是简单地将容器当成是"正在运行的镜像",并没有深入地区分镜像和容器 ...

  3. 理解Docker单机容器网络

    在” 理解Docker单机容器网络 “一文中,还有一个Docker容器网络的功能尚未提及,那就是Docker容器的端口映射.即将容器的服务端口P’ 绑定到宿主机的端口P上,最终达到一种效果:外部程序通 ...

  4. docker进入容器的方式

    通过docker创建守护运行(在使用-d参数时)的容器时,容器启动后会进入后台.用户无法看到容器中的信息.某些时候如果需要进入容器进行操作,有多种方法,包括使用docker attach命令.dock ...

  5. Docker与容器快速入门

    Docker之风席卷全球,但很多人觉得docker入门确实不太容易,其原因在于很多知识点上没准备好,在docker解决了什么问题.怎么解决的.用什么技术解决的都还没想清楚的时候就去探索docker组件 ...

  6. Docker系列之(三):Docker微容器Alpine Linux

    1. 前言 使用Docker创建容器时,基础镜像通常选择Ubuntu或Centos,不管哪个镜像的大小都在100MB以上. Alpine Linux是一个面向安全的轻型的Linux发行版. Alpin ...

  7. docker commit容器

    docker commit 容器ID 镜象REPOSITORY 镜象TAG 如docker commit 52b41c68ac7b registry.lenovows.com:5000/video-a ...

  8. FW Docker为容器分配指定物理网段的静态IP

    官方有关于网桥和IP配置的文档地址:https://docs.docker.com/articles/networking/ 1.宿主机(系统采用ubuntu-14.04.1-server-amd64 ...

  9. Docker,容器,虚拟机和红烧肉

    Docker火了,有多火你自己看看下面的统计数据就知道了 在发布4个月的时间里,下载量就超过50000次,github上收到超过4000个star,涌现了超过100个贡献者,并且有超过150个项目和超 ...

  10. Docker: 限制容器可用的 CPU

    默认情况下容器可以使用的主机 CPU 资源是不受限制的.和内存资源的使用一样,如果不对容器可以使用的 CPU 资源进行限制,一旦发生容器内程序异常使用 CPU 的情况,很可能把整个主机的 CPU 资源 ...

随机推荐

  1. pickle模块

    在编程中,如果存在大的列表或者字典,可以在python中引入pickle 模块: 例如:将下边这组列表保存到文件当中:[1, 2, 'xiaomao', '小狗'] 程序: import pickle ...

  2. verilog中=和<=的区别

    一般情况下使用<=,组合逻辑使用=赋值,时序逻辑使用<=赋值: 举个例子:初始化m=1,n=2,p=3:分别执行以下语句 1.begin m=n:n=p:p=m: end 2.begin ...

  3. gulp+webpack+vue

    gulp+webpack+vue 章节目录 1.目标 2.实现 2.1合并库文件 2.2组织业务代码 2.3打包开发代码 2.4使用webpack-dev-server和热替换插件HotModuleR ...

  4. cad实时平移快捷键

    1.按住鼠标滚轮,光标变成小手工具,可拖动画布 2.键盘按 p,光标变成小手工具

  5. openNebula images

  6. 网易云课堂_C语言程序设计进阶_第5周:链表_1逆序输出的数列

    1 逆序输出的数列(10分) 题目内容: 你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束.然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1. 输 ...

  7. Java中的图形界面编程

    前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗体工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些 ...

  8. 精简JRE的思路初探

    引言: JRE是Java程序赖以执行的基础环境,眼下JRE已经很的庞大;即使为了执行一个简单的Hello World的程序.可能依旧须要依赖整个JRE,将近百兆大小的依赖性. 能否够对特定Java程序 ...

  9. Maven真——聚合和继承(于)

    依赖管理 我们谈论继承一个dependencies因素,我们非常easy这个特性被认为是适用于accout-parent于. 子模块account-email和account-persist同一时候依 ...

  10. 初探swift语言的学习笔记(闭包 - 匿名函数或block块代码)

    很多高级语言都支持匿名函数操作,在OC中的block也为大家所熟悉,然面在swift里好像是被重新作了一个定义,不叫匿名函数,或 block了,而叫闭包(closure).下面配合代码来理解一下swi ...