MacOS 等机器配置 Docker 启用 Remote API

简介: Docker 不仅可以通过本地命令行`docker`命令进行调用,还可以通过开启远程控制 API,使用 HTTP 调用接口来进行访问,远程控制 Docker Daemon 来做很多操作。

Docker 不仅可以通过本地命令行docker命令进行调用,还可以通过开启远程控制 API,使用 HTTP 调用接口来进行访问,远程控制 Docker Daemon 来做很多操作。

安装 Docker

如果没有 Docker 可以先进行安装:

# 国外主机
curl -sSL https://get.docker.com | sh

# 国内主机
curl -sSL https://get.daocloud.io/docker | sh

启用 API

Docker 的远程 API 服务默认监听的是 TCP 2375 端口,为了保证安全,Docker 安装后默认不会启用远程 API 服务,因为这个服务默认不做权限认证。

如果你的防火墙或者安全组允许了 2375 端口访问,同时也开启了 Docker 默认的远程 API 服务,那么大几率你的服务器会被拿来挖矿...

所以推荐在内网环境中使用,安全上会有保证,如果是外网生产环境建议做好iptables安全加固或用完即焚或使用 TLS 安全认证等等。

下面分别说明 CentOS 以及 MacOS 如何开启远程 API 服务:

CentOS

CentOS 的开启方法比较简单,先修改配置:

vim /usr/lib/systemd/system/docker.service

修改ExecStart配置项,默认如下:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

增加一个-H tcp://0.0.0.0:2375选项

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock

如果是内网生产环境,也可以将0.0.0.0改为内网 IP。同样的,2375 端口也可以修改。

但是这样可能还有一个问题,无法在命令行使用docker命令了,还需要添加sock选项:-H unix:///var/run/docker.sock,最后为:

ExecStart=/usr/bin/dockerd -H fd:// -H unix:///var/run/docker.sock -H tcp://10.105.3.115:2375 --containerd=/run/containerd/containerd.sock

修改完配置之后需要重启 Docker 服务:

systemctl daemon-reload
systemctl restart docker

重启完成后,可以使用netstat查看端口是否监听来确认是否成功:

[root@VM-3-115-centos ~]# netstat -nutlp | grep 2375
tcp        0      0 10.105.3.115:2375       0.0.0.0:*               LISTEN      32316/dockerd

MacOS

在 Mac 下无法直接修改配置文件来开启远程 API 服务,后来在 docker/for-mac 的 issue 中得到了解决方案。

可以运行一个 socat 容器,将 unix socket 上的 Docker API 转发到 MacOS 上指定的端口中:

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

测试

启用成功后,可以进行一些测试,例如直接使用浏览器访问info和version等页面获取信息。

http://127.0.0.1:2375/info

http://127.0.0.1:2375/version

这里以version为例,访问后可以得到如下内容则表示启用成功:

{
    "Platform": {
        "Name": "Docker Engine - Community"
    },
    "Components": [
        {
            "Name": "Engine",
            "Version": "20.10.7",
            "Details": {
                "ApiVersion": "1.41",
                "Arch": "amd64",
                "BuildTime": "2021-06-02T11:54:58.000000000+00:00",
                "Experimental": "false",
                "GitCommit": "b0f5bc3",
                "GoVersion": "go1.13.15",
                "KernelVersion": "5.10.25-linuxkit",
                "MinAPIVersion": "1.12",
                "Os": "linux"
            }
        },
        {
            "Name": "containerd",
            "Version": "1.4.6",
            "Details": {
                "GitCommit": "d71fcd7d8303cbf684402823e425e9dd2e99285d"
            }
        },
        {
            "Name": "runc",
            "Version": "1.0.0-rc95",
            "Details": {
                "GitCommit": "b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7"
            }
        },
        {
            "Name": "docker-init",
            "Version": "0.19.0",
            "Details": {
                "GitCommit": "de40ad0"
            }
        }
    ],
    "Version": "20.10.7",
    "ApiVersion": "1.41",
    "MinAPIVersion": "1.12",
    "GitCommit": "b0f5bc3",
    "GoVersion": "go1.13.15",
    "Os": "linux",
    "Arch": "amd64",
    "KernelVersion": "5.10.25-linuxkit",
    "BuildTime": "2021-06-02T11:54:58.000000000+00:00"
}
目录
相关文章
|
Kubernetes 关系型数据库 文件存储
手把手教你完成极空间 NAS Docker 镜像加速配置
本教程详细介绍了如何在极空间NAS上配置轩辕镜像加速器,以提升Docker镜像的下载速度与稳定性。内容涵盖账号注册、网络确认、加速器设置及验证方法,并提供常见问题解决方案,帮助用户高效完成容器化应用部署。
4916 1
|
Prometheus 监控 Cloud Native
Prometheus配置docker采集器
本文介绍了如何使用 Prometheus 监控 Docker 容器,涵盖环境准备、配置文件编写及服务启动等步骤。首先确保安装 Docker 和 Docker Compose,接着通过 `docker-compose.yml` 配置 Prometheus 和示例应用。创建 `prometheus.yml` 指定数据采集目标,最后用 `docker-compose up -d` 启动服务。文章还展示了甘特图和类图,帮助理解服务状态与关系,助力提升系统可靠性和可维护性。
757 11
|
文件存储 数据安全/隐私保护 开发者
群晖NAS Docker镜像源加速配置教程
本教程介绍了群晖NAS用户如何通过配置轩辕镜像加速服务提升Docker镜像拉取速度。内容包括配置前准备、详细设置步骤及日常使用说明,帮助用户快速完成配置并享受高效稳定的镜像下载体验。
6969 60
|
Docker 容器 文件存储
飞牛fnOS Docker镜像加速配置全攻略
本文介绍了如何在飞牛fnOS中配置Docker镜像加速服务,通过设置轩辕镜像仓库加速器,提升镜像拉取速度与稳定性。内容涵盖配置前准备、加速源设置、首选加速源调整及使用指南,帮助用户高效完成镜像操作。
8590 56
|
12月前
|
数据管理 Linux iOS开发
Splunk Enterprise 9.4.5 (macOS, Linux, Windows) - 机器数据管理和分析
Splunk Enterprise 9.4.5 (macOS, Linux, Windows) - 机器数据管理和分析
425 0
|
Java 分布式数据库 Docker
使用Docker配置并连接HBase的Java API
本流程概要的解释了如何在Docker上配置并启动HBase服务,并通过Java API进行连接和操作表,不涉及具体的业务逻辑处理和数据模型设计,这些因应用而异需由开发者根据实际需求进行实现。
585 13
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
1962 4
|
数据安全/隐私保护 Docker 容器
docker pull 相关配置
通过本文的介绍,您已经了解了如何通过镜像源配置、登录私有仓库、设置网络代理以及其他优化策略来提升 `docker pull`命令的效率和可靠性。这些配置不仅能够显著加快镜像下载速度,还能确保在不同网络环境下的稳定性。通过合理使用这些配置,您可以更好地管理和优化Docker环境中的镜像拉取操作。
2592 18