Docker Desktop可视化Docker容器化环境快速部署与管理的绝佳方案

Java技术 潘老师 9个月前 (08-12) 447 ℃ (0) 扫码查看

Docker Desktop可视化可以帮助我们实现Docker容器化环境快速部署与管理,这是一个绝佳的方案。有时候我们必须在本地搭建开发环境,例如在探索新技术时,或是为公司项目创建一个类似环境,以便轻松进行调试和修改。

开发环境可能涵盖诸如 MySQLRedisNginx、MQ、Elasticsearch 等等,今天可能使用 MySQL,明天则可能转向 PostgreSQL。然而,如果为每个需求都在本地手动安装,势必繁琐无比。更甚的是,安装过程中还可能遇到各种问题,让人感到相当头疼。

那么,是否存在一种迅速且优雅的解决方案呢?

正是要介绍的这个,Docker。时至今日,Docker 早已不再是新技术,甚至可以称得上是一项广为流行的技术方案。

我还记得,我首次开始使用 Docker 已经是在 2015 年,如今已经过去了近8年的时间。不禁感慨时光飞逝,转瞬即逝。

当时,我向许多同学和同事推荐了 Docker。我只是简单地告诉他们:“这个工具可以在本地快速搭建开发环境,非常方便”。然而,我当时却没有想到它会发展成今天这样的规模。

如果你是资深开发人员,我相信你早就开始使用了。而如果你是新手,那么现在也是开始使用的好时机。这不仅可以节省环境搭建的时间,还可以借此机会学习。毕竟,如今容器化部署方式非常普遍,多了解一些相关知识仍然非常有必要。

Docker 原理和基础命令

基本原理

在掌握任何技术之前,深入了解其技术原理是至关重要的,这样才能在使用过程中游刃有余。

Docker 的开发实现基于 Google 公司推出的 Go 语言,它利用了 Linux 内核的一些关键技术,如 cgroup、namespace 以及 OverlayFS 类的联合文件系统等。这些技术将进程进行封装和隔离,形成了一种操作系统层面的虚拟化技术。由于这些被隔离的进程彼此独立,不受宿主系统或其他隔离进程的影响,因此被称为容器。

常常将 Docker 与虚拟机进行比较,因为它们在使用和功能上有相似之处,即在一台物理机上运行多个“虚拟系统”(可以这样理解)。然而,如果从使用层面来看,你完全可以将 Docker 视为虚拟机的替代品。但实际上,它们的底层技术原理却截然不同。

假设你现在能够身临其境,站在 Docker 和虚拟机内部,从内向外看。你会发现,虚拟机拥有自己的“虚拟 CPU”、内存和硬盘,紧接着才是宿主机的 CPU、硬盘和内存等。然而,当你站在 Docker 容器内部向外看,你会发现,无论你身处宿主机上的哪个容器中,你所看到的都是宿主机的 CPU、硬盘和内存等资源。这说明 Docker 容器直接使用宿主机的资源作为自己的资源,因此每个容器的硬件配置都是一致的。而虚拟机则完全虚拟出一整套硬件系统。

这种技术差异是 Docker 和虚拟机之间本质上不同的表现,也是 Docker 在资源利用效率和快速部署等方面脱颖而出的关键之处。

基础命令

Dokcer 的命令有一大堆,但是常用的就那几个。

镜像相关

获取镜像

docker pull 镜像名称

查看镜像列表

docker image ls

容器相关

查看容器

docker ps -a

新建并启动容器

sudo docker run -t -i ubuntu:12.04  /bin/bash

进入容器

docker exec -it 容器id bash

因为本文不是 Docker 的教程,所以只是抛砖引玉,具体的教程和文档网上到处都是。

安装 Docker Desktop

接下来,我们将进入实际操作阶段,利用 Docker 快速构建本地环境。

在这个过程中,有一些可视化的 Docker 客户端可以供我们使用,这些客户端可以更方便、更直观地管理镜像和容器。当然,如果你对 Docker 命令行非常熟悉,也可以完全依赖命令行进行操作。

对于我个人而言,我并不是那么专业,很难记住所有的参数。因此,我选择安装了 Docker Desktop,这是官方推出的客户端。它兼容 Mac、Linux 和 Windows 等多个操作系统平台。考虑到我在大部分情况下使用的是 Mac,偶尔也需要在 Windows 上操作,Docker Desktop 成为了我首选的工具。

如果你只在 Mac 系统上工作,也可以考虑安装 OrbStack。据说,它比 Docker Desktop 更加流畅,是一个值得尝试的选项。

总之,选择一个适合自己需求的 Docker 客户端能够极大地提升你的工作效率,让环境搭建和管理变得更加轻松愉快。

下载安装

访问 Docker Desktop 官网 

下载完一键安装就可以了,Docker 环境直接帮你装好了,省心省事儿。下面是它的控制台界面。左侧导航可以查看镜像列表、容器列表、映射的Volumes。

我们在命令行输入 docker -v,如果出现正确的版本号,说明 docker服务已经安装正常了。

Docker version 24.0.2, build cb74dfc

接下来有一件事儿是必须要做的,那就是设置国内镜像源,道理大家都懂,你要是用国外的镜像源,一天都不一定能搞下来一个。

点击「设置」按钮,在左侧选择「Docker Engine」

