@@ -513,6 +513,71 @@ docker container stop registry && docker container rm -v registry
513
513
514
514
[ 部署 registry 管理工具 Harbor] ( docker/harbor.md )
515
515
516
+ ## Docker REST API
517
+
518
+ ` Docker ` 不仅可以通过本地命令行 ` docker ` 命令进行调用,还可以通过开启远程控制 ` API ` ,使用 ` HTTP ` 调用接口来进行访问,远程控制 ` Docker Daemon ` 来做很多操作。` Docker ` 的远程 ` API ` 服务默认监听的是 TCP ` 2375 ` 端口,为了保证安全,Docker 安装后默认不会启用远程 ` API ` 服务,因为这个服务默认不做权限认证。
519
+
520
+ ### CentOS
521
+
522
+ CentOS 的开启方法比较简单,先修改配置:
523
+
524
+ ``` shell
525
+ vim /usr/lib/systemd/system/docker.service
526
+ ```
527
+
528
+ 修改 ` ExecStart ` 配置项,默认如下:
529
+
530
+ ``` shell
531
+ ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
532
+ ```
533
+
534
+ 增加一个 ` -H tcp://0.0.0.0:2375 ` 选项
535
+
536
+ ``` shell
537
+ ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock
538
+ ```
539
+
540
+ 如果是内网生产环境,也可以将 ` 0.0.0.0 ` 改为内网 IP。同样的,` 2375 ` 端口也可以修改。
541
+
542
+ 但是这样可能还有一个问题,无法在命令行使用 ` docker ` 命令了,还需要添加 ` sock ` 选项:` -H unix:///var/run/docker.sock ` ,最后为:
543
+
544
+ ``` shell
545
+ ExecStart=/usr/bin/dockerd -H fd:// -H unix:///var/run/docker.sock -H tcp://10.105.3.115:2375 --containerd=/run/containerd/containerd.sock
546
+ ```
547
+
548
+ 修改完配置之后需要重启 Docker 服务:
549
+
550
+ ``` bash
551
+ systemctl daemon-reload
552
+ systemctl restart docker
553
+ ```
554
+
555
+ 重启完成后,可以使用 netstat 查看端口是否监听来确认是否成功:
556
+
557
+ ``` bash
558
+ [root@VM-3-115-centos ~ ]# netstat -nutlp | grep 2375
559
+ tcp 0 0 10.105.3.115:2375 0.0.0.0:* LISTEN 32316/dockerd
560
+ ```
561
+
562
+ ### MacOS
563
+
564
+ 在 Mac 下无法直接修改配置文件来开启远程 API 服务,后来在 [ ` docker/for-mac ` ] ( https://github.com/docker/for-mac ) 的 [ ` issue ` ] ( https://github.com/docker/for-mac/issues/770 ) 中得到了解决方案。
565
+
566
+ 可以运行一个 [ ` socat ` ] ( https://hub.docker.com/r/bobrik/socat ) 容器,将 ` unix socket ` 上的 Docker API 转发到 MacOS 上指定的端口中:
567
+
568
+ ``` bash
569
+ docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
570
+ ```
571
+
572
+ ### 测试
573
+
574
+ 启用成功后,可以进行一些测试,例如直接使用浏览器访问 info 和 version 等页面获取信息。
575
+
576
+ ``` bash
577
+ http://127.0.0.1:2375/info
578
+ http://127.0.0.1:2375/version
579
+ ```
580
+
516
581
## 使用Docker实战
517
582
518
583
> ⚠文件挂载注意:docker 禁止用主机上不存在的文件挂载到 container 中已经存在的文件
0 commit comments