微服务 Spring Cloud 6,用了这么多年Docker容器,殊不知你还有这么多弯弯绕

docker学习总结【微服务】 Docker容器可以映射到主机操作系统中的进程,这意味着它们比虚拟机更轻量级且更易于移植。Docker镜像还可以在不同的平台上运行,并且与容器无关。一致性和可重复性:Docker容器为所有开发人员提供相同的运行时环境,从而消除了“在我的机器上工作”的问题。制作Docker镜像是一个可重复过程,并且生成的镜像可以在任何地方运行。版本控制和管理:Docker镜像包含了整个应用程序及其依赖项,因此可以轻松地进行版本控制和管理,以确保每个部署实例都是相同的。隔离性。 阅读详情

在这里插入图片描述

大家好,我是哪吒。

单体应用拆分成微服务后,能够实现快速开发迭代,但因为小服务太多,导致测试和部署的成本提高。

单体应用中,将Spring Boot工程打包成一个war包,然后部署在Linux服务器的Tomcat中就可以了。

拆分成微服务后,修改一个需求,可能会涉及多个微服务,这个时候,被修改过的代码都需要重新测试、打包、部署、上线发布。无形之中,给现场运维人员增加了成倍的工作压力。

微服务通常会在共有云上创建ECS进行扩容,ECS通常只包含了基本的操作系统环境,没有包含运行java的环境jdk,就需要在ECS上安装jdk,而且每个服务依赖的jdk版本可能也不会相同,一般情况下,都会采用jdk8,但有些喜爱前言技术的项目经理,可能要试一下jdk21,毕竟也是一个长期稳定的大版本。

在这里插入图片描述

而容器技术可以解决上面的两个问题(代码部署难、缺环境)。

时下容器技术最火的当属Docker,很多小伙伴也用了多年,只知道它是容器技术,可以将程序和依赖打到Docker里,然后发布在Linux服务器中,就完成了程序的部署,一次构建、到处运行,很牛逼很,至于其它的,就不知道了,也不想知道~

一、神之容器 Docker

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的Linux容器解决方案。

一个完整的Docker由以下七个部分组成:

  1. Docker Client 客户端
  2. Docker Daemon 守护进程,提供Docker Server,用于接收Docker Client的请求,Docker Server 通过路由Router与分发调度,找到相应的 Handler 来执行请求;
  3. Docker Image 镜像,包含Distribution(分发)、Layer(层)、Image(镜像)、Registry(注册中心)、Reference(引用);
  4. Docker Driver 驱动,Docker架构中的驱动模块,它主要通过与Docker守护进程进行交互,实现对Docker容器执行环境的定制和管理;
  5. Docker Graph 内部数据库,Docker Graph是Docker中的一种数据结构,用于记录和跟踪Docker镜像和容器之间的关系;
  6. Libcontainer 函数库,Libcontainer是Docker的底层容器管理库,它提供了一组接口和函数,用于创建和管理容器。Libcontainer直接与内核交互,负责容器的命名空间、cgroup、网络设备等底层操作;
  7. Docker Container 容器,Docker Container是Docker中的容器实例,它是通过Driver和Libcontainer共同协作创建出来的。Driver提供了容器的运行环境定制,而Libcontainer则负责容器的具体创建和管理操作。

在这里插入图片描述

