Docker容器引擎(3)

目录

一.Docker 镜像的创建

1.基于现有镜像创建

2.基于本地模板创建

3.基于Dockerfile创建:

Dockerfile 操作常用的指令:

ADD 和 COPY 的区别?

CMD 和 ENTRYPOINT 的区别?

容器启动命令的优先级

如何使用Dockerfile构建镜像?

yum构建nginx的dockerfile:

编写dockerfile文件:

进入容器进行添加网页内容:

我们为了方便不进入容器就能修改添加网页内容可以做数据卷:


一.Docker 镜像的创建

创建镜像有三种方法,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。

1.基于现有镜像创建

docker create -it centos:7 /bin/bash

然后将修改后的容器提交为新的镜像,需要使用该容器的 ID 号创建新镜像:

docker commit -m "new" -a "centos" 5590537ebe36  centos:test

-m 说明信息;
-a 作者信息;
-p 生成过程中停止容器的运行。

2.基于本地模板创建

先获取模板文件 :将本地容器导出为模板文件  docker export  或从网上下载现成的模板文件:

再将模板文件导入成镜像 :docker import

3.基于Dockerfile创建:

UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。AUFS、OverlayFS 及 Devicemapper 都是一种 UnionFS。

Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是UnionFS。

bootfs主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统。


Dockerfile 操作常用的指令:

FROM               指定基础镜像(是Dockerfile的第一行指令)
MAINTAINER         指定镜像维护人信息(可选)
RUN                指定linux命令,尽量将多条linux命令合并在一个RUN指令里,用 ; 或 && 或 <<EOF 串起来使用
EXPOSE             指定容器要开启的应用的端口号
ENV                指定容器的环境变量
ADD/COPY           复制本地文件|目录到镜像里
VOLUME             指定容器的匿名数据卷(作用类似于 docker run -v /var/lib/docker/volumes/容器ID/:容器数据卷目录)
USER               指定容器的运行用户
WORKDIR            指定后续镜像层的工作目录
ARG                指定构建镜像时传入的参数变量(可通过 "docker build --build-arg 变量=值"  进行传入参数)
CMD/ENTRYPOINT     指定容器启动时执行的命令和参数
 

ADD 和 COPY 的区别?

共同点:都可以将本地的文件|目录复制到镜像里
区别:ADD还可以通过URL地址下载文件并复制到镜像里,还能将本地的压缩包解压后再复制到镜像里(URL下载和压缩包解压特性不能同时生效)
即通过URL下载的压缩包只能以压缩包的形式复制到镜像里

CMD 和 ENTRYPOINT 的区别?

共同点:都可以用来指定容器的启动命令
区别:ENTRYPOINT指定的容器启动命令优先级更高,如果CMD和ENTRYPOINT同时存在,那么CMD指定的内容将作为ENTRYPOINT指定的容器启动命令的选项或参数使用

容器启动命令的优先级


docker run --entrypoint="命令"  >  镜像里的ENTRYPOINT指令指定的"命令"  >  docker run .... 镜像 "命令"  >  镜像里的CMD指令指定的"命令"
 

如何使用Dockerfile构建镜像?


1)编写Dockerfile文件,在第一行用 FROM 指令指定基础镜像
2)用 MAINTAINER 指令指定镜像维护人信息(可选)
3)用 RUN EXPOSE ENV ADD COPY 等指令编写构建镜像的过程
4)在Dockerfile结尾用 CMD 或 ENTRYPOINT 指令指定容器启动时执行的命令
5)用 docker build -t 镜像名:标签 .  命令来构建镜像
 

yum构建nginx的dockerfile:

先创建目录:

编写dockerfile脚本:

给目录下添加nginxyum源:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
编写dockerfile文件:

FROM centos:7

COPY nginx.repo /etc/yum.repos.d/

RUN yum install -y nginx

EXPOSE 80

CMD ["/usr/sbin/nginx","-g","daemon off;"]

生成镜像:

docker build -t  镜像名:标签 . :注意别忘了末尾有"."

查看下镜像:

