当前位置: 首页 > 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…...

架构决策记录 ADR

在项目和产品开发过程中&#xff0c;软件工程团队需要做出架构决策以实现其目标。这些决策可以是技术性的&#xff0c;也可以与流程相关。 技术决策&#xff1a;例如决定使用JBOSS Data Grid作为缓存解决方案还是选择Amazon Elasticache&#xff0c;或者决定使用AWS Network L…...

SSM之spring注解式缓存redis->redis整合,redis的注解式开发及应用场景,redis的击穿穿透雪崩

redis整合redis的注解式开发及应用场景redis的击穿穿透雪崩 1.redis整合 mysql整合 pom配置&#xff1b; String-fmybatis.xml --> mybatis.cfg.xml: 包扫描&#xff1b; 注册了一个jdbc.properties(url/password/username/...)&#xff1b; 配置数据源&#xff08;数据库连…...

数据库性能优化(查询优化、索引优化、负载均衡、硬件升级等方面)

数据库性能优化是提升数据库系统整体性能和响应速度的一系列技术和策略。它可以通过多种方式来实现&#xff0c;包括优化查询语句、索引设计、硬件升级、负载均衡等手段。 合适的数据模型设计 正确的数据模型设计是性能优化的基石。合理的表结构和关系设计可以减少冗余数据&…...

谁说 Linux 不能玩游戏?

在上个世纪最早推出视频游戏的例子是托马斯戈德史密斯&#xff08;Thomas T. Goldsmith Jr.&#xff09;于1947年开发的“「Cathode Ray Tube Amusement Device」”&#xff0c;它已经显着发展&#xff0c;并且已成为人类生活中必不可少的一部分。 通过美国游戏行业的统计数据&…...

发电机负载测试方案

发电机负载测试是为了评估发电机在不同负载条件下的性能和稳定性。下面是一个可能的发电机负载测试方案&#xff1a; 测试前准备&#xff1a; - 确定测试的负载范围和条件&#xff0c;包括负载大小、负载类型&#xff08;如电阻性、感性或容性负载&#xff09;、负载持续时间等…...

Flask三种文件下载方法

Flask 是一个流行的 Python Web 框架&#xff0c;它提供了多种方法来实现文件下载。在本文中&#xff0c;我们将介绍三种不同的方法&#xff0c;以便你能够选择最适合你应用程序的方法。 方法一&#xff1a;使用 send_file 函数 send_file 函数是 Flask 中最常用的文件下载方法…...

OpenCV C++ 图像处理实战 ——《基于NCC多角度多目标匹配》

OpenCV C++ 图像处理实战 ——《基于NCC多角度多目标匹配》 一、结果演示二、NCC模板匹配2.1、OpenCV matchTemplate2.2、多角度2.3、多目标2.4、NMS非极大值抑制三、代码实现3.1 制作模板3.1 单目标匹配3.1.1 模板图像旋转3.1.2 旋转目标坐标3.2 多目标匹配3.2.1 制作模板3.2.…...

【书籍篇】Spring实战第4版 第2部分 Web中的Spring

Spring实战第4版 第2部分 Web中的Spring 五. 构建Spring Web应用程序5.1 SpirngMVC请求流程5.2 搭建Spring MVC5.2.1 配置DispatcherServlet5.2.2 配置WebConfig5.2.3 配置RootConfig 5.3 编写基本的控制器5.4 Spittr首页5.6 复杂的控制器5.6.1 定义类级别的请求处理5.6.2 传递…...

IC - 基础知识 - SOC与MCU

说明 工作中有涉及到SOC和MCU&#xff0c;非嵌入式专业&#xff0c;对两个概念理解不是很清晰。 共同点 MCU和SOC是两种常见的集成电路 (IC) 设计形式&#xff0c;它们的区别在于它们的设计目的和应用场景。工作中将MCU和SOC都称为IC也是没问题的&#xff0c;但是专业人员会…...

【elasticsearch+kibana基于windows docker安装】

创建网络&#xff1a;es和kibana容器互联 docker network create es-net加载镜像 docker pull elasticsearch:7.12.1运行 docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -v $…...