IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ○( ^皿^)っdockerfile -> 正文阅读

[系统运维]○( ^皿^)っdockerfile

创建容器的几种方式

①基于己有的模板文件进行创建,容器导出、导入
②基于己有的镜像进行创建
③dockerfile

一、dockerfile分层原理

1、docker镜像分层(基于AUFS构建):Docker镜像位于bootfs之上
每一层镜像的下一层成为父镜像
第一层镜像成为base image(操作系统环境镜像)530容器层(可读可写),在最顶层(writable)
2、涉及技术:
①bootfe [boot file mysten)
要包含boot loader和kernel
bootloader主要是引导加载kernal,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfr。
这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当iboot加载完成之后螫个内核就都在内存中了,此时内存的使用权已由bootfz转交给内核,此时系统也会卸载bootfs在linux操作系统中〈不同版本的linux发行版本),linux加载sootfs时会将rootfs设置为read-only,系统自检后会将只读改为读号,让我们可以在操作系统中进行操作
②rootfs fraot file system
在bootfa之上 (base images。例如centos 、ubunta)
包含的就是典型 Linux系统中的/dev,/proc,/bin,/ete等标准目录和文件

FUFS与overlay/overlay2

AUFS是一种联合文件系统。它使用同一个Tinux
host上的多个目录,逐个堆叠起来,对外呈现出一个统一的文件系统。AUF8使用该特性,实现了Docker镜像的分层,而dackcr使用了overlay/ overlay2存储墅动来支持分层结构
OverlayFS将单个Linux主机上的两个目录合并成一个目录。这些目录被称为层,统一过程被称为联合挂载

#overlay 结构:
1、rootfs                        基础镜像
2、1over                         下层信息(为镜像层,容器)
3、upper                         上层自录(容器信息,可写)
4、worker                        运行的工作目录(copy-on-irite写时复制、准备容器环境)
5、mergod                        ”视图是”(容器视图)

docker 镜像层次结构小结

①base image:基础镜像
②imagen固化了一个标准运行环境,镜像本身的功能-封装一组功能性的文件,通过统一的方式,文件格式提供出来(只读)
③containera容潜层(读写)
④docker-server 端
⑤呈现给docker-client(视图)

在修改时,若upper层没有,则会将lower层有的文件复制到upper层进行修改并保存结果

[root@docker1 ~]# mkdir daemon
[root@docker1 ~]# cd daemon/
[root@docker1 daemon]# mkdir lower
[root@docker1 daemon]# echo "lower.aaa" > lower/aaa
[root@docker1 daemon]# echo "lower.bbb" > lower/bbb
[root@docker1 daemon]# mkdir upper
[root@docker1 daemon]# echo "upper.ccc" > upper/ccc
[root@docker1 daemon]# echo "upper.ddd" > upper/ddd
[root@docker1 daemon]# ls
lower  upper
[root@docker1 daemon]# yum -y install tree

在这里插入图片描述

[root@docker1 daemon]# tree .

在这里插入图片描述

[root@docker1 daemon]# mount -t overlay overlay -o lowerdir=lower,upperdir=upper,workdir=work mergod
[root@docker1 daemon]# df -hT

在这里插入图片描述

dockerfile操作指令

1、FROM镜像     指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像的维护人信息
2、MAINTAINER名字  说明新镜像的维护人信息
3、BUN命令      在所基于的镜像上执行命令,并提交到新的镜像中
4、CMD[“要运行的程序”“参数1,参数2”]   指令启动容器时要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能最后一条被执行
5、EXPOSE端口号  指定新镜像加载到Docker时要开启的端口
6、ENV环境变量 变量值  设置一个环境的值,会被后面的RUN使用
7、ADD源文件/目录 目标文件/目录  将源文件复制到目标文件 源文件要到与Dockerfile位于相同目录中,或者是一个URL
8、COPY源文件/目录 目标文件/目录 将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同的目录中
9、VOLUME["目录"]  在容器中创建一个挂载点
10USER用户名/UID  指定运行容器时的用户
11、WORKDIR路径     为后续的RUN、CDM、ENTRYPOINT指定工作目录
12、ONBUILD命令    指定所生成的镜像作为一个基础镜像时所要运行的命令
13、HEALTHCHE     健康检查

编写镜像

[root@docker1 ~]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx image
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORKDIR nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
CMD nginx
[root@docker1 daemon]# docker build -t nginx:new .
[root@docker1 ~]# cd daemon/

在这里插入图片描述

构建镜像命令

docker build -t nginx:test
-t:tag
-f:指定dockerfile目录
. :指构建镜像时使用的环境目录
ADD:支持将远程URL的资源加入到镜像的文件系统
COPY:只复制
CMD与entrypoint:都是容器启动时要加载的命令
exec  模式 与shell模式
exec:容器加载时使用的启动的第一个任务进程
shell:容器加载时使用的第一个bash
[root@docker1 daemon]# mkdir test
[root@docker1 daemon]# cd test/
[root@docker1 test]# vim Dockerfile
FROM centos:7
CMD ["top"]
[root@docker1 test]# docker build -t centos:v1 .

在这里插入图片描述

[root@docker1 test]# docker images

在这里插入图片描述

[root@docker1 test]# docker run -itd --name test centos:v1
c6e03601eaa894578c7238ef16831b214cf60a60a2748923106cdeafc2dc67f6
[root@docker1 test]# docker ps -a

在这里插入图片描述

[root@docker1 test]# docker exec test ps aux

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 11:09:04  更:2021-09-08 11:11:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 3:30:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码