docker的C/S模式
客户端与守护进程通信的接口
- 命令行接口
- remote API:
- RESTful风格API
- STDIN STDOUT STDERR
- 语言参考:https://docs.docker.com/reference/api/docker_remote_api
连接方式
- unix:///var/run/docker.sock 默认方式
- tcp://host:port
- fd://socketfd
利用socket进行通信
- 查看正在运行的守护进程
1 | ps -ef | grep docker |
- 连接socket进行通信
1 | nc -U /var/run/docker.sock |
以上都是在本地的访问,docker也支持远程访问。
docker守护进程的配置和操作
- 查看守护进程
1 | ps -ef | grep docker |
- 守护进程的启动、停止和重启
1 | sudo service docker start |
docker的启动选项
1
docker -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 = falseRemotAPI相关:
–api-enable-cors = falseRegistry相关:
–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启动配置文件 /etc/default/docker
注:ubuntu 16.04及以上版本使用:修改/lib/systemd/system/docker.service中的ExecStart 加载配置:
1
2
3systemctl daemon-reload
service docker restart
docker info
docker的远程访问
- 第二台安装docker的服务器
- 保证Client API与Server API版本一致
修改docker守护进程启动选项
修改服务器端配置
-H tcp://host:postunix:///path/to/socket fd://* or fd//socketfd
守护进程默认配置:
-H unix:///var/run/docker.sock 注:我的默认的是 fd://
改为 tcp:
tcp://0.0.0.0:2375
1
curl http://ip:2375/info
修改客户端配置
-H tcp://host:postunix:///path/to/socket fd://* or fd//socketfd
默认配置:
-H unix:///var/run/docker.sock
- docker -H tcp//ip:2375 # 太麻烦
- export DOCKET_HOST=”tcp://ip:2357” # 使用环境变量
export DOCKET_HOST=”tcp://ip:2357” # 使用本地
- 怎样在设置了远程连接的服务器也支持本机连接?
答:给-H再增加一个方式,-H可以设置多个值。