新镜像运行容器:

访问网页:

如果有网络报错提示:[Warning] IPv4 forwarding is disabled. Networking will not work

解决方法:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p
systemctl restart network
systemctl restart docker
 

进入容器进行添加网页内容:

访问页面:

我们为了方便不进入容器就能修改添加网页内容可以做数据卷:

先将容器中的网页文件复制到宿主机目录下:

创建容器:

修改内容:

访问页面:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/347596.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++day2

计算矩形的面积 #include <iostream> using namespace std; class Rect {int width;int heigh; public:void init(int w, int h){width w;heigh h;}void set_w(int w){width w;}void set_h(int h){heigh h;}void show(){cout << "该矩形面积:" <…

ASP.NET Core NE8实现HTTP Upgrade和HTTP CONNECT代理服务器

看到一个文章[Go] 不到 100 行代码实现一个支持 CONNECT 动词的 HTTP 服务器 在NET8中如何实现 创建项目为MiniApi 编辑Program.cs文件。 var builder WebApplication.CreateSlimBuilder(args);var app builder.Build();// 将HTTP请求通过协议升级机制转为远程TCP请求&…

可视化智慧水电站EasyCVR视频智能监控系统方案设计与技术应用介绍

一、背景需求 水电站作为国家重要的能源基地&#xff0c;其安全运行对于保障能源供应和社会稳定具有重要意义。然而&#xff0c;传统的人工监控方式存在着诸多问题&#xff0c;如人力成本高、监控范围有限、反应不及时等。因此&#xff0c;水电站急需引进一种先进的视频智能监…

开始学习Vue2(组件的生命周期和数据共享)

一、组件的生命周期 1. 生命周期 & 生命周期函数 生命周期&#xff08;Life Cycle&#xff09;是指一个组件从创建 -> 运行 -> 销毁的整个阶段&#xff0c;强调的是一个时间段。 生命周期函数&#xff1a;是由 vue 框架提供的内置函数&#xff0c;会伴随着 组件…

解读Android进程优先级ADJ算法

本文基于原生Android 9.0源码来解读进程优先级原理,基于篇幅考虑会精炼部分代码 一、概述 1.1 进程 Android框架对进程创建与管理进行了封装,对于APP开发者只需知道Android四大组件的使用。当Activity, Service, ContentProvider, BroadcastReceiver任一组件启动时,当其所…

[极客大挑战 2019]Upload1

直接上传php一句话木马&#xff0c;提示要上传image 把文件名改成gif并加上gif文件头后&#xff0c;绕过了对image类型的检测&#xff0c;但是提示文件内含有<?&#xff0c;且bp抓包后改回php也会被检测 那我们考虑使用js执行php代码 <script languagephp>eval($_PO…

使用 LinkAi 打造自己的知识库和数字人

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、LinkAi 介绍 二、文档库 2.1 创建知识库 2.2 配置知识库 2.3 Ai配置 2.4 导入文档 2.5 接入微信 三、扩展 四、总结…

华媒舍:15种媒体发稿推广的创意理念与案例分析

媒体发稿已经成为推广知名品牌、产品与服务关键方式之一。怎样通过媒体发稿提升曝光度和吸引住受众却是一个挑战。下面我们就详细介绍15种创意理念和案例分析&#xff0c;帮助你更好地进行新闻媒体发稿推广。 1.造就日常生活小故事通过展示真实用户故事和感受&#xff0c;读者对…

Elasticsearch内核解析 - 写入篇

Elasticsearch内核解析 - 写入篇 - 知乎 目前的Elasticsearch有两个明显的身份,一个是分布式搜索系统,另一个是分布式NoSQL数据库,对于这两种不同的身份,读写语义基本类似,但也有一点差异。 写操作 实时性: 搜索系统的Index一般都是NRT(Near Real Time),近实时的,比…

vue3项目中用codemirror实现格式化java代码及不太成熟的历程

