Docker系列(八)Docker的CS模式、守护进程的配置和操作
文章目录
- Remote API
- 连接方式
- 实例演示
- 守护进程的配置和操作
Docker
是以客户端、守护进程的方式来运行的,那Docker
是如何以C/S
模式运行的呢?
在docker
客户端(docker client
)中运行docker
的各种命令,而这些命令会传递给docker
的宿主机上运行docker
的守护进程。而docker
的守护进程负责实现docker
的各种功能。
上图去掉一些没有用的信息专注docker
的客户端与守护进程描述。如图所示,docker
的守护进程运行在宿主机上,也就是cs
架构的server
端,守护进程会在启动后一直在后台运行。负责实现docker
的各种功能。而docker
使用者并不会直接与守护进程交互,而是要通过docker
的客户端,也就是docker
的命令行接口来与docker
守护进程进行通信,也就是在shell
中运行的docker
的二进制程序。接收docker
的守护进程的执行命令,然后将结果返回给客户端,显示在命令行中。
docker
的命令行接口是docker
最主要的客户端接口,而docker
也提供了另外的与守护进程通信的方式Remote API
。
Remote API
Remote API
和我们常见的网络平台提供的API
非常相似,也是RESTful
风格的API
,我们可以通过Remote API
与docker
的守护进程进行通信。也就是可以通过程序来与docker
进行集成。
docker
的remote API
在某些复杂的情况下也支持STDIN
、 STDOUT
、 STDERR
的方式来进行通信和交互。
如上图所示,用户通过自定义的程序进行交互,而这个程序通过调用remote api
与docker
的守护进程进行协作。
- Docker官方的Remote API Reference ,现在好像换名字变成
Engine API
了。
连接方式
那docker
的客户端与守护进程是如何通信的呢?docker
的客户端与守护进程通过socket
进行链接,docker
提供了3
种进行socket
连接的方式
- unix端口。unix:///var/run/docker.sock
- tcp协议的host/post模式。tcp://host: port
- 第三种是fd的socket。fd://socketfd
用户通过命令行接口或者自定义的应用来与客户端进行连接,这个客户端可以是docker
提供的二进制程序,也就是在shell
中运行的docker
命令, 也可以是用户自定义的程序,而这个程序是通过remote api
来调用的docker
服务, docker
的客户端与docker
的服务端通过socket
进行连接。
这种链接就使得client
和server
既可以在同一台机器上运行,也可以在不同的机器上运行。
实例演示
docker
的守护进程在启动后会一直运行,那么我们可以通过ps
命令来查看当前进程中是否已经启动了docker
服务,使用grep
来过滤docker
关键字
ps -ef | grep docker
然后在命令行中使用docker
命令进行操作时,实际上就是在使用docker
的客户端程序,再与守护进程进行交互:
这里的API version
指的就是remote api
版本。下面再来演示docker
的remote api
是什么样的,这里就要用到linux
的netcat
命令来实现socket
的链接。
nc -U /var/run/docker.sock
-U
指明使用的是socket
。运行之后就已经连接到了socket
。通过socket
发出一个http
的指令,用来查看remote api
的一个接口info
,这个接口用来返回docker
的相关信息,指定协议HTTP/1.1
所返回的结果就是通过docker
的remote api
返回的结果。这里都是通过本机来进行的访问,但是它本身是支持远程访问的。
守护进程的配置和操作
上文我们使用了ps
命令来查看docker
守护进程的运行状态。
$ ps -ef | grep docker
那如何启动、停止、重启docker
的守护进程呢?
sudo service docker start
sudo service docker stop
sudo service docker restart
docker
针对不同的应用场景,为守护进程提供了非常丰富的启动的配置选项。这种配置选项通过如下格式运行:
docker -d [OPTIONS]
-d
表示以守护形式来运行docker的程序,后面[OPTIONS]
是守护进程的配置选项,docker
提供了非常丰富的配置选项。包含了docker
的目录,日志的级别,进程ID、写入文件的地址、debug
模式的开启以及docker
运行时使用的驱动模式等等
- -D, --debug=false
- -e, --exec-driver=“native”
- -g, -graph="/var/ib/docker"
- –icc=true
- -l, -log-level=“info”
- –label=[]
- -p, -pidfile="/var/run/docker.pid"
docker
也提供了客户端与服务器端连接时使用的选项,包含了用户组对连接socket
配置的选项-H
,以及与安全性相关的一系列选项tls
等等:
- -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
也包含了remote api
相关的选项
- –api-enable-cors=false
包含了与存储,驱动以及设置相关的选项
- -s, --storage-driver=""
- –selinux-enabled=false
- –storage-opt=[]
包含了registry
连接相关的选项
- –insecure-registry=[]
- –registry-mirror=[]
网络设置相关的选项(包括网桥的配置,DNS服务器的配置):
- -b, -bridge=”“
- –bip=”“
- –fixed-cidr=”“
- – fixed-cidr-v6=”“
- –dns=[]
- –dns-search=[]
以及和docker
运行的容器的ip
地址的相关配置:
- –ip=0.0.0.0
- –ip-forward=true
- –ip-masq=true
- –iptables=true
- –ipv6=false
- –mtu=0
选项的具体含义可查看:https://docs.docker.com/reference/
docker
服务的启动并不是通过命令行来启动的,这些选项通过启动配置文件/etc/default/docker
应用到docker
守护进程的配置中。在这个配置文件中我们可以配置docker
启动时配置的各种选项。超级权限查看其文件:
DOCKER
是docker
的程序安装地址;DOCKE_OPTS
就是我们刚刚介绍过的docker
守护进程启动时的启动选项;还包含环境变量的设置。
可以在这个文件里面设置自己的配置选项。
如果有修改,重启之后可以看到修改过后的配置将会应用在docker
的守护进程上。
这时再使用info
命令就可以看到刚才做出的修改:
Docker系列(八)Docker的CS模式、守护进程的配置和操作相关推荐
- 【Docker学习总结】12.Docker守护进程的配置和操作
上一篇总结了Docker的CS模式的具体概念,本篇来学习Docker守护进程的配置和操作. 在上一篇的演示中,我们使用了Linux的ps命令查看了Docker守护进程的运行状态.那么,除了ps命令,我 ...
- Docker系列 八.Docker下 Mysql 启动慢查询日志
先进入mysql容器: docker exec -it 480c8f2a1f21 /bin/bash 进入mysql,然后输入密码即可 mysql -u root -p 查看mysql系统参数 mys ...
- Docker系列一 ~docker的安装
Docker系列一 docker安装 依照centos为例,Docker 官方建议要 CentOS7.0 及以上系统版本,在运行CentOS 6.5及以后版本时,需要内核版本>=2.6.32-4 ...
- Docker系列文-----Docker的网络类型(4)
Docker系列文-----Docker的网络类型(4) Docker里的常见文件及作用 Docker 内部的网络类型 1.桥接模式(默认): 2.host模式: 3.container模式 4.no ...
- Docker系列 七. Docker 安装Jenkins
Docker系列 七. Docker 安装Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集 ...
- Docker系列 四.Docker部署SpringBoot
四.Docker部署SpringBoot 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以).IDEA 1. 创建springboot项目 这 ...
- Docker系列五~docker安装php-fpm
Docker系列五 docker安装php-fpm 访问PHP镜像库地址: https://hub.docker.com/_/php?tab=tags 选择合适的版本 php-fpm镜像主要是提供ph ...
- Docker系列四~docker安装mysql
Docker系列四 docker安装mysql 搜索mysql版本 [root@localhost conf.d]# docker search mysql INDEX NAME DESCRIPTIO ...
- Docker系列三~docker安装nginx
Docker系列三 docker安装nginx 搜索nginx版本 docker search nginx 拉取nginx最新版本镜像 docker pull nginx:latest 查看本地镜像 ...
- Docker系列3 - Docker文件系统及搭建Docker私服
系列文章 Docker系列1 - CentOS7安装Docker Docker系列2 - Docker常用命令 UnionFS 联合文件系统 是一种分层.轻量级并且高性能的文件系统,它支持对文件系统的 ...
最新文章
- 清除Solution中的vss信息
- Open***异地机房互连以及负载均衡高可用解决方案
- 0.QObject的数据存储
- 鸿蒙os2.0通知栏,网友上手鸿蒙手机OS 2.0公测版:界面与EMUI已有明显不同
- solr学习之一 搜索基本知识
- NOIP2018普及组复赛解析
- 在win10系统中安装Visual C++ 6.0的具体方法
- 如何使用Xcode分析调试在真机运行的UE4 IOS版游戏
- 删除android电视软件下载,安卓智能电视必装工具没有之一,进程管理备份清理全靠它!...
- windows 设置 rocketmq环境变量_RocketMQ 开篇
- python垃圾回收机制与很多_你了解Python的 垃圾回收 机制吗?
- C语言EasyX详解(小球碰撞)
- linux安装软件无图标,linux安装的软件如何不固定在桌面图标 linux 桌面图标
- SQL Server 去除节假日天数,获取实际工作日天数
- 如何提高平面设计的思维转向
- 伪随机数的产生和流密码
- 雷电3菊链功能_雷电3接口是什么
- DataSec数据防泄密系统
- 官宣!成都链安在北京成立分部啦!
- 关于研发项目计划排期与项目需求延期的想法