当前位置: 首页 > news >正文

docker相关知识

docker-compose

https://www.runoob.com/docker/docker-compose.html

Compose 使用的三个步骤:

使用 Dockerfile 定义应用程序的环境。

使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

最后,执行 docker-compose up 命令来启动并运行整个应用程序。

docker如何把自己的容器输出到一个新的镜像?

一旦你对容器做出所需的修改,你可以使用 docker commit 命令将容器保存为一个新的镜像。在容器修改后,你可以执行以下命令:

docker commit <container_id_or_name> new-image-name:tag
<container_id_or_name> 是你要基于其创建新镜像的容器的 ID 或名称。
new-image-name 是你想要给新镜像命名的名称。
tag 是标签,用于区分不同的镜像版本。
例如:docker commit my-container new-image:latest

docker运维

kubectl run -i --tty busybox --image=busybox --restart=Never – sh

1.根据基础镜像,生成新镜像,基于镜像运行一个容器,修改容器内容,重新Commit生成新镜像
docker pull centos:latest
docker run -it centos /bin/bash
yum install wget/vim等命令
docker commit 2ef48c7e3da0 centos:shiying生成新镜像
docker commit -m=“首次提交” -a=“一灰灰Blog” dd85eb055fe8 centos:shiying

注意:运行 yum install wget/vim等命令会报错,因为centos:centos8 作为虚拟机来测试linux命令,由于Centos8于2021年年底停止了服务,在使用yum源安装时候
Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist

解决方式1
将镜像从 mirror.centos.org 更改为 vault.centos.org

进入目录

cd /etc/yum.repos.d/
修改镜像

sed -i ‘s/mirrorlist/#mirrorlist/g’ /etc/yum.repos.d/CentOS-* &&
sed -i ‘s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g’ /etc/yum.repos.d/CentOS-* &&
yum makecache &&
yum update -y

现在可以正常安装vim了:yum -y install vim

解决方式2
更换镜像版本, 使用centos:centos7

docker commit {容器ID} {镜像名称}

docker run -i -t -d --name test_command centos:shiying
• 其中关键参数为-d,指定容器运行与前台或者后台,不加上时前台
• -i: 打开 STDIN,用于控制台交互
• -t: 支持终端登录

2.获取容器所有信息
docker exec -it test_command /bin/bash
docker inspect test_command
docker logs -f -t --since=“2019-05-11” --tail=10 test_command

将当前目录的preinstall_check_cloud.sh文件拷贝到容器的 /tmp 目录下

docker cp preinstall_check_cloud.sh test_command:/tmp

将容器的/tmp/ks-script-4luisyla目录拷贝到当前目录下

docker cp test_command:/tmp/ks-script-4luisyla ./

增加组件:
docker cp ./ mynodered:/usr/src/node-red/node_modules/@ali/node-red-contrib-rocketmq

DockerFile指令语法:

FROM 引用基础镜像
ARG 构建参数,ARG指令定义了一个变量,ARG指令定义的参数,在docker build命令中以–build-arg 形式赋值。
ENV 设置环境变量,设置的变量在容器运行时保持,可以在Run 指令中使用
区别:
ARG指令定义了用户可以在编译时或者运行时传递的变量
ENV指令是在dockerfile里面设置环境变量,不能在编译时或运行时传递

RUN 在镜像中执行的命令,每条 RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用 \ 来换行
COPY 宿主机复制文件到容器中
ADD 与COPY指令类似,唯一的不同点是: 对于ADD指令,如果文件是可识别的压缩格式, 则Docker会帮忙解压缩

——容器启动时执行指令——
WORKDIR 为 RUN、CMD、ENTRYPOINT 指令配置工作目录
ENTRYPOINT容器启动后执行的命令,在一个Dockerfile文件中,当出现多个ENTRYPOINT 时只有最后一次有效,ENTRYPOINT [“/home/admin/start.sh”]
CMD 指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令,如果有多条,则只有最后一条会被执行。
EXPOSE 容器需要映射到宿主机器的端口
VOLUME 声明了容器中的目录作为匿名卷,并且我们以这个镜像run了一个容器的时候,docker会在安装目录下的指定目录下面生成一个目录来绑定容器的匿名卷(这个指定目录不同版本的docker会有所不同),我当前的目录为:/var/lib/docker/volumes/{容器ID}
总结: volume只是指定了一个目录,用以在用户忘记启动时指定-v参数也可以保证容器的正常运行。比如mysql,你不能说用户启动时没有指定-v,然后删了容器,就把mysql的数据文件都删了,那样生产上是会出大事故的,所以mysql的dockerfile里面就需要配置volume,这样即使用户没有指定-v,容器被删后也不会导致数据文件都不在了。还是可以恢复的。

