正是基于这些原因,我决定写这篇文章,详细介绍如何在 Ubuntu 环境中有效地管理和固定 Docker 版本,帮助你避免版本更新带来的各种意外问题。...查找 Docker 依赖软件包 我们可以使用 dpkg-query 命令来查询系统中已安装的软件包,并用 grep 筛选出 Docker 相关的内容: # dpkg-query -l | grep docker...我们可以这样继续筛选: #dpkg-query -l | grep docker | awk '{print $2}' | xargs -I {} apt-cache depends {} | grep..."$temp_file2" | sort | uniq | grep -E "docker|container" # 清理临时文件 rm "$temp_file" rm "$temp_file2" 执行之后...验证软件包是否锁定 命令执行完毕后,我们还可以执行命令验证软件包锁定是否成功: # apt-mark showhold containerd.io docker-buildx-plugin docker-ce
和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。...语法参数: # SYNOPSIS dpkg-query [option...] command # 参数 -l, --list [package-name-pattern...] : 列出与一个或多个模式匹配的所有已知包...-p, --print-avail [package-name...] : 显示有关包的详细信息,如/var/lib/dpkg/available中所示。...使用示例: # 示例1.列举出 libc6* 匹配到的包 ~$ dpkg-query -l 'libc6*' Desired=Unknown/Install/Remove/Purge/Hold | Status...~$ dpkg-query -L libpam-modules dpkg-query -L libpam-modules /etc/security/access.conf ....
正是基于这些原因,我决定写这篇文章,详细介绍如何在 Ubuntu 环境中有效地管理和固定 Docker 版本,帮助你避免版本更新带来的各种意外问题。...查找 Docker 依赖软件包我们可以使用 dpkg-query 命令来查询系统中已安装的软件包,并用 grep 筛选出 Docker 相关的内容:# dpkg-query -l | grep dockerii..."cat "$temp_file2" | sort | uniq | grep -E "docker|container"# 清理临时文件rm "$temp_file"rm "$temp_file2"执行之后...hold.docker-ce-rootless-extras set on hold.docker-compose-plugin set on hold.python3-docker set on hold.验证软件包是否锁定命令执行完毕后...,我们还可以执行命令验证软件包锁定是否成功:# apt-mark showholdcontainerd.iodocker-buildx-plugindocker-cedocker-ce-clidocker-ce-rootless-extrasdocker-compose-pluginpython3
由于此前我从未遇到过Chef,因此我需要在最短的时间内,找出一个可以使用Chef基础架构shell一定范围内所有敏感主机的方法。以下是我的实行过程。 注意:所有这些很可能都是从命令行执行的。...我通过Chef web interface获取了一个帐户,并且大部分时间都花在了GUI上。如果你知道如何在命令行上完成这些操作,你可以通过我的联系方式告知我。谢谢!...使用你的私钥,下载Chef server的证书并验证knife连接是否正常工作。使用以下命令来执行此操作。 ? 快速浏览可用的cookbooks,确保knife连接正常。 ?...成功执行后,我们将会获取到以下输出结果: ? 填充你的cookbook模板文件。下面所有你需要的都在recipes/default.rb中。 ? 填充metadata.rb文件。...请确认你的cookbook现在是否已存在于Chef服务器中。你可以在命令行或Web界面中执行以下操作。 ? 导航到网站上的“Cookbooks”列表。
如果觉得 dpkg 的参数过多, 不利于记忆的话, 完全可以使用 dpkg-query 进行 dpkg 数据库查询. 使用 dpkg-query 进行 dpkg 数据库查询....dpkg-query -s nano 查看系统中软件包状态, 支持模糊查询: dpkg -l or dpkg-query -l 查看某个文件的归属包: or $ dpkg -S nano 5....如果另一个版本的同一个包在新包安装前已经安装,执行旧包的postrm脚本。注意:执行postrm 脚本后执行新文件的preint脚本,因为写新文件的同时移除旧文件。 6). 配置软件包。...hold” | dpkg –set-selections 设置 的状态为 hlod (命令行方式) dpkg –get-selections “” 取的 的当前状态 (命令行方式) 支持通配符,如:...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
本文通过部署一套复杂系统为例,来描述如何在封闭网络环境下实现一键式部署。 解决方案 基于最主要的原因: "更轻松的迁移和扩展", 我们使用Docker来部署基础组件服务。...,而使用Chef引擎和Puppet时,都需要在其管理的服务器上安装客户端(虽然Chef声称其可以不安装,但其无代理agent-less版本支持的功能十分有限),Ansible则会充分利用现有的东西,而且没有其他任何要求...通俗的说Ansible的部署过程就是在一台或者几台服务器上,执行一系列的命令而已。...Ansible playbook是Ansible更为强大的配置管理组件,实现基于文本文件编排执行的多个任务,且多次重复执行。所以我们选择Ansible作为配置管理和自动化部署工具。...对于所有组件的升级,也比较容易,我们只需要将升级后的Docker镜像拷贝到内网,重新执行Ansible脚本即可实现基础服务的更新。
[Chef架构示意图] 本指南介绍了如何在各个Linode(VPS服务提供商)主机上创建和配置Chef服务器,虚拟工作站以及如何通过引导节点来运行chef客户端。...在 /home 目录下,创建一个.chef目录,用于存储私钥: mkdir .chef 通过执行chef-server-ctl命令来建用户。...Chef服务器并生成RSA密钥后之,您就可以开始配置各个工作站了,这些工作站将为Chef节点执行所有的主要工作。...,它的含义是每隔一小时(*/1含义是每小时而不是每天凌晨1点),执行一次chef-client(/usr/bin/chef-client)命令,action对应的create标识创建一个新的定时作业。..."/etc/chef/validation.pem"文件被validation.pem文件进行调用,当满足条件的时候会执行对应操作“删除命令”来移除该文件。
属性(Attributes): 用于定义节点上的特定配置信息,如软件的版本号、配置文件的路径等。...环境管理:管理不同的部署环境(如开发、测试、生产等),确保环境之间的设置一致。 持续交付:集成到CI/CD流水线,自动化代码从开发到生产的部署过程。...配置监控工具:自动部署和配置系统监控工具,如Nagios或Prometheus。 自动化备份:配置自动化的备份脚本,定期备份重要数据。...knife ssh 'name:*' 'sudo chef-client' #对所有节点执行chef-client命令。...2.chef-client: 是在客户机或节点上运行的客户端,它执行实际的配置任务。 sudo chef-client #在节点上手动运行Chef-client,应用最新的配置。
这篇文章讨论了如何在我们的环境中安装和配置软件,这个任务通常被称为服务器配置(Server Provisioning)。...据我所知,所有主流的配置工具都使用了基于安全传输层(如SSH)的shell命令或PowerShell(Chef可能是个例外)。即使你使用了配置工具,在某些时候也需要用到脚本。...因此,当你开始使用配置工具(如Chef或Ansible)时,学习如何使用基本的shell脚本也会为你带来很多好处。 你可能会问自己,为什么在shell脚本已经可以完成所有工作的同时还要学习配置工具?...这种比喻有点令人感到困惑,于是我决定去看一下其他工具,如Ansible。Ansible文档的第一页介绍了“playbook”的概念,而playbook包含一系列“play”。 那么,这些问题很重要吗?...默认情况下,`run_list`中的`recipe[COOKBOOK]`条目将执行`recipes/default.rb`。
Chef 是一款自动化服务器配置管理工具,可以对所管理的对象实行自动化配置,如系统管理,安装软件等。...可以接着在 workstation 上执行 node list 命令查看是否多了一个 node: # knife node list Chef 的使用 Chef 环境安装完成以后,我们来看看如何使用这套环境来进行配置管理...客户端必须用这一私钥执行上述签名过程,否则将无法建立与 Chef Server 的信任。 认证过程如下图所示, 图 1 Chef 认证流程 ?...一个典型的带有签名的客户端请求如清单 4 所示。...这样 Chef Server 就可以用 X-Ops-Sign 中指定的算法,这里为 SHA1,重新执行哈希过程以验证请求内容是否被第三方篡改过。
L test #查看已安装test.deb软件包安装的所有文件 dpkg -s test #查看test.deb软件包的详细信息 dpkg -S filepath#查看某个文件属于哪个deb包 dpkg-query.../bin$ which ls -l /bin/ls /bin$ dpkg-query -S /bin/ls coreutils: /bin/ls 如何获得包源码 最直接的做法,搜索引擎找这个包,可以找到...得到这三个文件之后,执行dpkg-source -x xxx.dsc ,可生成源码目录 xz -d xx.debian.tar.xz 生成xx.debian.tar,tar -xvf xx.debian.tar...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
本文通过部署一套复杂系统为例,来描述如何在封闭网络环境下实现一键式部署。 ---- 解决方案 基于最主要的原因: "更轻松的迁移和扩展", 我们使用Docker来部署基础组件服务。...,而使用Chef引擎和Puppet时,都需要在其管理的服务器上安装客户端(虽然Chef声称其可以不安装,但其无代理agent-less版本支持的功能十分有限),Ansible则会充分利用现有的东西,而且没有其他任何要求...通俗的说Ansible的部署过程就是在一台或者几台服务器上,执行一系列的命令而已。...Ansible playbook是Ansible更为强大的配置管理组件,实现基于文本文件编排执行的多个任务,且多次重复执行。所以我们选择Ansible作为配置管理和自动化部署工具。...对于所有组件的升级,也比较容易,我们只需要将升级后的Docker镜像拷贝到内网,重新执行Ansible脚本即可实现基础服务的更新。
最后,我们将引导一个节点,该节点将代表我们组织中将通过Chef管理的一个服务器。我们将使用我们配置的服务器和工作站执行此操作。 为简单起见,所有这三台机器都将使用Ubuntu 服务器。...在执行此操作之前,为Chef服务器设置域名以正确解析请求非常重要。您可以在此处查看有关设置域名的指南。...您将看到两个名为chef-validator和chef-webui的客户: [Chef 客户端] 单击与chef-validator客户端关联的“编辑”按钮。...如果我们查看chef-repo/.chef目录,我们应该看到一个knife配置文件和新用户的凭据: ls ~/chef-repo/.chef admin.pem chef-validator.pem...如果您对如何在Chef中使用角色和环境来控制服务器配置感兴趣,欢迎访问腾讯云查看更多相关内容。
资源配置采用键值对形式描述资源的期望状态,如确保用户存在、文件权限设置、服务运行状态等。...Workstation通常还配置版本控制系统(如Git),用于管理Cookbook的变更历史。Chef Node代表被管理的目标节点,可以是物理服务器、虚拟机或容器实例。...每个Node上运行Chef Client代理程序,负责与Chef Server通信,获取配置策略并在本机执行。...Chef Client可以配置为定期运行模式(默认30分钟一次),也可以通过Chef Push Jobs机制实时触发执行。...Chef同样采用客户端-服务器架构,但设计更加分布式。Chef Client定期(默认30分钟)从Chef Server拉取Recipe并执行。
查看安装的软件 dpkg -l 查看软件版本 dpkg -l | grep xxx # xxx为软件名称,例如 virtualbox 查看包是否安装 dpkg-query -l *package-name...* 例如 virtualbox dpkg -s package-name 例如 virtualbox 列出你系统中安装的所有包,同样可以通过grep来过滤割到更精确的包,如 virtualbox...package-name ,例如 virtualbox 卸载指定软件及其配置文件 sudo apt-get –purge remove xxx # xxx为软件名称,例如 virtualbox 查看正在执行的软件进程...xxx为软件名称,例如 virtualbox 查看进程信息 ps -aux 查看具体的某个进程 ps -aux | grep 进程服务名 或者 ps -ef |grep xxx 杀死正在执行的进程...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
在该例中,使用的是执行资源,其会调用一个执行一次的命令。command部分定义了apt-get update && apt-get upgrade -y指令,action操作设置为:run执行命令。...操作设置为install是因为在此步骤中执行了Apache安装操作,这里无需附加操作就可与运行安装操作。 3.允许Apache服务并设置重启时运行。...配置虚拟主机 此配置基于如何在Ubuntu 16.04上安装LAMP软件环境一文。 1.因为可能会需要配置多个网站,因此请使用Chef的属性功能来定义虚拟主机文件的特定内容。...因为需要启用MPM,所以我们将再次使用notifies命令,这次执行a2enmod mpm_event。.../chef目录,可以手动通过scp(可以在“ 设置Chef”指南中找到示例)来执行,也可以通过使用recipe和cookbook文件来更新。
命令模式封装了执行具体命令所需要的负载信息, 这样命令可以进一步扩展,如取消命令,撤销命令等。 命令模式是由三个组件构成,客户,调用者,接受者。...客户:一个实例化的对象 调用者:决定哪个方法被调用 接受者:实际命令的执行者 ?...img import time import threading class Chef(threading.Thread): def __init__(self,name):...init__(self,*items): self.items = items self.completed = False def execute(self,chef...): self.chef = chef chef.work_on_order(self) def cancel(self,): if self.chef.cancel
如第一部分所述,我们将创建两个实体Chef和Recipe。...; return; } Chef chef1 = new Chef("Gordon Ramsay"); Chef chef2 =...new Chef("Jamie Oliver"); Chef chef3 = new Chef("Anthony Bourdain"); List chef1Recipes...我们的 Spring Boot 应用程序生成的 JAR 文件是一个可执行存档,其中包含运行应用程序所需的所有必要组件和依赖项,例如编译代码、依赖项、嵌入式服务器和一些其他资源…… 我们可以简单地使用命令运行我们的应用程序...ENTRYPOINT ["java","-jar","/recipe.jar"] :第一部分ENTRYPOINT用于配置容器启动时将执行的命令,您可能猜到第二部分指定实际运行我们的应用程序的命令。
并且负责执行部署工作。...然后,我们在需要部署软件的目标服务器上,安装一个chef-client软件,这个软件负责接收Chef server的指令,执行安装部署和配置的工作,并且这个软件必须能在虚拟机、云实例、物理服务器上都能运行...,它们是内部装有一个工具叫做Chef-Client,这东西会自动到Chef-Server上获取自己的要执行命令清单 可以安装在任意系统上,包括windows DataBag 这是一个集中包含各种配置信息的数据区...Chef Client作为执行者访问这些API;Knife则以命令行模式执行这些Chef server的API;一套Web UI系统以图形方式执行Chef server API。...那些复杂的实现,如存储、搜索,都被这套标准的接口所封装了。
ubuntu安装和查看已安装 说明:由于图形化界面方法(如Add/Remove......,可执行文件会以*号的尾部标志。...一般依次执行./configure make sudo make install 即可完成安装。...如果觉得 dpkg 的参数过多, 不利于记忆的话, 完全可以使用 dpkg-query 进行 dpkg 数据库查询....nano or $ dpkg-query -s nano 查看系统中软件包状态, 支持模糊查询: $ dpkg -l or $dpkg-query -l 查看某个文件的归属包: $