使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术人员提供能力(配置管理员、测试人员),这种情况下图形界面就有必要了。提供图形界面的方式来操作docker也的确是比使用命令行的方式更直接、更简单。所以很多的厂商基于docker RESTful API向用户提供了用于docker容器镜像管理的用户图形界面,Portainer、Docker UI、Shipyard等等。本文不向大家介绍这些大家伙,介绍一个简单的IDEA插件,通过这个插件我们就可以在IDEA编辑器上管理docker容器及镜像

docker提供了远程服务的访问能力,即:docker REST API(通过RESTful HTTP API的方式,对外提供操作命令入口)。

一、开启docker远程访问服务

首先要明确的一点是,通过IDEA编辑器(远程工作主机)管理服务器上的docker镜像及容器,这属于远程服务访问(即通过网络访问REST API)。docker守护进程默认是不提供远程访问的,需要修改配置文件vim /usr/lib/systemd/system/docker.service,这是开启docker远程访问服务的第一步。0.0.0.0:2375表示在当前主机上所有网卡监听2375端口。

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

第二步重新加载配置文件并重启docker守护进程,并使用下方的命令检查是否能够正确提供远程访问服务。或者通过浏览器访问http://<docker宿主机ip>:2375/info也可以进行验证,有响应结果即正确,返回的是一个JSON的docker服务状态及配置信息。

#重新加载配置文件,并重启docker守护进程
systemctl daemon-reload && systemctl restart docker #查看端口是否开启,有一行记录显示2375端口被监听,即正确
netstat -nptl|grep 2375;

需要注意的是如果你的服务器上防火墙没有开放2375端口访问,请使用下面的命令开放2375端口(注意:下面的命令行适用于CentOS7、8发行版,如果你是其他的linux发行版,命令可能不一样)。

firewall-cmd --zone=public --add-port=2375/tcp --permanent;   #配置开放端口
firewall-cmd --reload; #重新加载配置

二、IDEA安装Dokcer插件

下面我们在远程工作主机的IDEA编辑器上安装插件,当然前提是你已经安装了IDEA编辑器。按照如下图所示的步骤安装docker插件,"File -> Settings ->Plugins ->搜索Docker -> install安装",插件安装完成之后通常需要重启IDEA编辑器。我的IDEA版本是2021.3,这个插件是默认集成的,不需要安装。你可能会搜索出很多的docker相关的插件,记住图中的鲸鱼图标,这个才是我们需要的。



配置Docker远程访问服务,如下图所示,在Engine API URL处填写tcp://<远程docker服务器IP>:2375 ,然后保存配置。

插件安装并保存配置,完成之后会出现一个新的Tab窗口,用于管理上述配置服务其上的Containers(容器)、Images(镜像)、Networks(网络)、Volumes(数据卷)。包含多少个容器,容器的运行状态,容器的数据卷、端口映射等信息都可以看到。镜像的基本信息、镜像删除、导入导出操作也都支持。我们还可以管理docker网络、管理数据卷,基本上几乎覆盖了所有的docker单机服务的管理功能。



所以说IDEA这个插件还是挺给力的,如果我们自己使用docker搭建一些环境,用它几乎是最方便的了。如果是管理企业级服务集群,还是需要更高级的图形界面管理工具,如rancher之类的。在文章的最后,笔者不得不说我们还遗漏了一个非常重要的内容,那就是docker远程对外提供HTTP RESTful API,如果不加上任何的安全措施是非常危险的行为 。后续笔者会介绍如何为docker远程访问服务添加证书,无证书的远程访问请求会被拒绝,同时使用HTTPS方式进行网络数据传输。

欢迎关注我的公告号:字母哥杂谈,回复003赠送作者专栏《docker修炼之道》的PDF版本,30余篇精品docker文章。字母哥博客:zimug.com

