Docker开启远程访问的实现方式

Docker守护进程套接字

Docker守护进程可以通过三种不同类型的套接字监听Docker Engine API请求:unixtcpfd

默认情况下,在/var/run/docker.sock处创建一个unix域套接字(或IPC套接字),需要root权限或docker组成员身份。

如果需要远程访问Docker守护进程,则需要启用tcp套接字。请注意,默认设置提供了对Docker守护进程的未加密和未经身份验证的直接访问,应该使用内置的HTTPS加密套接字或在其前面放置一个安全的web代理来进行保护。你可以使用-H tcp://0.0.0.0:2375监听所有网络接口上的2375端口,或使用其IP地址-H tcp://ip:2375监听特定网络接口上的2375端口。通常使用端口2375与守护进程进行非加密通信,使用端口2376与守护进程进行加密通信。

注意:如果你使用的是HTTPS加密的套接字,请记住,仅支持TLS1.0及更高版本。出于安全原因,SSLv3及以下版本的协议不再受支持。

修改docker.service

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

[Service]部分,修改ExecStart参数,在最后增加-H tcp://0.0.0.0:2375,监听所有网络接口上的2375端口。

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

重新加载配置文件和启动服务

systemctl daemon-reload && systemctl restart docker
  • daemon-reload: 重新加载服务的配置文件,要是服务的配置文件发生变化,则需要重新加载
  • restart:重新启动服务。

查看dockerd进程是否正在监听2375端口:

[root@izoq008ryseuupz ~]# netstat -antp | grep dockerd
tcp6    0   0 :::2375         :::*          LISTEN   22494/dockerd

netstat命令用于显示网络状态,部分选项的作用如下:

  • -a--all:显示所有连线中的Socket。
  • -n--numeric:直接使用IP地址,而不通过域名服务器。
  • -t--tcp:显示TCP传输协议的连线状况。
  • -p--programs:显示正在使用Socket的程序识别码和程序名称。

测试

接下来测试一下通过localhost是否能使用Docker Engine API。

