○( ^皿^)っ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

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值