二、Docker架构图

  1. 用户使用 Docker Client(客户端) 与 Docker Daemon 建立通信,并发送请求给后者,客户端和守护程序之间通过REST API进行通信,可以使用UNIX套接字或网络接口;
  2. Docker Daemon(后台守护进程)提供Docker Server,用于接收Docker Client的请求,Docker Server 通过路由Router与分发调度,找到相应的 Handler 来执行请求,Docker Daemon提供Docker Engine,Engine是Docker 架构中的运行引擎,在Docker Engine中,一个Job可以被认为是内部最基本的工作执行单元。Docker可以做的每一项工作,都可以抽象为一个Job。例如,在容器内部运行一个进程,这是一个Job;创建一个新的容器,这也是一个Job。
  3. Docker Image 镜像,包含Distribution(分发)、Layer(层)、Image(镜像)、Registry(注册中心)、Reference(引用)。
  4. Docker Driver 驱动,Docker架构中的驱动模块,它主要通过与Docker守护进程进行交互,实现对Docker容器执行环境的定制和管理;
  5. 当需要容器镜像时,则从 Registry(注册中心) 中下载镜像,并通过镜像管理驱动 Graphdriver 将下载镜像以 Graph 的形式存储;
  6. Docker Graph 内部数据库,Docker Graph是Docker中的一种数据结构,用于记录和跟踪Docker镜像和容器之间的关系;
  7. 一个 Repository 表示某类镜像的仓库,同一个 Repository 内的镜像用 Tag 来区分,一个 Registry 包含多个Repository,一个 Repository 包含同类型的多个 Image,并存储着每一个容器镜像的具体信息; GraphDB是一个基于SQLite的小型图数据库,记录容器镜像之间的关系;
  8. rootfs是Docker容器的根文件系统,它位于bootfs之上,表现为Docker容器的根目录,包含基本的文件和目录。在Docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载”技术额外挂载一个“可写”层;
  9. 通过 Networkdriver 完成Docker容器网络环境的配置,其中包括Docker启动时为Docker环境创建网桥等功能;
  10. Docker Execdriver是Docker容器的执行驱动,负责创建容器运行命名空间,负责容器资源使用的统计与限制,负责容器内部进程的真正运行等;
  11. Libcontainer是Docker的底层容器管理库,它提供了一组接口和函数,用于创建和管理容器。Libcontainer直接与内核交互,负责容器的命名空间、cgroup、网络设备等底层操作;
  12. Docker Container是Docker中的容器实例,它是通过Driver和Libcontainer共同协作创建出来的。Driver提供了容器的运行环境定制,而Libcontainer则负责容器的具体创建和管理操作。Docker Container是Docker架构中服务交付的最终体现形式。实现“一次构建,到处运行”的目标,大大提高了应用程序的部署效率和可移植性。

在这里插入图片描述

1、Docker Client 客户端

Docker Client是Docker的客户端工具,也被称为Docker命令行界面(CLI)。它是用户与Docker平台进行交互的主要方式。

Docker Client 的主要作用如下:

  1. 用户交互界面:Docker Client提供了用户友好的命令行交互界面,用户可以通过输入命令来执行各种Docker操作,例如创建容器、启动容器、停止容器、构建镜像等。
  2. 容器管理:通过Docker Client,用户可以方便地管理Docker容器。可以创建新的容器、启动、停止、重启容器,并且还可以查看容器的日志、状态等信息。
  3. 镜像管理:Docker Client也允许用户管理Docker镜像。用户可以搜索、下载、构建、删除镜像等操作,以满足应用程序部署的需求。
  4. 资源配置:用户可以通过Docker Client配置容器的运行资源,例如CPU、内存等。这样可以确保容器在运行时具有合适的资源配置。
  5. 网络通信:Docker Client可以与Docker Daemon进行通信,发送请求并接收响应。它使用REST API或其他通信协议与Docker Daemon进行交互,从而实现对Docker容器的远程管理。

Docker Client是用户与Docker平台进行交互的重要工具。它提供了命令行界面,让用户能够方便地管理Docker容器和镜像,并进行资源配置和网络通信等操作。

2、Docker Daemon 守护进程

Docker Daemon是Docker的守护进程,它是Docker平台的后台服务组件,充当服务器角色。

Docker Daemon 的主要作用如下:

  1. 容器管理:Docker Daemon负责创建、启动、停止、删除和管理Docker容器。它接收来自Docker客户端的请求,并根据请求执行相应的容器管理操作。
  2. 镜像管理:Docker Daemon也管理Docker镜像。它可以下载、上传、构建和删除镜像,并管理镜像的版本控制和安全性。
  3. 网络资源管理:Docker Daemon负责创建和管理Docker容器的网络环境。它配置和管理容器的网络设置,确保容器之间的通信和互相访问。
  4. 数据卷管理:Docker Daemon还管理容器的数据卷,用于持久化存储容器中的数据,保证数据的可靠性和持久性。

Docker Daemon是Docker平台的核心组件,提供容器、镜像、网络和数据卷的管理功能。它扮演着守护进程的角色,确保Docker平台的正常运行和管理。

