Docker的C/S模式

Docker的C/S模式



Docker Client通过Remote API与Docker Server通信:

  • RESTful风格API
  • STDIN、STDOUT、STDERR

Docker官方的Remote API Reference:

https://docs.docker.com/reference/api/docker_remote_api/

连接方式

  • unix:///var/run/docker.sock
  • tcp://host:port
  • fd://socketfd



    Socket连接方式也就是说,可以通过本地,也可以是远程连接Docker的Server

用grep过滤关键字,第一条中就是正在运行的docker的守护进程

1.[KANO@kelvin ~]$ ps -ef|grep docker
2.root 15518 15039 0 15:41 pts/2 00:00:00 sudo docker -d -H unix:///var/run/docker.sock
3.root 15605 15518 0 15:41 pts/2 00:00:00 docker -d -H unix:///var/run/docker.sock

我们在命令行中使用docker命令就是在使用docker的客户端程序,再于守护进程进行交互

1.[KANO@kelvin ~]$ docker version
2.Client:
3. Version: 1.8.2-fc22
4. API version: 1.20
5. Package Version: docker-1.8.2-7.gitcb216be.fc22.x86_64
6. Go version: go1.5.1
7. Git commit: cb216be/1.8.2
8. Built:
9. OS/Arch: linux/amd64
10.
11.Server:
12. Version: 1.8.2-fc22
13. API version: 1.20
14. Package Version:
15. Go version: go1.5.1
16. Git commit: cb216be/1.8.2
17. Built:
18. OS/Arch: linux/amd64
19.

下面是docker的Remote API,使用linux中nc -U实现socket连接 ,GET用来查看Remote API中的一个接口info,这个接口用来返回docker的相关信息,指定使用协议是HTTP/1.1

1.[KANO@kelvin ~]$ nc -U /var/run/docker.sock
2.GET /info HTTP/1.1
3.
4.HTTP/1.1 200 OK
5.Content-Type: application/json
6.Server: Docker/1.8.2-fc22 (linux)
7.Date: Tue, 22 Dec 2015 07:44:10 GMT
8.Content-Length: 1667
9.
10.{"ID":"WRM4:ADRR:GPWT:5UBM:QC6S:WEIH:WI5O:ELJ6:6VOI:TFQJ:KKVA:EFW4","Containers":9,"Images":36,"Driver":"devicemapper","DriverStatus":[["Pool Name","docker-253:2-1976018-pool"],["Pool Blocksize","65.54 kB"],["Backing Filesystem","extfs"],["Data file","/dev/loop0"],["Metadata file","/dev/loop1"],["Data Space Used","5.797 GB"],["Data Space Total","107.4 GB"],["Data Space Available","30.75 GB"],["Metadata Space Used","5.951 MB"],["Metadata Space Total","2.147 GB"],["Metadata Space Available","2.142 GB"],["Udev Sync Supported","true"],["Deferred Removal Enabled","false"],["Data loop file","/var/lib/docker/devicemapper/devicemapper/data"],["Metadata loop file","/var/lib/docker/devicemapper/devicemapper/metadata"],["Library Version","1.02.93 (2015-01-30)"]],"MemoryLimit":true,"SwapLimit":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":false,"NFd":14,"OomKillDisable":true,"NGoroutines":27,"SystemTime":"2015-12-22T15:44:10.848855136+08:00","ExecutionDriver":"native-0.2","LoggingDriver":"json-file","NEventsListener":0,"KernelVersion":"4.2.7-200.fc22.x86_64","OperatingSystem":"Fedora 22 (Twenty Two)","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"InitSha1":"c735abe32c7f611ab0c126e178faa4e00a6c23b2","InitPath":"/usr/libexec/docker/dockerinit","NCPU":4,"MemTotal":4038705152,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"kelvin","Labels":null,"ExperimentalBuild":false}
11.

(以上演示的是本地连接)

Docker守护进程的配置和操作

查看守护进程

  • ps -ef | grep docker
  • sudo status docker

使用service命令管理守护进程

  • sudo service docker start
  • sudo service docker stop
  • sudo service docker restart

Docker的启动选项

  • Docker Command Line Reference:

    https://docs.docker.com/reference/commandline/cli

  • 启动配置文件

    /etc/default/docker

  • docker -d [OPTIONS]:-d表示以守护进程形式运行

  • [OPTIONS]是守护进程的配置选项:

    运行相关:

    • -D,--debug=false
    • -e,--exec-driver="native"
    • -g,--graph="/var/lib/docker"
    • --icc=true
    • -l,--log-level="info"
    • --label=[]
    • -p,--pidfile="/var/run/docker.pid"

