Docker的C/S模式详解
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 dockersudo status docker
使用service命令管理守护进程
sudo service docker startsudo service docker stopsudo service docker restart
Docker的启动选项
Docker Command Line Reference:
https://docs.docker.com/reference/commandline/cli启动配置文件
/etc/default/dockerdocker -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模式详解的更多相关文章
- Docker Kubernetes Service 网络服务代理模式详解
Docker Kubernetes Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...
- Docker:网络模式详解
Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面. Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络 ...
- Docker网络模式详解
一.Docker四种工作模式 安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络). none .hosthost:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用 ...
- docker 网络概述及网络模式详解
docker 网络概述及网络模式详解 1.网络概述 2.网络模式详解 1.网络概述: Docker 网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0) ...
- Docker Kubernetes 服务发现原理详解
Docker Kubernetes 服务发现原理详解 服务发现支持Service环境变量和DNS两种模式: 一.环境变量 (默认) 当一个Pod运行到Node,kubelet会为每个容器添加一组环境 ...
- Extjs MVC开发模式详解
Extjs MVC开发模式详解 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...
- JavaScript严格模式详解
转载自阮一峰的博客 Javascript 严格模式详解 作者: 阮一峰 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict m ...
- HTTP协议头部与Keep-Alive模式详解
HTTP协议头部与Keep-Alive模式详解 .什么是Keep-Alive模式? 我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器 ...
- (" use strict")Javascript 严格模式详解
Javascript 严格模式详解 转载别人的博客内容,浏览了一遍,没有全部吸收,先保存一下链接 http://www.ruanyifeng.com/blog/2013/01/javascript_s ...
随机推荐
- Android 常用 adb 命令总结
Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命 ...
- sql中的split方法
ALTER function [dbo].[f_split](@SourceSql varchar(8000),@StrSeprate varchar(10))returns @temp table( ...
- c# List<string>和List<int>互相转换
List<string> 转 List<int> var list = (new[]{"1","2","3"}).T ...
- c# foreach枚举器
要是自己的类支持foreach ,必须在类中必须有GetEnumerator方法,该方法返回的是一个IEnumerator类型的枚举器; public class MyStruct { public ...
- 无废话MVC入门教程二[第一个小Demo]
mvc技术交流,欢迎加群: 本文目标 1.了解"模型"."视图"."控制器"的创建.调试和使用过程. 本文目录 1.创建模型 2.创建视图 ...
- C#高效分页代码(不用存储过程)
首先创建一张表(要求ID自动编号): create table redheadedfile ( id ,), filenames ), senduser ), primary key(id) ) 然后 ...
- 浏览器加载模式:window.onload和$(document).ready()的区别(详解)
jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到. 在延迟等待加载,JavaScript提供了一个事件为load,方法如下: wind ...
- 把WCF服务部署服务器IIS异常(详细:处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”)
详细:处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” 原因: vs2010默认的是4.0框架,4.0的框架是独立的CLR,和2.0 ...
- 解除被DenyHosts锁定的IP地址
自己的本本无法ssh上服务器,提示 ssh_exchange_identification: read: Connection reset by peer 仔细回想,自己手贱把~下面的一个ssh文件删 ...
- FreeRTOS 中断优先级嵌套错误引发HardFault异常解决
最近在使用FreeRTOS的时候,突然发现程序在运行了几分钟之后所有的任务都不再调用了,只有几个中断能正常使用,看来是系统挂掉了,连续测试了几次想找出问题,可是这个真的有点不知所措. ...