3、镜像(Image)

在Docker镜像中,Distribution、Layer、Image、Registry和Reference各自扮演了重要角色。

  1. Distribution(分发):通常涉及到Docker镜像的分发和运输。Docker镜像可以通过不同的方式进行分发,例如直接从Registry下载,或者通过特定的工具导入和导出;
  2. Layer(层):Docker镜像由多个layer层组成,每层都是一个只读的文件系统。这种分层设计可以实现共享和复用,提高效率。当镜像中的文件发生变化时,Docker只会下载发生变化的层,而不是整体镜像,节省了时间和宽带;
  3. Image(镜像):镜像是Docker的核心,它是运行容器的基础。镜像包含了运行应用程序的所有文件和依赖,是一个只读模板,可以通过镜像创建新的容器实例;
  4. Registry(注册中心):Registry是存储和管理Docker镜像的服务器。它是用户上传、下载、管理Docker镜像的地方。例如Dokcer Hub就是一个公共的Registry;
  5. Reference(引用):引用指的是Docker镜像的一种标识,通过引用,用户可以指定需要操作的特定镜像;

4、Docker Driver 驱动模块

Docker Driver是Docker的驱动模块,主要负责驱动Docker容器的运行。它通过与操作系统的交互,实现对Docker容器的创建、启动、运行和管理等操作。

Docker Driver 的主要作用如下:

  1. 容器创建与启动:Driver负责根据用户的指令创建新的容器实例,并启动它们。它会与底层操作系统交互,设置好容器运行所需的各种环境和资源。
  2. 容器运行环境定制:Driver可以根据用户的需求定制容器的运行环境。这包括网络配置、存储挂载、进程管理等,确保容器在特定的环境中按照预期运行。
  3. 容器状态管理:Driver维护着容器的状态信息,包括容器的运行状态、资源使用情况等。它可以提供容器状态的查询和监控功能,让用户了解容器的实时状态。
  4. 容器资源管理:Driver还负责管理容器的资源,如CPU、内存、磁盘空间等。它可以对容器使用的资源进行限制和控制,确保容器不会超出预设的资源限制。

Docker Driver是Docker中非常重要的组件,它通过与操作系统的交互,实现了Docker容器的创建、运行和管理等功能,为Docker平台的正常运行提供了底层支持。

在这里插入图片描述

5、Docker Graph内部数据库

Docker Graph是Docker中的一种数据结构,用于记录和跟踪Docker镜像和容器之间的关系。

Docker Graph 的主要作用如下:

  1. 关系追踪:Docker Graph能够记录容器和镜像之间的关系,包括哪个镜像被用来创建哪个容器,容器之间是否存在依赖关系等。这种关系追踪使得用户能够更好地理解和管理容器与镜像之间的关联。
  2. 资源管理:通过Docker Graph,用户可以更方便地进行资源管理,例如查找和删除不再需要的镜像和容器。它提供了一种全局视图,帮助用户了解整个Docker环境中的资源利用情况。
  3. 性能优化:Docker Graph可以提供一些性能方面的优化。通过分析和理解Graph中的关系,Docker可以智能地选择最合适的镜像层和缓存策略,从而提高镜像构建和容器启动的速度。

Docker Graph在Docker的较新版本中可能已经被替代或集成到其他组件中,因此具体实现和用法可能会因版本而异。

6、Docker Libcontainer函数库

Docker Libcontainer函数库中包含:

  1. namespaces:namespaces技术用于实现Docker容器之间的隔离。通过namespaces,可以实现网络、通信、文件、权限等对象的隔离,确保容器在独立的环境中运行,并且相互之间不会产生干扰。这种隔离机制有助于提高容器的安全性和稳定性。
  2. Cgroups:Cgroups(Control Groups)用于对Docker容器所占用的系统资源进行限制和管理。它可以控制容器的CPU、内存、磁盘I/O等资源的使用量,确保容器不会消耗过多的资源,从而防止系统过载或资源耗尽。
  3. netlink:netlink是Linux内核提供的一种用于内核与用户空间进程之间通信的机制。在Docker Libcontainer中,netlink主要用于完成Docker容器的网络环境配置和创建。它使得容器能够与网络进行交互,实现网络通信和功能。
  4. capabilities:capabilities机制用于在Docker容器内部对进程的权限进行更精细的控制。它将超级用户root的权限分割成各种不同的capabilities权限,允许根据需求将特定的权限授予容器内的进程。这种权限管理方式增强了容器的安全性,防止潜在的安全漏洞和攻击。