例子:

FROM registry.cn-beijing.aliyuncs.com/aihub/edgejdk:8-jdk-alpine
COPY ./target/aies-cluster.jar /app/aies-cluster.jar
COPY ./src/main/resources/work/.sh /app/images/
RUN chmod +x /app/images/
.sh
WORKDIR /app
ENTRYPOINT [“java”,“-jar”,“aies-cluster.jar”]

FROM nodered/node-red

You should add extra nodes via your package.json file but you can also add them here:

WORKDIR /usr/src/node-red
RUN npm install node-red-node-smooth
RUN npm install node-red-contrib-kafka-client
RUN npm install node-red-contrib-aliyun-datahub
RUN npm install node-red-contrib-aliyun-oss
RUN npm install node-red-node-mysql

镜像和容器的关系以及文件结构

Docker 镜像是由多个文件系统(只读层)叠加而成,每个层仅包含了前一层的差异部分。当我们启动一个容器的时候,Docker 会加载镜像层并在其上添加一个可写层。容器上所做的任何更改,譬如新建文件、更改文件、删除文件,都将记录与可写层上。容器层与镜像层的结构如下图所示。

容器 = 镜像 + 读写层
容器与镜像最大的区别就在于可写层上。如果运行中的容器修改了现有的一个已存在的文件,那该文件将会从可写层下的只读层复制到可写层,该文件的只读版本仍然存在,只是已经被可写层中该文件的副本所隐藏。

/var/lib/docker/containers,containers目录中存有每个容器的配置文件、环境变量文件、日志文件,目录随着删除容器而删除;

/var/lib/docker/image/overlay2,存储镜像管理数据的目录,以使用的存储驱动命名
• /var/lib/docker/image/overlay2/repositories.json,存储了镜像资源全局描述

/var/lib/docker/overlay2,layer的文件都放在了overlay2 目录

/var/lib/docker/volumes

相关文章:

docker相关知识

docker-compose https://www.runoob.com/docker/docker-compose.html Compose 使用的三个步骤&#xff1a; 使用 Dockerfile 定义应用程序的环境。 使用 docker-compose.yml 定义构成应用程序的服务&#xff0c;这样它们可以在隔离环境中一起运行。 最后&#xff0c;执行 …...

Springboot 集成 RocketMQ(进阶-消息)

0. 入门篇 Springboot 集成 RocketMq&#xff08;入门&#xff09;-CSDN博客 1. 异步消息 1.1 生产者 GetMapping("/send/async/{messageBody}")public String sendAsyncMsg(PathVariable("messageBody") String messageBody) {// 构建消息对象Message m…...

10 索引优化与查询优化

文章目录 索引失效案例关联查询优化对于左外连接对于内连接JOIN语句原理简单嵌套循环连接SNLJ索引嵌套循环连接INLJ块嵌套循环连接BNLJHash Join 子查询优化排序优化filesort算法&#xff1a;双路排序和单路排序 分组优化分页优化优先考虑覆盖索引索引下推ICP使用条件 其他查询…...

linux PVE安装

先下载安装包&#xff1a; ISO - Proxmox Virtual Environment 普通电脑主机的话&#xff0c;做个U盘启动盘&#xff0c;进行刷机即可。 如果还没制作U盘启动盘&#xff0c;建议用这个&#xff0c;方便多个镜像切换 Download . Ventoy 按照刷机提示页面一步步配置即可&#…...

ZZ038 物联网应用与服务赛题第J套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;J卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用…...

【寒武纪(3)】媒体处理系统的系统控制、视频输入和后处理子系统

系统控制 文章目录 系统控制1、配置视频缓存池Video Pool2、配置硬件IP为在线工作&#xff08;不通过DDR数据交互&#xff09;/ 离线工作&#xff08;写入DDR&#xff09;模式3、硬IP可以使用 非Video Block &#xff08;VB&#xff09;内存4、配置是否启动内存传递的压缩 视频…...

Linux下使用vscode编写Python项目

我此处是使用VScode远程连接的服务器&#xff0c;具体方法可看如下&#xff1a; 1、vscode中安装Python插件 按上面步骤安装好Python插件后&#xff0c;重启vscode&#xff1b; 2、选择Python解释器 创建Python项目结构&#xff1a; 按下F1&#xff0c;打开vscode命令栏&am…...

使用 curator 连接 zookeeper 集群 Invalid config event received

