Docker 4 之 Docker 客户端和守护进程

学习内容整理笔记来自 极客学院的 docker 入门教程,更多信息查看 Docker 文档

四.Docker 的 C/S 模式

1.Docker 的守护进程

Docker 是以客户端和守护进程的方式来运行。这里详细的介绍 Docker C/S 模式是如何运行的。

Docker 4 之 Docker 客户端和守护进程_第1张图片

在 Docker Client (即 Docker 客户端)当中,运行 Docker 各种命令。而这些命令会传递给 Docker 的宿主机上运行的 Docker 的守护进程。Docker 的守护进程负责实现 Docker 的各种功能。

Docker客户端和守护进程

Docker 4 之 Docker 客户端和守护进程_第2张图片

Docker 的守护进程运行在宿主机上(即 C/S 架构的 server 端),守护进程会在运行后一直在后台运行,负责实现 Docker 的各种功能。而 Docker 的使用者并不会与守护进程进程交互,而是通过 Docker 的客户端(即 Docker 命令行接口)与 Docker 守护进程进行通信。Docker 命令行接口(即在 Shell 中执行的二进制程序)是 Docker 的最主要的用户接口,用来从用户处接收 Docker 的命令并且传递给守护进程。而守护进程将命令执行的结果返回给客户端并显示在命令行接口中。

2. Remote API

Docker自定义程序和守护进程

Docker 4 之 Docker 客户端和守护进程_第3张图片

Docker 命令行接口虽然是 Docker 的最主要的用户接口,Docker 实际上也提供了另外的与守护进程通信的方式,即 Remote API。它也是一个 RESTful 风格的 API ,可以通过编写程序调用这个 API 来将自己的程序与 Docker 容器进行集成。

但 Docker 的 REmote API 在某些复杂的情况下也支持 STDIN、STDOUT、STDERR 方式来进行通信和交互。更多关于 API 的详细信息查看官网 Engine API v1.24 。

3. 连接方式

Docker 客户端与守护进程通过 Socket 进行连接,并提供了三种连接模式`

  • unix:///var/run/docker.sock (默认)
  • tcp://host:port
  • fd://socketfd

完整 Docker C/S 运行方式

Docker 4 之 Docker 客户端和守护进程_第4张图片

用户自定义的程序通过 Remote API 调用 Docker 服务。而 Docker 的客户端与 Docker 的服务器端通过 Socket 等进行连接。那么,这种连接本身意味着 Docker Client 和 Server 既可以在同一台机器上运行,也可以在不同的机器运行,即 Docker Client 可以通过远程的方式访问 Docker Server。

4. Docker 的守护进程的配置和操作

docker 的使用帮助可以通过 docker --help 查看
Docker 4 之 Docker 客户端和守护进程_第5张图片

4.1 查看 Docker 的守护进程的情况

  • ps -ef|grep docker

  • sudo service docker status
    Docker 4 之 Docker 客户端和守护进程_第6张图片

4.2 使用 service 命令管理 docker

Docker 启动

sudo service docker start

Docker关闭

sudo service docker stop

这时 docker 正在运行
Docker 4 之 Docker 客户端和守护进程_第7张图片

docker 服务被关闭
Docker 4 之 Docker 客户端和守护进程_第8张图片

Docker 重启

sudo service docker restart

4.3 docker守护进程的启动选项

docker -d [OPTIONS]
运行相关:
    -D,--debug=false
    -e,--exec-driver="native"
    -g,--graph="/var/bin/docker"
    --icc=true
    -l,--log-level="info"
    -able=[]
    -p,--pidfile="/var/run/dpcker.pid"
     ...
docker 服务器连接相关:
    -G,--group="docker"
    -H,--host=[]
    --tls=flase
    --tlscacert="/home/sven/.docker/ca.pem"
    --tlscert="/home/sven/.docker/cert.pem"
    --tlskey="/home/sven/.dovker/key.pem"
    --tlsverify=false 
     ...
RemoateAPI相关:
     --api-enable-cors=false
      ...
存储相关:
    -s,--storage-driver=""
    --selinux-enabled=flase
    --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=ture
    --ip-masq=ture
    --iptables=ture
    --ipv6=false
    --mtu=0
    ...

可查看 Use the Docker command line 获取更详细的信息

你可能感兴趣的:(Docker,Linux)