[root@izoq008ryseuupz ~]# curl http://localhost:2375/version
{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"19.03.13","Details":{"ApiVersion":"1.40","Arch":"amd64","BuildTime":"2020-09-16T17:02:21.000000000+00:00","Experimental":"false","GitCommit":"4484c46d9d","GoVersion":"go1.13.15","KernelVersion":"3.10.0-514.26.2.el7.x86_64","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"1.3.7","Details":{"GitCommit":"8fba4e9a7d01810a393d5d25a3621dc101981175"}},{"Name":"runc","Version":"1.0.0-rc10","Details":{"GitCommit":"dc9208a3303feef5b3839f4323d9beb36df0a9dd"}},{"Name":"docker-init","Version":"0.18.0","Details":{"GitCommit":"fec3683"}}],"Version":"19.03.13","ApiVersion":"1.40","MinAPIVersion":"1.12","GitCommit":"4484c46d9d","GoVersion":"go1.13.15","Os":"linux","Arch":"amd64","KernelVersion":"3.10.0-514.26.2.el7.x86_64","BuildTime":"2020-09-16T17:02:21.000000000+00:00"}

curl是常用的命令行工具,用来请求Web服务器。不带任何参数时,curl发出GET请求。

很显然可以通过localhost使用Docker Engine API。

再来测试一下远程通过主机IP能否使用Docker Engine API,请求http://ip:2375/version得到的页面如下图所示,很显然是可以的。

IDEA也是可以进行远程连接的。

可能的问题

如果远程访问不了,可能需要设置一下服务器的防火墙,应该是2375端口没有暴露出去,所以远程访问不了,博主是阿里云的服务器(Centos7.3)。

到此这篇关于Docker开启远程访问的实现方式的文章就介绍到这了,更多相关Docker 远程访问内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Docker之开启远程访问的实现

    有这么个需求,我需要通过eclipse的 mvn package docker:build 的方式来进行部署docker容器的时候,我们是window的环境,这时候,就需要一个远程的docker来进行部署服务. 打开/usr/lib/systemd/system/docker.service文件,修改ExecStart这行. vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0

  • pycharm与ssh远程访问服务器docker的详细教程

    pycharm与ssh远程访问服务器docker   背景:有些实验需要在服务器上完成,因此为了快速便利地在本地调试远程服务器上的代码,需要完成本地与远程服务器的直连.然而现阶段诸多服务器上安装有docker,通常需要在docker内完成调试代码,因此本文主要提供远程访问服务器docker的配置方法.   需要工具及说明: 一台远程服务器 pycharm:集成开发工具,在本地安装 ssh:远程访问工具,本地和远程服务器都要有 docker:容器,在远程服务器上 1.配置远程服务器docker 第

  • Docker开启远程访问的实现方式

    Docker守护进程套接字 Docker守护进程可以通过三种不同类型的套接字监听Docker Engine API请求:unix.tcp和fd. 默认情况下,在/var/run/docker.sock处创建一个unix域套接字(或IPC套接字),需要root权限或docker组成员身份. 如果需要远程访问Docker守护进程,则需要启用tcp套接字.请注意,默认设置提供了对Docker守护进程的未加密和未经身份验证的直接访问,应该使用内置的HTTPS加密套接字或在其前面放置一个安全的web代理来

  • Docker开启安全的TLS远程连接访问方式

    目录 1.1 不安全的远程访问方式 1.1.1 编辑docker.service文件: 1.1.2 重新加载Docker配置生效 1.1.3 警告! 2.1 建立基于TLS数字签名的安全连接 1.1 不安全的远程访问方式 1.1.1 编辑docker.service文件: vi /usr/lib/systemd/system/docker.service 找到 [Service] 节点,修改 ExecStart 属性,增加 -H tcp://0.0.0.0:2375 ExecStart=/usr

  • Docker开启远程安全访问的图文教程详解

    一.编辑docker.service文件 vi /usr/lib/systemd/system/docker.service 找到 [Service] 节点,修改 ExecStart 属性,增加 -H tcp://0.0.0.0:2375 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 这样相当于对外开放的是 2375 端口,当然也可以根据

  • Docker开启TLS和CA认证的方法步骤

    目录 一.生成证书 二.开启远程 三.远程连接 3.1 Jenkins连接 3.2 Portainer连接 前言:Docker直接开启2375端口是不安全的,别人只要连上之后就可以任意操作,下面是开启Docker的TLS和CA认证方法,并使用Jenkins和Portainer连接. 一.生成证书 查看服务器主机名 hostname auto-generate-docker-tls-ca.sh # !/bin/bash # 一键生成TLS和CA证书 # Create : 2021-08-25 #

  • 解决Redis开启远程访问及密码问题

    Redis开启远程访问及密码,具体介绍如下所示: 一.开启远程访问 1.开放端口 firewall-cmd --zone=public --add-port=6379 firewall-cmd --zone=public --add-port=6379 --permanent 2.查看已开放端口 firewall-cmd --list-port 3.修改配置文件 vim redis.conf 将bind 127.0.0.1 注释或者改为bind 0.0.0.0 将protected-mode y

  • SpringBoot构建Docker镜像的3种方式

    本文将介绍3种技术,通过 Maven 把 SpringBoot 应用构建成 Docker 镜像. (1)使用 spring-boot-maven-plugin 内置的 build-image. (2)使用 Google 的 jib-maven-plugin. (3)使用 dockerfle-maven-plugin. Spring Boot 应用 为了方便实践,需要一个 Spring Boot 项目. Demo 项目地址: https://github.com/davelms/medium-ar

  • 优化 Docker 镜像大小常见的方式

    平时我们构建的 Docker 镜像通常比较大,占用大量的磁盘空间,随着容器的大规模部署,同样也会浪费宝贵的带宽资源.本文将介绍几种常用的方法来优化 Docker 镜像大小,这里我们使用 Docker Hub 官方上的 Redis 镜像进行说明. 手动管理 我们能够直接想到的方法就是直接修改官方的 Redis 镜像 Dockerfile 文件,手动删除容器运行后不需要的组件,然后重新构建一个新镜像.这种方法理论上是可行的,但是容易出错,而且效果也不是特别明显.主要是不能和官方的镜像实时同步. 多阶

  • WIN10系统和Docker内部容器IP互通方式

    1.安装了Window版本的Docker之后,我们启动 Docker Quickstart Terminal ,我们会得到一个IP,我的为: 192.168.99.100 2.启动一个mysql镜像,并获取这个镜像的IP: 在开始的时候,从本机直接到172.17.0.2是网络不通的,但是我们本机能到 192.168.99.100,172.17.0.2到192.168.99.100也是通的,我们可以在本机配置一个到172.17.0.2通过192.168.99.100的路由: route add -

  • 详解SpringBoot构建Docker镜像的3种方式

    本文将介绍3种技术,通过 Maven 把 SpringBoot 应用构建成 Docker 镜像. (1)使用 spring-boot-maven-plugin 内置的 build-image. (2)使用 Google 的 jib-maven-plugin. (3)使用 dockerfle-maven-plugin. Spring Boot 应用 为了方便实践,需要一个 Spring Boot 项目. Demo 项目地址: https://github.com/davelms/medium-ar

随机推荐