dubbo整合zookeeper 如图&#xff0c;错误日志 2023-11-04 21:16:18.699 ERROR 7459 [main-EventThread] org.apache.curator.framework.imps.EnsembleTracker Caller0 at org.apache.curator.framework.imps.EnsembleTracker.processConfigData(EnsembleTracker.java…...

大促期间也要做好低价治理

低价链接无处不在&#xff0c;对于品牌来说&#xff0c;日常治理低价是常规操作&#xff0c;那面对价格变化更快、促销信息更丰富的大促&#xff0c;对低价的治理要求会更高。否则容易被未授权在大促双十一、六一八期间分食流量。 力维网络有专业的团队为品牌提供低价治理服务&…...

【c++】——类和对象(中)——默认成员函数(上)

【学习目标】 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 目录 一.类的6个默认成员函数 二. 构造函数 2.1 概念 2.2.特性 三.析构函数 3.1.概念 3.2 特性 四.拷贝构造函数 4.1.概念 4.2.特性 一.类的6个默认成员函数 如果一个类中什么成员…...

钉钉企业微应用开发C#-HTTP回调接口

官方的STREAM回调推送的方式&#xff0c;试了几次都认证不过&#xff0c;就放弃了还是用HTTP的模式吧。 /// <summary>/// 应用回调/// </summary>/// <param name"model"></param>/// <returns></returns>public static Dictio…...

Rust编程基础之条件表达式和循环

1.if表达式 if 表达式允许根据条件执行不同的代码分支, 以下代码是一个典型的使用if表达式的例子: fn main() {let number 3; ​if number < 5 {println!("condition was true");} else {println!("condition was false");} } 所有的 if 表达式都以…...

MATLAB算法实战应用案例精讲-【人工智能】ROS机器人(补充篇)

目录 前言 ROS 机器人导航调参 1 速度和加速度 2 全局路径规划 3 局部路径规划...

基于8086汽车智能小车控制系统

**单片机设计介绍&#xff0c;基于8086汽车智能小车控制系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于 8086 的汽车智能小车控制系统是一种将微处理器技术应用于汽车控制的系统。下面是其主要的设计介绍&#xff1a; 硬…...

全光谱大面积氙光灯太阳光模拟器老化测试

氙灯光源太阳光模拟器广泛应用于光解水产氢、光化学催化、二氧化碳制甲醇、光化学合成、光降解污染物、 水污染处理、生物光照,光学检测、太阳能电池研究、荧光材料测试(透射、反射、吸收) 太阳能电池特性测试&#xff0c;光热转化&#xff0c;光电材料特性测试&#xff0c;生物…...

linux添加一条到中间路由器的路由

有时候需要配置一些明细路由&#xff0c;不能直接通过网关进行路由转发 配置示例 ip route add 10.0.12.0/24 via 10.0.41.1 dev bond0 这个命令是用于在Linux操作系统上配置IP路由的命令。具体来说&#xff0c;这个命令的含义是&#xff1a; ip route add: 这部分表示要添加…...

不同MySQL服务的表以及库的数据迁移(/备份)

目标&#xff1a; 将本地主机上usernameroot,passwordroot,port3307的MySQL服务中migration_one数据库的table_11数据表导出到本地的D:\start_java\XinQiUtilsOrDemo\testMigrationMySQL\table_11.bak注意&#xff1a;目前D:\start_java\XinQiUtilsOrDemo\testMigrationMySQL该…...

聊聊芯片超净间的颗粒(particle)

在芯片制造领域&#xff0c;颗粒的存在可能对生产过程产生巨大影响。其中&#xff0c;每个微小的颗粒&#xff0c;无论是来自人员、设备&#xff0c;还是自然环境&#xff0c;都有可能在制程中引发故障&#xff0c;从而对产品性能产生负面影响。这就是为什么在芯片厂中&#xf…...

服务器(windows Server 2019为例)中的日志中文乱码的解决办法

1. 首先&#xff0c;打开控制面板&#xff0c;找到区域&#xff08;Region&#xff09;&#xff0c;把Format设置为国语简体中文&#xff0c;点击高级(Administrative)后设置Current system locale为国语简体中文&#xff0c;按照图中步骤&#xff1a;...

Linux 学习(CentOS 7)

CentOS 7 学习 Linux系统内核作者: Linux内核版本 内核(kernel)是系统的心脏&#xff0c;是运行程序和管理像磁盘和打印机等硬件设备的核心程序&#xff0c;它提供了一个在裸设备与应用程序间的抽象层。 Linux内核版本又分为稳定版和开发版&#xff0c;两种版本是相互关联&am…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...