写点什么

Docker 远程连接设置

作者:程序员欣宸
  • 2022 年 10 月 08 日
    广东
  • 本文字数:2730 字

    阅读完需:约 9 分钟

Docker远程连接设置

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos


  • 开启 Docker 远程连接后,在开发和学习时都能带来便利,但请不要将此方式用在外部网络环境,以免带来安全问题,下图是官方警告:

环境信息

  • 本次实战先在 CentOS 上的 Docker 设置,再在 Ubuntu 上也设置,首先要实战的 CentOS 环境信息如下:


  1. 操作系统:CentOS Linux release 7.6.1810

  2. Docker:1.13.1, build b2f74b2/1.13.1

设置

  • 编辑此文件:/lib/systemd/system/docker.service

  • 原来的设置:


ExecStart=/usr/bin/dockerd-current \          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \          --default-runtime=docker-runc \          --exec-opt native.cgroupdriver=systemd \          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \          --init-path=/usr/libexec/docker/docker-init-current \          --seccomp-profile=/etc/docker/seccomp.json \          $OPTIONS \          $DOCKER_STORAGE_OPTIONS \          $DOCKER_NETWORK_OPTIONS \          $ADD_REGISTRY \          $BLOCK_REGISTRY \          $INSECURE_REGISTRY \          $REGISTRIES
复制代码


  • 把 *ExecStart=/usr/bin/dockerd-current \* 改为 *ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \* ,如下:


ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \          --default-runtime=docker-runc \          --exec-opt native.cgroupdriver=systemd \          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \          --init-path=/usr/libexec/docker/docker-init-current \          --seccomp-profile=/etc/docker/seccomp.json \          $OPTIONS \          $DOCKER_STORAGE_OPTIONS \          $DOCKER_NETWORK_OPTIONS \          $ADD_REGISTRY \          $BLOCK_REGISTRY \          $INSECURE_REGISTRY \          $REGISTRIES
复制代码


  • 修改完毕后保存退出;

  • 重新加载配并重启 docker:


systemctl daemon-reload && systemctl restart docker
复制代码


  • 现在设置完毕了,来验证设置是否生效;

  • 先在本机试试 docke 服务是否正常,如下,本机访问一切正常:


[root@maven ~]# docker imagesREPOSITORY                                  TAG                   IMAGE ID            CREATED             SIZEbolingcavalry/nacosconfigdemo               1.0-SNAPSHOT          ed524b78f80b        5 days ago          125 MBbolingcavalry/nacosserver                   0.0.1                 9ab34ff860d8        3 weeks ago         156 MBdocker.io/openjdk                           8u212-jdk-stretch     03b20c1fa768        6 weeks ago         488 MBdocker.io/openjdk                           8u201-jdk-alpine3.9   3675b9f543c5        4 months ago        105 MBdocker.io/fabric8/java-jboss-openjdk8-jdk   1.3                   c9d7e2e7b917        20 months ago       436 MB
复制代码


  • 本机 IP 地址是 192.168.121.131,现在尝试从另一台装有 docker 的机器上测试远程访问本机,命令是 docker -H tcp://192.168.121.131:2375 images ,如下所示,一切正常:


[root@centos7 ~]# docker -H tcp://192.168.121.131:2375 imagesREPOSITORY                                  TAG                   IMAGE ID            CREATED             SIZEbolingcavalry/nacosconfigdemo               1.0-SNAPSHOT          ed524b78f80b        5 days ago          125 MBbolingcavalry/nacosserver                   0.0.1                 9ab34ff860d8        3 weeks ago         156 MBdocker.io/openjdk                           8u212-jdk-stretch     03b20c1fa768        6 weeks ago         488 MBdocker.io/openjdk                           8u201-jdk-alpine3.9   3675b9f543c5        4 months ago        105 MBdocker.io/fabric8/java-jboss-openjdk8-jdk   1.3                   c9d7e2e7b917        20 months ago       436 MB
复制代码


  • 如果您觉得每次远程命令时都输入 -H tcp://192.168.121.131:2375 很麻烦,也可以将远程 docker 的 IP 信息存入环境变量 DOCKER_HOST="tcp://192.168.121.131:2375" ,这样执行 docker 命令不带 IP 地址参数也会远程连接:


[root@centos7 ~]# export DOCKER_HOST="tcp://192.168.121.131:2375"[root@centos7 ~]# docker imagesREPOSITORY                                  TAG                   IMAGE ID            CREATED             SIZEbolingcavalry/nacosconfigdemo               1.0-SNAPSHOT          ed524b78f80b        5 days ago          125 MBbolingcavalry/nacosserver                   0.0.1                 9ab34ff860d8        3 weeks ago         156 MBdocker.io/openjdk                           8u212-jdk-stretch     03b20c1fa768        6 weeks ago         488 MBdocker.io/openjdk                           8u201-jdk-alpine3.9   3675b9f543c5        4 months ago        105 MBdocker.io/fabric8/java-jboss-openjdk8-jdk   1.3                   c9d7e2e7b917        20 months ago       436 MB
复制代码

Ubuntu 上的设置

  • Ubuntu 上的设置和 CentOS 略有不同,这里也一并说明:

  • 环境:


  1. 操作系统:Ubuntu 18.04.2 LTS

  2. Docker:19.03.1(Community)


  • 步骤:


  1. 检查文件夹 /etc/systemd/system/docker.service.d/ 是否存在,如果没有就创建;

  2. 在文件夹 /etc/systemd/system/docker.service.d/ 下新建文件 override.conf ,内容如下:


[Service]  ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=alway
复制代码


  • 重新加载配置,再重启 docker 服务:


systemctl daemon-reload && systemctl restart docker.service
复制代码


  • 现在 Ubuntu 上的 Docker 开启远程服务成功,可以像前面的步骤那样验证了。

  • 至此,Docker 远程连接的设置和验证就完成了,再次强调:此设置方式仅用于开发和学习,不要在公共网络这样设置,以免此 Docker 被其他未知的客户端远程连上,引发安全问题。

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 13 小时前阅读数: 3
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
Docker远程连接设置_Docker_程序员欣宸_InfoQ写作社区