Docker服务器连接相关:

  • -G,--group="docker"
  • -H,--host=[]
  • --tls=false
  • --tlscacert="/home/sven/.docker/ca.pem"
  • --tlscert="/home/sven/.docker/cert.pem"
  • --tlskey="/home/sven/.docker/key.pem"
  • --tlsverify=false

RemoteAPI相关:

  • --api-enable-cors=false

存储相关:

  • -S,--storage-driver=""
  • --selinux-enabled=false
  • --storage-opt=[]

Registry相关:

  • --insecure-registry=[]
  • --registry-mirror=[]

网络设置相关:

  • -b,--bridge=""
  • --bip=""
  • --fixed-cidr=""
  • --fixed-cidr-v6=""
  • --dns=[]
  • --dns-search=[]
  • --ip=0.0.0.0
  • --ip-forward=true
  • --ip-masq=true
  • --iptables=true
  • --ipv6=false
  • --mtu=0

Docker的远程访问

服务端配置:

环境:

  • 第二台安装了Docker的服务器
  • 修改Docker守护进程启动选项,区别服务器
  • 保证Client API与Server API版本一致

/etc/default/docker添加

DOCKER_OPTS="--label name=docker_server_1 -H tcp://0.0.0.0:2375"

不同服务器name的值不同,用以区别服务器。docker服务一般使用2375端口

都修改完之后重启服务sudo service docker restart

可以使用ifconfig来查看ip,然后使用curl http://ip:2375/info来访问RemoteAPI

客户端配置同服务端:

  • 使用docker -H tcp://ip:2375 info来访问RemoteAPI
  • 使用环境变量
1.export DOCKER_HOST="tcp://ip:2375"
2.docker info

Docker的C/S模式详解的更多相关文章

  1. Docker Kubernetes Service 网络服务代理模式详解

    Docker Kubernetes  Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...

  2. Docker:网络模式详解

    Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面. Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络 ...

  3. Docker网络模式详解

    一.Docker四种工作模式 安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络). none .hosthost:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用 ...

  4. docker 网络概述及网络模式详解

    docker 网络概述及网络模式详解 1.网络概述 2.网络模式详解 1.网络概述: Docker 网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0) ...

  5. Docker Kubernetes 服务发现原理详解

    Docker Kubernetes  服务发现原理详解 服务发现支持Service环境变量和DNS两种模式: 一.环境变量 (默认) 当一个Pod运行到Node,kubelet会为每个容器添加一组环境 ...

  6. Extjs MVC开发模式详解

    Extjs MVC开发模式详解   在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...

  7. JavaScript严格模式详解

    转载自阮一峰的博客 Javascript 严格模式详解   作者: 阮一峰 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict m ...

  8. HTTP协议头部与Keep-Alive模式详解

    HTTP协议头部与Keep-Alive模式详解 .什么是Keep-Alive模式? 我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器 ...

  9. (" use strict")Javascript 严格模式详解

    Javascript 严格模式详解 转载别人的博客内容,浏览了一遍,没有全部吸收,先保存一下链接 http://www.ruanyifeng.com/blog/2013/01/javascript_s ...

随机推荐

  1. DevExpress.GridControl.gridView的一些注意

    1.DevExpress控件组中的GridControl控件不能使横向滚动条有效.现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容. 解决: gridView1.Op ...

  2. jQuery Uploadify上传插件

    jQuery Uploadify在ASP.NET MVC3中的使用 1.Uploadify简介 Uploadify是基于jQuery的一种上传插件,支持多文件.带进度条显示上传,在项目开发中常被使用. ...

  3. iOS 类管理

    CocoaPods安装和使用教程 Code4App 原创文章.转载请注明出处:http://code4app.com/article/cocoapods-install-usage 目录 CocoaP ...

  4. 关于ECharts Java类库的一个jquery插件

    在项目中开发图表功能时用到了Echars和一个关于Echars的java类库(http://git.oschina.net/free/ECharts).这个类库主要目的是方便在Java中构造EChar ...

  5. Spring-----自定义属性编辑器

    转载自:http://blog.csdn.net/hekewangzi/article/details/51712963

  6. HDU 1004 - Let the Balloon Rise(map 用法样例)

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  7. Twitter License for Android

    1.Apache Software Foundation Apache 软件基金会 2.Apache Thrift 跨平台传输数据,Thrift与其他传输方式的比较:    xml与JSON相比体积太 ...

  8. Sublime_调试PHP编译系统设置.

    工具->编译系统->新建编译系统 {         "cmd": ["C:\\wampserver\\bin\\php\\php5.3.13\\php.ex ...

  9. C++进程间通信(常用理解例子)-买票

    #include "stdafx.h" #include <iostream>using namespace std; #include "windows.h ...

  10. Jquery 解决 H5 placeholder元素问题

    <style type="text/css"> .placeholder{ color: #cacaca; } </style> <script ty ...