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 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模式详解的更多相关文章
- 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 ...
随机推荐
- (转)c#对象内存模型
对象内存模型 C#的对象内存模型写这篇博客的主要目的是为了加深自己的理解,如有不对的地方,请各位见谅. C#的对象内存模型: 一.栈内存和堆内存1.栈内存 由编译器自动分配和释放,主要用来保存一些局部 ...
- T-SQL存储过程
存储过程(procedure)就是一个函数,完成一段sql代码的封装,实现代码的重用. 优点: 1.比使用DotNet直接写Sql脚本执行少了一块解析编译的过程.效率更快一点点. ...
- IE下图片切换的时候,图片总是切换不成功---根本问题是IE缓存图片
作为WEB设计者,为了在网页展示上加强用户体验,经常会利用图象载入显示状态方法,这自然需要Image对象的onload事件. 在firefox浏览器下完成开发后,可是在IE浏览器中进行调试总不能被调用 ...
- css控制父元素下的子元素自适应高度,且高度一致
css代码: .wrap{width:600px;margin:0 auto; overflow:hidden;} .left{background:#ccc;width:300px;float:le ...
- NSRangeFromString(<#NSString * _Nonnull aString#>) 和rangeOfString
NSRangeFromString NSString *str1 = @"abcdef"; NSString *str2 = @"1-105"; NSStrin ...
- poj2752Seek the Name, Seek the Fame
Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and ...
- 接触CrackMe 第一个
今天刚接触这个 做了一个简单的. 用Onlydbg加载之后,对GetDlgItemTextA函数下断点,因为程序是在控件上获取数据的. Register输入Name和Serial点击Ok之后,断点响应 ...
- golang Rsa
package models import ( "crypto/rand" "crypto/rsa" "crypto/x509" " ...
- 关于各种数据库 Insert时同时取到Id的操作
对数据库的操作,在Insert的同时获取到Id,保证原子性操作.而不是,先取Id,然后再插入到数据库等操作. Oracle: 使用Oracle自带的 Returning into 语句,具体代码示例如 ...
- Android04-UI01常用控件
1.常见控件的使用: TextView Button EditText ImageView 1.TextView <TextView android:id="@+id/text_v ...