,然后在右侧的配置框中添加如下配置,加到最下面即可:

"registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com/"
  ]

加完后,点击「Apply & restart」,这时候会重启 Docker 服务。

安装一个服务

诸如 MySQL、Nginx、Redis 和 Zookeeper 这些服务都是我们常常需要使用的,而每个服务都可以按照类似的方式进行安装。无论你的项目需要多少种服务,只需一个一个地进行安装,操作非常迅速。

最近,我决定学习一下 PostgreSQL。为了省去繁琐的本地安装步骤,我选择直接在 Docker 容器中启动一个 PostgreSQL 实例。当然,对于像数据库这类 I/O 密集型应用来说,容器化并不是最佳选择,但在本地开发和测试阶段并不影响。

在 Docker 的搜索框中输入关键词,即可查找相应的镜像。例如,我输入 “PostgreSQL”。

搜索结果会显示多个镜像,我通常会选择第一个,也就是下载量最大的那个。

你可以选择执行 pull 命令,即拉取镜像,也可以直接使用 run 命令,这将拉取镜像并启动容器。

通常,我倾向于直接使用 run 命令,只需点击一下运行按钮,稍等片刻。由于我之前已经设置了国内镜像源,下载速度非常快,只需十几秒钟即可完成。(具体速度取决于网络状况,因为需要下载镜像文件,有些应用的镜像大小可能超过百兆)

镜像下载完成后,由于我选择了 run 命令,容器会立即启动,并展示出启动参数界面。

设置镜像名称

容器名称(Container name)就是为了我们一看到它就知道是干什么的,用来方便管理的,我就直接命名为 PostgreSQL了。

设置端口映射(Ports)

每个服务都有自己的端口,比如 MySQL 的默认端口是3306。这个端口是在容器内部用于服务的启动端口。然而,我们最终需要通过宿主机来访问这些服务。为了实现这个目标,我们需要将容器内的端口与宿主机的端口进行绑定,这就是所谓的端口映射。通过端口映射,我们可以通过宿主机的端口来访问容器内的服务端口。例如,我可以将 MySQL 容器的3306端口映射到宿主机的13306端口。然后,当我需要设置数据库连接时,只需使用本机的IP地址和13306端口,即可访问 MySQL 容器中的服务。

对于我的 PostgreSQL 容器,我将容器内的5432端口与本机的15432端口进行了绑定。这样一来,我可以使用15432作为连接端口。通过这种方式,我能够轻松地连接到运行在容器内的 PostgreSQL 服务。

目录映射(Volumes)

在许多服务中,数据存储是一个重要的需求。然而,由于容器实际上是运行在宿主机上的,所以我们需要将容器内的某些目录映射到宿主机上的相应目录中。这个过程被称为目录映射。通过目录映射,我们可以在容器内部操作数据,同时在宿主机上也能够方便地访问相应的数据。

以 Nginx 为例,我们可以将 Nginx 容器内的 /etc/nginx 目录映射到宿主机上的 /apps/nginx/ 目录。这样一来,当我在宿主机上访问 /apps/nginx 目录时,就可以看到 Nginx 容器内的配置文件。这使得对配置文件的修改在宿主机和容器之间保持同步,非常方便。

在我的 PostgreSQL 容器中,我将 /etc/postgresql/postgresql.conf 配置文件映射到了我本地的一个目录上。这意味着,我可以在宿主机上编辑这个文件,然后容器内的配置也会随之更新。

环境变量

在启动服务时,常常需要配置各种启动变量。这些变量可以通过环境变量的方式进行配置,以便在启动过程中使用。例如,如果要启动一个 Java JAR 包,可能需要配置 JVM 相关的参数,这些参数可以放到环境变量中,在启动时供程序使用。

对于 PostgreSQL 这类服务,通常需要设置密码。这时,我们可以将密码作为一个环境变量(比如 POSTGRES_PASSWORD)进行设置。

一旦所有配置都设置好了,只需点击 “run” 按钮,就可以启动容器了。

在容器启动后,你会看到相关的日志信息被打印出来,显示容器正在运行。

通过点击左侧的 “Containers”,你可以看到已经启动的容器以及它们的基本配置信息。

此时,你可以使用客户端来进行连接操作。

除此之外,你还可以在容器的详细信息中查看内部文件、状态、配置信息和日志等内容。甚至还可以通过命令行进入容器的内部,进行进一步的调试和操作。

这些步骤和操作使得 Docker 容器的管理和监控变得更加方便和可控。

总结

在初次使用 Docker 时,可能会花费一些时间来熟悉操作,但一旦掌握了基本流程,你会发现它远比直接在本地进行安装和配置要快得多。尤其是对于一些繁琐的软件安装和配置任务,使用 Docker 可以大大减少不必要的时间浪费。

此外,许多开源的框架和应用都提供了 Docker 版本,这使得验证和使用这些框架、应用变得非常迅速。一旦你掌握了 Docker 这个工具,你可以轻松地在你的开发环境中安装并使用这些框架和应用,这对于提升用户体验来说,是一个质的飞跃。

总之,通过使用 Docker,你可以以一种更加高效、可靠的方式来搭建、管理和测试不同的环境和应用程序,这将为你的开发流程带来巨大的改善。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/8076.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】