这些组件和技术在Libcontainer中协作,共同实现了Docker容器的隔离、资源管理、网络通信和权限控制等功能,为Docker平台的稳定性和安全性提供了重要支持。

7、Docker Container 容器实例

Docker Container是Docker中的容器实例,它是通过Driver和Libcontainer共同协作创建出来的。Driver提供了容器的运行环境定制,而Libcontainer则负责容器的具体创建和管理操作。Docker Container是Docker架构中服务交付的最终体现形式。实现“一次构建,到处运行”的目标,大大提高了应用程序的部署效率和可移植性。

Docker Container 的主要作用如下:

  1. 应用程序的隔离运行:Docker Container提供了轻量级、独立的运行环境,使得应用程序可以在隔离的容器中运行,避免不同应用之间的干扰和冲突;
  2. 环境一致性:因为Docker Container包含了应用程序及其依赖项,所以可以确保在任何环境中都能以相同的方式运行,提高了应用的可移植性和稳定性;
  3. 资源控制和隔离:Docker Container允许对每个容器进行资源限制,例如CPU、内存等。这样可以防止某个容器消耗过多资源,确保系统的稳定运行;
  4. 快速部署和扩展:Docker Container的轻量级特性使得它可以快速启动和停止,非常适合于云计算和微服务架构中的快速部署和横向扩展;
  5. 版本控制和回滚:通过标记和版本控制,可以轻松管理和回滚容器的版本,提高了应用程序的版本管理和部署的灵活性;
  6. 安全性增强:Docker Container提供了隔离的运行环境,可以减少系统漏洞和攻击面,提高应用程序的安全性。

Docker Container是Docker技术的核心组件之一,它提供了轻量级、隔离的运行环境,用于部署、运行和管理应用程序。它的出现改变了传统应用部署和运维的方式,提高了开发、测试、运维的效率和质量。

三、Docker安装

1、卸载Docker

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2、需要的安装包

yum install -y yum-utils

3、设置镜像仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

用国内的

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

更新软件包索引

yum mackecache fast

4、安装Docker相关

ce社区版,ee企业版,推荐安装企业版

yum install docker-ce docker-ce-cli containerd.io

在这里插入图片描述

5、启动Docker

systemctl start docker

6、使用docker version查看版本

在这里插入图片描述

7、启动hello world镜像

docker run hello-world

在这里插入图片描述

8、卸载

yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

四、run的流程和docker原理

1、run的流程

在这里插入图片描述

2、与传统虚拟化方式对比

这就是Docker为何比虚拟化更快的原因,Docker有着比虚拟机更少的抽象层,docker利用的是宿主机的内核,VM需要的是Guest OS。

在这里插入图片描述

五、Docker镜像常用命令

1、基本命令

docker version
docker info
docker 命令 --help #万能命令

docker images

在这里插入图片描述
解释:

  • REPOSITORY:镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像的ID
  • CREATE:镜像的创建时间
  • SIZE:镜像的大小

可选项

-a:列出全部的镜像
-q:只显示镜像的ID

2、搜索镜像

docker search

可选项
–filter-STATUS-3000 #搜索大于3000的

3、下载镜像

指定版本下载

docker pull 镜像名[:tag]

在这里插入图片描述

4、删除镜像

docker rmi -f 镜像id

六、docker容器常用命令

1、下载容器

docker pull centos

2、docker run [可选参数] image

参数说明:

  1. –name 容器名称
  2. -d 后台方式运行
  3. -it 使用交互方式运行,进入容器查看内容(例如:docker run -it centos /bin/bash)
  4. -p 指定容器的端口号 -p 8080:8080(主机端口:容器端口)

3、列出所有的运行的容器

docker ps [参数]

  1. -a 列出当前正在运行的容器
  2. -n 显示最近创建的容器
  3. -q 只显示容器的编号

