微服务集大成者——Docker

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 什么是Docker?docker_logo.pngDocker 是一个开源的应用容器引擎。它支持将软件、软件的依赖、以及软件的运行环境一起打包成一个镜像文件;将镜像发布出去,其他使用者可以直接使用这个镜像。

什么是Docker?

img_58163520542dc2c5accf3f6e01ca8712.png
docker_logo.png

Docker 是一个开源的应用容器引擎。它支持将软件、软件的依赖、以及软件的运行环境一起打包成一个镜像文件;将镜像发布出去,其他使用者可以直接使用这个镜像。

这就解决了同一份软件在不同机器上,重复进行复杂的环境配置问题。Docker在打包时,把原始环境一模一样地复制过来,使用者直接运行Docker镜像即可。

环境配置如此麻烦,换一台机器,就要重来一次。在Docker容器化技术之前,这个问题也一直存在,也出现了物理虚拟机的技术。

虚拟机(virtual machine)就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统,比如在 Windows 系统里面运行 Linux 系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。
虽然用户可以通过虚拟机还原软件的原始环境。但是,这个方案有几个缺点:资源占用多、冗余步骤多、启动慢。

因此出现了Linux 容器(Linux Containers,缩写为 LXC)另一种虚拟化技术,Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的镜像文件中。运行这个文件,就会生成一个虚拟容器(进程)。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
由于容器是进程级别的,相比虚拟机有很多优势:启动快、资源占用小、体积小。

Docker能做什么?

Docker 是一个容器工具,提供虚拟环境。它改变了我们对软件的认识。

站在 Docker 的角度,软件就是容器的组合:业务逻辑容器、数据库容器、储存容器、队列容器......Docker 使得软件可以拆分成若干个标准化容器,然后像搭积木一样组合起来。


img_1179795d45528acb90c31438f000c242.png
jimu.png

这正是微服务(micro services)的思想:软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层。

微服务很适合用 Docker 容器实现,每个容器承载一个服务。一台计算机同时运行多个容器,从而就能很轻松地模拟出复杂的微服务架构。

Docker核心概念

  • Docker客户端(Client):Docker 客户端通过命令行或者其他工具使用 Docker API 和Docker主机进行交互。
  • Docker主机(Host):安装了Docker程序的机器。
  • Docker仓库(Registry):用来保存镜像,类似于maven中央仓库。
  • Docker镜像(Images):是用于创建 Docker 容器的模板,放在Docker仓库当中。
  • Docker容器(Container):独立运行的一个或一组应用。


    img_75a9cfb25681f07376c1b3ada38844b6.png
    jiagou.png

架构解析:
最左边Client就是客户端,也就是需要使用Docker容器的人;Client在自己机器上安装运行所需要的docker镜像,类似于Maven管理依赖一样,Docker也会是先去本地(DOCKER_HOST)去寻找,如果没有,就去中央仓库Registry拉取。

比如:我要实现一个简单的电商网站,实现完业务代码后用Dockerfile做成Docker镜像,然后从docker中央仓库拉取mysql、redis、mq的官方镜像,和自己的业务镜像一起组装成一个软件整体。

像mysql、redis、nginx这些开源公共的组件,官方都有将其做成Docker镜像,并发布在Docker Registry中,供广大开发者使用。我们自己实现的一些组件,也能按Dockerfile规范做成Docker镜像,发布出去供其他人使用。

Dockerfile,其实就是生成docker镜像的模板文件,包含很多指令。

Docker仓库分为公共的和私人的,公共的Docker仓库可以访问https://hub.docker.com进行查看。


Docker安装

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。

安装请参考官方文档。

安装完成后,运行下面的命令,验证是否安装成功:docker version


Docker(客户端)常用命令

  • 镜像操作


    img_02a04056d7dd724c794bd9831234b865.png
    image.png
  • 容器操作

1、搜索镜像
[root@localhost ~]# docker search tomcat
2、拉取镜像
[root@localhost ~]# docker pull tomcat
3、根据镜像启动容器
docker run --name mytomcat -d tomcat:latest
4、docker ps  
查看运行中的容器
5、 停止运行中的容器
docker stop  容器的id
6、查看所有的容器
docker ps -a
7、启动容器
docker start 容器id
8、删除一个容器
 docker rm 容器id
9、启动一个做了端口映射的tomcat
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
-d:后台运行
-p: 将主机的端口映射到容器的一个端口    主机端口:容器内部的端口

10、查看容器的日志
docker logs container-name/container-id

更多命令参看
https://docs.docker.com/engine/reference/commandline/docker/
可以参考每一个镜像的文档
注意,在Docker中启动一个应用时,一定要做端口映射。不然客户端是无法访问到主机中的Docker容器。

使用Docker的步骤

1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;

目录
相关文章
|
1月前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
2月前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
13天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
74 24
|
15天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
91 6
|
1月前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
1月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
1月前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
1月前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
62 1
|
1月前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
60 1
|
2月前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
106 7