【docker专栏8】使用IDEA远程管理docker镜像及容器服务的更多相关文章

  1. 非节点主机通过内网远程管理docker swarm集群

    这是今天使用 docker swarm 遇到的一个问题,终于在睡觉前解决了,在这篇随笔中记录一下. 在 docker swarm 集群的 manager 节点上用 docker cli 命令可以正常管 ...

  2. 用 Portainer 远程管理 docker

    参考的官网地址为:https://portainer.readthedocs.io/en/stable/deployment.html 先更新Centos docker 镜像加速地址: curl -s ...

  3. Docker 基本概念(三)-生命周期详解(镜像、容器、仓库)

    Docker三大组件:镜像.容器.仓库.  一.镜像 1 从仓库获取镜像 #一.从仓库获取镜像,帮助命令:docker pull -help 命令:docker pull [选项] [docker R ...

  4. Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现

    前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇到一个问题,jenkins构建出来的镜像部署后,需要通过ip:port去访问,有什么更好的 ...

  5. 《Docker从入门到跑路》之镜像和容器的基本操作

    一.获取镜像 官方提供了一个公共镜像仓库Docker Hub,默认是从这上面获取镜像的. 搜素镜像使用docker search 命令: # docker search --help Usage: d ...

  6. Docker安装基本命令操作,带你了解镜像和容器的概念!

    上一章节我们了解了Docker的基本概念,以及相关原理.这一章节进行实操. <Docker这么火爆.章节一:带你详尽了解Docker容器的介绍及使用> 一.Docker安装 声明:Dock ...

  7. VSCode远程连接Docker

    一.Docker开启远程访问 [root@local host ~]# vi /lib/systemd/system/docker.service #修改ExecStart这行 ExecStart=/ ...

  8. Docker学习笔记之运行和管理容器

    0x00 概述 容器是基于容器技术所建立和运行的轻量级应用运行环境,它是 Docker 封装和管理应用程序或微服务的“集装箱”.在 Docker 中,容器算是最核心的部分了,掌握容器的操作也是 Doc ...

  9. [置顶] Docker学习总结(5)——超实用Docker入门学习教程

    Docker是什么 Docker是一种容器技术,它可以将应用和环境等进行打包,形成一个独立的,类似于iOS的APP形式的"应用",这个应用可以直接被分发到任意一个支持Docker的 ...

随机推荐

  1. PyTorch框架起步

    PyTorch框架基本处理操作 part1:pytorch简介与安装 CPU版本安装:pip install torch1.3.0+cpu torchvision0.4.1+cpu -f https: ...

  2. drools执行完某个规则后终止别的规则执行

    目录 1.背景 2.需求 3.实现方案 1.通过Fact判断 2.通过全局变量判断 3.通过halt方法 4.实现上述需求 4.1 drl 文件编写 4.2 运行结果 5.完整代码 1.背景 在我们开 ...

  3. Kafka到底有多高可靠?(RNG NB)

    在聊Kafka高可靠之前,先在评论区来波RNG NB好不好! 什么叫可靠性? 大家都知道,系统架构有三高:「高性能.高并发和高可用」,三者的重要性不言而喻. 对于任意系统,想要同时满足三高都是一件非常 ...

  4. 记一次 JDK SPI 配置不生效的问题 → 这么简单都不会,还是回家养猪吧

    开心一刻 今天去幼儿园接小侄女,路上聊起了天 小侄女:小叔,今天我吃东西被老师发现了 我:老师说了什么 小侄女:她说拿出来,跟小朋友一起分享 我:那你拿出来了吗 小侄女一脸可怜的看向我,说道:没有,我 ...

  5. HIPPO-4J 1.3.0 正式发布:支持 Dubbo、RibbitMQ、RocketMQ 框架线程池

    文章首发在公众号(龙台的技术笔记),之后同步到个人网站:xiaomage.info Hippo-4J 距离上一个版本 1.2.1 已经过去一个月的时间.在此期间,由 8 位贡献者 提交了 170+ c ...

  6. JSON.toJSONString(joinPoint.getArgs())报错getOutputStream() has already been called for this response

    nested exception is java.lang.IllegalStateException: It is illegal to call this method if the curren ...

  7. 29.MySQL高级SQL语句

    MySQL高级SQL语句 目录 MySQL高级SQL语句 创建两个表 SELECT DISTINCT WHERE AND OR IN BETWEEN 通配符 LIKE ORDER BY 函数 数学函数 ...

  8. 七、服务器硬件及RAID配置实战

    一.RAID磁盘阵列介绍 磁盘阵列的全名(Redundant Arrays of Inexpensive Disk,RAID),中文简称是独立冗余磁盘阵列.冗余(如果磁盘出现故障,可以保证数据不丢) ...

  9. Docker-配置华为云加速

    到网址点击立即使用 https://www.huaweicloud.com/intl/zh-cn/product/swr.html 登录后进入镜像服务 按要求操作即可 相关命令 vi /etc/doc ...

  10. vue2和vue3生命周期的区别

    概念 首先,我们了解一下"生命周期"这个词.通俗的来说,生命周期就是一个事务从出生到消失的过程.例如,一个人从出生到去世.在vue中,vue的生命周期是指,从创建vue对象到销毁v ...