} }
当前位置:首页 > 技术之家 > docker > 正文内容

docker配置远程访问

docker Daemon 默认情况下是只允许本地访问的,不允许远程访问。本文将首先介绍 Docker Daemon 的连接方式,然后说明如何配置远程访问。即实现通过本地 docker 客户端访问远程主机的 docker 服务端,以此来监控远程主机上的 Docker 容器。

如何配置:

有两种方式:

第一种(推荐)

是使用 systemctl edit docker 来调用文本编辑器修改指定的单元或单元实例,ubuntu 默认调用的是 nano 编辑器,不是很好用,如果不熟悉 nano 编辑器的操作可以使用 vim 编辑器。

主要也就是新建或修改 /etc/systemd/system/docker.service.d/override.conf,其内容如下:

##Add this to the file for the docker daemon to use different ExecStart parameters (more things can be added here)[Service]ExecStart=ExecStart=/usr/bin/dockerd

解释一下:

默认情况下使用 systemd 时,docker.service 的设置为:ExecStart=/usr/bin/dockerd -H fd://,这将覆盖写到 daemon.json 中的任何 hosts 。通过在 override.conf 文件中将 ExecStart 仅仅定义为:ExecStart=/usr/bin/dockerd,这将会使用在 daemon.json 中设置的 hosts 。这个文件中的第一行ExecStart= 必须要有,因为它将用于清除默认的 ExecStart 参数。如果是修改 docker.service 的文件而不是创建 override.conf,那么下次 systemd 重启时,docker.service 文件也会被重新创建。

然后在 /etc/docker/daemon.json (没有就新建一个,下文统一简称 daemon.json)中写入以下内容

{
  "hosts":[
    "unix:///var/run/docker.sock",
    "tcp://0.0.0.0:2375"
  ]}

该文件必须符合 json 规范写法,否则 Docker 将不能启动

重新加载 daemon 并重启 docker 服务:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service

检查端口监听:

$ sudo netstat -ntlp |grep dockerd
tcp6       0      0 :::2375                 :::*                    listEN      2439/dockerd

在远程主机上面通过 tcp socket 来访问本机的 Docker Daemon 服务:

$ docker -H  192.168.205.10:2375 images$ docker -H  192.168.205.10:2375 ps

其中 192.168.1.130 是开放了远程访问的主机的 IP。

第二种

这种就很简单暴力,直接修改/lib/systemd/system/docker.service文件,注释掉默认的 ExecStart 并添加新的 ExecStart 配置:

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

然后重启 docker.service:

$ sudo systemctl daemon-reload$ sudo systemctl restart docker.service

这样 dockerd 就开始监听 tcp 端口 2375 了

Docker 与 Dockerd 的交互

Docker 客户端与 dockerd 之间就是通过 REST 的方式通信的。前面我们已经让 dockerd 监听 tcp 端口了,所以我们可以使用 curl 来代替 docker 客户端。这里我们简单的演示如何请求 dockerd 从 docker hub 上下载 hello-world 镜像

$ curl '127.0.0.1:2375/images/create?fromImage=hello-world&tag=latest' -X POST
{"status":"Pulling from library/hello-world","id":"latest"}
{"status":"Digest: sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0"}
{"status":"Status: Image is up to date for hello-world:latest"}

如果去看看 Engine API,你会发现其它的请求也都是用类似方式发送的,更多API可以参考官方文档,目前最新的版本是v1.40:https://docs.docker.com/engine/api/v1.40/


扫描二维码推送至手机访问。

版权声明:本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:luxd@aliyun.com,感谢支持理解。


本文链接:https://luxd.cc/post/178.html

“docker配置远程访问” 的相关文章

docker将镜像导出到本地,上传至内网服务器上

docker将镜像导出到本地,上传至内网服务器上

背景:在企业中往往出现了内网不能和外网相通,不能使用docker pull命令来拉取镜像,这个时候我们就可以考虑在有所需镜像的服务器上导出镜像,再将其上传到内网服务器上。有两种方法,一种是通过容器,一种是通过镜像,其实本质是一样的,容器的实质就是镜像方法一:通过容器1 首先使用docker ps -...

docker修改镜像名称以及保存镜像文件

docker修改镜像名称以及保存镜像文件

1、修改镜像名[root@localhost ~]# docker images REPOSITORY              ...

docker从入门到精通,看这一篇就够了

docker从入门到精通,看这一篇就够了

一、Docker简介1、背景物理机时代一个物理机上安装操作系统,然后直接运行我们的软件。也就是说你电脑上直接跑了一个软件,并没有开虚拟机什么的,资源极其浪费。缺点  ·  部署慢  ·  成本高虚拟机都不开,直接上物理机部署应用,那成本能不...

如何将当前在用的centos 7.6系统及数据 转成docker镜像

如何将当前在用的centos 7.6系统及数据 转成docker镜像

将当前正在使用的CentOS 7.6系统及数据转换成Docker镜像的步骤如下:首先,安装Docker。可以通过运行以下命令来安装Docker:sudo yum install docker然后启动Docker服务并设置为在系统启动时自动启动:sudo sys...

Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. Error: open /proc/sel

Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. Error: open /proc/sel

问题描述:在Centos8系统中,使用docker run时,出现如下报错:Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.Error: open /proc/self/uid_map: no...

DOCKER 第一步

DOCKER 第一步

基本概念Docker 包括三个基本概念镜像( Image )容器( Container )仓库( Repository )容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序...