首页 技术 正文
技术 2022年11月8日
0 收藏 326 点赞 1,732 浏览 4192 个字

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
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295