例如:docker ps -aq 显示当前正在运行的容器的编号

4、退出容器

exit

5、删除容器

  1. docker rm 容器id 不能删除正在运行的容器
  2. docker rm -f $(docker ps -a) 删除所有的容器
  3. docker ps -a -q|xargs docker rm 删除所有的容器

6、启动和停止容器

  1. docker start 容器id
  2. docker restart 容器id
  3. docker stop 容器id
  4. docker kill 容器id 强制停止

7、进入当前正在运行的容器

  1. 方式一:docker exec -it 容器id /bin/bash 进入容器后开启一个新的终端(常用)
  2. 方式二:docker attach 容器id 进入容器当前正在执行的终端

8、从容器内拷贝文件到主机

docker cp 容器id:容器内路径 主机路径

例如:docker cp 容器id:/home/test.java /home

9、其它常用命令

(1)后台启动容器 -d

(2)查看日志命令

docker logs --help

显示指定行数的日志:

docker logs -tf --tail 10 容器id

-f:内容,,,-t:时间

例如:循环执行

docker run -d centos /bin/sh -c "while;do echo hello world;sleep 1;done"

(3)显示容器中的进行信息

查看docker内部的进程信息:docker top 容器id

(4)查看容器的元数据

docker inspect --help

显示容器的所有信息:

docker inspect 容器id

七、docker常用命令小结

常用命令命令含义
attach当前shell下attach连接指定运行镜像
build通过Dockerfile定制镜像
commit提交当前容器为新的镜像
cp从容器中拷贝指定文件或者目录到宿主机中
create创建一个新的容器,同run 但不启动容器
diff查看docker容器变化
events从docker服务获取容器实时事件
exec在已存在的容器上运行命令
export导出容器的内容流作为一个tar归档文件(对应import)
history展示一个镜像形成历史
images列出系统当前镜像
import从tar包中的内容创建一个新的文件系统映像(对应export)
info显示系统相关信息
inspect查看容器详细信息
kill强制停止指定docker容器
load从一个tar包中加载一个镜像(对应save)
login注册或者登陆一个docker源服务器
logout从当前Docker registry退出
logs输出当前容器日志信息
pause暂停容器
port查看映射端口对应的容器内部源端口
ps列出容器列表
pull从docker镜像源服务器拉取指定镜像或者库镜像
push推送指定镜像或者库镜像至docker源服务器
rename重命名容器
restart重启运行的容器
rm移除一个或者多个容器
rmi移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除)
run创建一个新的容器并运行一个命令
save保存一个镜像为一个tar包(对应load)
search在docker hub中搜索镜像
start启动容器
stats统计容器使用资源
stop停止容器
tag给镜像打标签
top查看容器中运行的进程信息
unpause取消暂停容器
version查看容器版本号
wait截取容器停止时的退出状态值

微服务 Spring Cloud系列

微服务 Spring Cloud 1,服务如何拆分?使用微服务的注意事项?

微服务 Spring Cloud 2,一文讲透微服务核心架构(注册中心、服务通信、服务监控、服务追踪、服务治理)

微服务 Spring Cloud 3,如何对微服务进行有效的监控?

微服务 Spring Cloud 4,分布式系统如何进行数据分区

微服务 Spring Cloud 5,一图说透Spring Cloud微服务架构


🏆哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师。

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

Docker容器化技术:微服务部署的革命 在现代软件开发领域,微服务架构已成为推动快速开发和创新的关键力量。Docker,作为一种前沿的容器化技术,为微服务架构的实施提供了强大的支撑,使得构建、分发和运行跨平台的应用变得前所未有地简单。通过容器化,Docker不仅优化了开发和部署流程,还为微服务架构带来了更高的效率和灵活性。本文将深入探讨Docker如何为微服务架构带来革命性的改变。 阅读详情

相关推荐

10 分钟理解微服务、容器和 Kubernetes及其关系

什么是微服务?你应该使用微服务吗?微服务与容器和 Kubernetes 有什么关系?如果这些事情在您的日常生活中不断出现,并且您需要在 10 分钟内进行概述,那么这篇博文适合您。从根本上讲,微服务只是一个运行在服务器或虚拟计算实例上并响应网络请求的计算机程序。这与典型的 Rails/Django/Node.js 应用程序有何不同?它根本上没有什么不同。事实上,您可能会发现您的组织中已经部署了十几个微服务。没有任何新的神奇技术使您的应用程序有资格称为微服务。