本期只介绍创作的曲折历程&#xff0c;并不能解决实际问题&#xff0c;现有插件不支持&#xff0c;总结在了最后 一、案例效果 vue3项目使用preitter 搭配prettier-plugin-java 实现codemirror 格式化 java 二、步骤 1. 安装prettier和prettier-plugin-java&#xff0c;可以…

Tomcat好帮手---JDK

目录 1、Tomcat好帮手---JDK 2、安装JDK 部署Tomcat参考博主博客 部署TOMCAT详解-CSDN博客 1、Tomcat好帮手---JDK JDK是 Java 语言的软件开发工具包&#xff0c;JDK是整个java开发的核心&#xff0c;它包含了JAVA的运行环境&#xff08;JVMJava系统类库&#xff09;和JAVA…

计算机网络 第5章(运输层)

系列文章目录 计算机网络 第1章&#xff08;概述&#xff09; 计算机网络 第2章&#xff08;物理层&#xff09; 计算机网络 第3章&#xff08;数据链路层&#xff09; 计算机网络 第4章&#xff08;网络层&#xff09; 计算机网络 第5章&#xff08;运输层&#xff09; 计算机…

基于vue实现计数器案例

一、需求 页面显示两个按钮&#xff0c;分别为&#xff1a;增加 和 减少&#xff1b;显示加减后的数字&#xff1b;加到10提示不能再加&#xff0c;减到0提示不能再减&#xff1b; 二、代码演示 1、实现步骤 data中定义数据: 比如 num 值为1methods中添加两个方法: 比如add…

技术标准引领文物预防性保护新篇章(文物预防保护,技术标准)

文物做为历史的见证和传承&#xff0c;背负着中华文化久远的文化与智慧。但是&#xff0c;随着时间推移&#xff0c;这类珍贵的文化遗产不可避免面临各种自然和人为伤害。为了保障这类珍贵的不可再生资源&#xff0c;文物预防性保护领域标准规范发展和应用至关重要。 一、现状…

蓝桥杯准备之路-Java基础复习

一、基本数据类型 int(32),long(64),float,double,boolean ,char 溢出判断&#xff1a; System.out.println("蓝桥杯练习第一天");Scanner scan new Scanner(System.in);int a scan.nextInt();System.out.println(a);int a1 Integer.MAX_VALUE;System.out.prin…

PySide6/PyQt6中Qt窗口标志/窗口属性汇总,如何正确的设置窗口标志/窗口属性

文章目录 📖 介绍 📖🏡 环境 🏡📒 使用方法 📒📚 窗口标志汇总📚 窗口属性汇总📝 使用方法📝 注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 在Qt框架中,窗口标志(window flags)是用于控制窗口的各种属性和行为的强大工具。它们通过设置窗口的属性,如边框…

阿赵UE学习笔记——解决UE资源不能正常显示缩略图的问题

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   这里分享一个虚幻引擎使用小技巧。在使用虚幻引擎的过程中&#xff0c;经常会遇到有些资源在重新打开项目的时候&#xff0c;会看不到缩略图&#xff0c;而是显示默认资源的图标&#xff1a; 这个时候&#xff0c;第一种…

vector迭代器失效

目录 迭代器失效的场景 insert插入元素时迭代器失效 erase删除元素时迭代器失效 本期我们主要进行vector迭代器失效问题的讨论。 迭代器失效的场景 insert插入元素时迭代器失效 先看代码&#xff1a; iterator insert(iterator pos, T val){assert(pos > _start);ass…

springboot农机电招平台源码和论文

随着农机电招行业的不断发展&#xff0c;农机电招在现实生活中的使用和普及&#xff0c;农机电招行业成为近年内出现的一个新行业&#xff0c;并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算机让复杂的销售操作变简单&#xff0c;变高效。…

React(3): React 实现卖座App

React实现卖座App 娱乐项目&#xff0c;请勿当真 &#xff01;&#xff01;&#xff01; 简介 之前在学习React的时候&#xff0c;在 bilibili 看到 React 学习视频&#xff0c;于是马上着手 React版本的卖座App 开发 技术栈 // 前端 React TypeScript Antd-Mobile Dayjs 3D…