力哥讲技术 2561

微服务入门---Docker

微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了。

优快云_Admin0的博客 1646

ECB oracle——attack

基于ECB oracle的攻击方案前言什么是ECB方案步骤1.确定块大小和明文大小2.暴力破解求明文脚本代码 前言 参考文章:Breaking ECB by prepending your own message. 环境地址:ECB oracle 什么是ECB 分组密码中AES的一种模式(其他还有:CBC、ECB、CTR、OCF、CFB)如图每一块加密是分开的。 方案步骤 1.确定块大小和明文大小 先用一个字符"a"去encrypt返回32个字节的数据(64位16进制)依次用"aa",“aaa”…去en

weixin_44617902的博客 1311

Docker详解

Docker详解 一、Docker基础 1、Docker简介 Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互隔离,性能开销极低。 Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。 2、

李宥的博客 9万+

并网逆变器学习笔记5---三电平DPWM

三电平DPWM

圆桌骑士的博客 1万+

【ESP32开发】——开发环境搭建(VSCode+PlatformIO)

本章内容主要介绍ESP32的开发环境搭建(基于VSCode+PlatformIO)的流程与相应的注意事项,避免开发ESP32止于环境搭建!在项目的维护过程中,可以更好地管理和更新代码、调试问题,并且能够快速适应和采用新的功能、库或硬件平台。:VSCode 的代码提示和自动补全功能,以及 PlatformIO 的管理工具,都能帮助你编写规范、格式良好且易于阅读的代码。:Arduino 框架是一种简单、易用的嵌入式开发框架,适用于快速原型开发和小型项目。需要选择对应自己开发的开发板型号。

m0_61934621的博客 8417

微服务学习|初识Docker、使用Docker、自定义镜像、DockerCompose、Docker镜像仓库

Docker是一个快速交付应用、运行应用的技术:1.可以将程序及其依赖、运行环境一起打包为一个镜像可以迁移到任意Linux操作系统2.运行时利用沙箱机制形成隔离容器,各个应用互不干扰3.启动、移除都可以通过一行命令完成,方便快捷镜像是分层结构,每一层称为一个LayerDockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。1.Dockerfile的本质是一个文件,通过指令描述镜像的构建过程。

weixin_73149966的博客 804

STC8G1K08A 实战应用:从配置到功能实现

本文详细介绍了STC8G1K08A单片机的实战应用,从开发环境搭建、GPIO配置、ADC模块使用到定时器中断处理和PWM输出等核心功能。重点讲解了外设模块的协同工作配置技巧,并分享了实际项目开发中的经验教训,帮助开发者快速掌握STC8G1K08A的高效应用。

n4o5p6q7r的博客 391

微服务:Docker篇

微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题。

viperd的博客 1651

时序定江山,功耗写风骨——解读时序库lib文件的奥义【芯片设计 lib文件】

lib库,全称liberty library format file:它是Liberty时序文件的简称,使用 Liberty 语法来编写。它可以通过library compiler/dc转换成.db文件(database),供synopsis家的DC和PT使用,也可以通过spyglass的library compiler来生成sglib文件,供spyglass使用。他们是等价的,但db文件是二进制格式,人类不可读。

LogicYarn的博客 2602

QT开发串口程序与单片机通讯

如果有对象对这个信号感兴趣,想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。的内容,虽然实现的功能很简单,但是QT上位机开发的步骤基本就是这些步骤,通过这个基础实例把这些套路摸透我们就可以接着进行后续更多QT程序地开发学习了。QWidget类:所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏幕上绘制自己。我们上面运行的上位机都是在Qt Creator中编译运行的,如果我们需要把编写好的可执行文件发送给别人使用的话还需要进行打包。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 947

Docker的基本使用

相应的资料 链接:https://pan.baidu.com/s/1rXqV2xWSkx7S8dEKQd63mQ 提取码:1211 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 1.1....

山丘i 1398

WIN10系统下VS2019编译CloudCompare2.12.4

CloudCompare2.12.4

点云侠的博客 3143

docker-微服务篇

学习docker的前提:熟悉linux基本命令和熟悉git命令。是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。分层的镜像以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载。

客官不爱喝酒的博客 1075

大模型系列——一文看懂“提示词” vs “提示词工程” vs “上下文工程”

本文区分了AI领域的三个关键概念:提示词(Prompt)、提示词工程(Prompt Engineering)和上下文工程(Context Engineering)。提示词是直接输入给AI模型的指令文本;提示词工程则是系统化设计、测试和优化提示词的过程;而上下文工程是为AI构建动态上下文,提供恰当信息和工具的科学与艺术。文章通过翻译案例展示了提示词工程的迭代过程,并说明上下文工程在AI Agent中的核心作用——动态收集和组织必要信息。最后强调普通人只需掌握提示词编写,开发AI应用才需深入提示词工程,构建智能

2401_84052244的博客 750

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

微服务—Docker(部署)

docker

xujiangyu1的博客 3918

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【1】Docker详解与部署微服务实战

Docker详解与部署微服务实战

持续学习,坚持原创,分享技术笔记及经验。 3213

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

docker

沙盒机制,又称为沙箱(sandbox),是一种计算机安全领域中的技术,用于为运行中的程序提供隔离的环境。这种机制主要通过以下方式来实现:进程隔离。通过创建独立的进程来运行应用程序,每个进程拥有自己独立的内存空间和资源,从而确保应用程序的异常不会影响其他进程和系统的稳定性。权限控制。通过权限控制来限制应用程序对系统资源的访问,例如通过访问控制列表(ACL)或用户权限来限制应用程序对文件系统的访问,以防止数据泄漏或破坏。资源隔离。

weixin_65462805的博客 1747

微服务部署——Docker

springcloud组件——Docker

xian2h的博客 785

【docker容器&&微服务部署】

Docker技术 1 前言(思考) 我们之前是如何将项目发布到Linux服务器的? 大致步骤如下: 安装jdk 安装tomcat 将项目war包上传到tomcat的webapps下 修改配置文件 启动tomcat 这样看似没问题,其实我们想想,发一台机器还好,这几步就完成了,如果我们要将这个项目发布到N多台机器,那么我们是否需要在每个机器上都进行相同的步骤,并且要进行环境兼...

worn_xiao的博客 3563

Docker实战一 Docker安装卸载以及部署微服务

Docker 的安装卸载 docker容器内部安装vim、ping、ifconfig等指令 docker构建javaweb镜像 docker将自己的镜像发布到远程官方的镜像仓库里 docker容器与宿主机挂载目录

东风麦芽糖 1万+

SpringCloud与Docker的天作之合:深度解析与实战指南

Docker作为容器化技术的领头羊,凭借其轻量化、标准化的特点,将应用程序及其依赖封装为易于移植和部署的容器镜像。容器技术相较于传统虚拟机,大幅降低了资源消耗,提升了服务器利用率,并且保证了应用程序在不同环境下的运行一致性。

极客代码 1716

【步骤详解】Docker一键部署微服务详细教程

场景介绍整体架构如下整体服务说明配置文件提取pom文件定义属性 配置编译选项

m0_73088370的博客 7818

Docker 部署微服务项目

以谷粒学苑为例,使用 Docker 部署后端服务。

YZG ' BLOG 6742

黑马程序员微服务Docker实用篇

*数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像,就必须先了解镜像的结构才行。

weixin_63403986的博客 1428

docker 部署并运行一个微服务

将your_host_port替换为你想要将容器映射到的主机端口,将container_port替换为容器内微服务所监听的端口。将your_host_port替换为你想要将容器映射到的主机端口,将container_port替换为容器内微服务项目所监听的端口。构建Docker镜像:使用Docker命令构建Docker镜像。这将使用Dockerfile构建一个名为your_image_name的Docker镜像。这将使用Dockerfile构建一个名为your_image_name的Docker镜像。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 747
上一篇: 微服务 Spring Cloud 5,一图说透Spring Cloud微服务架构
下一篇: CopyOnWriteArrayList内存占用过多
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2953原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值