docker4镜像原理、容器转镜像和Dockerfile构建镜像

凝练度:0
转自:http://www.itheima.com/

Dockerfile

镜像↔系统:

一个系统(win、mac、linux…)通常会包含很多子系统:进程调度子系统、进程通信子系统、内存管理子系统、设备管理子系统、文件管理子系统……

Linux的系统结构:
	Linux一般由内核、shell、文件系统、应用程序4个主要部分组成。前三个形成了基本操作系统结构,使用户可以运行程序、管理文件并使用系统。
	shell:Linux的接口程序,是一个命令语言解释器。它拥有自己内建的shell命令集,用户在提示符下输入的命令都由shell先解释然后传给Linux核心。shell也能被系统中其他应用程序所调用。
Linux文件系统由bootfs和rootfs构成:
	bootfs:包含bootloader(引导加载程序)和kernel(内核)
	rootfs: root文件系统,包含的就是典型Linux 系统中的/dev, /proc,/bin,/etc等标准目录和文件
			不同的linux发行版,bootfs基本一样,而rootfs不同
Docker镜像原理

Docker镜像由多个文件系统的镜像叠加而成:
docker4镜像原理、容器转镜像和Dockerfile构建镜像_第1张图片

在这里插入图片描述

镜像制作

容器转为镜像
# 制作镜像
docker commit 容器id 镜像名称:版本号
# 压缩镜像,用于传输镜像
docker save -o 压缩文件名称 镜像名称:版本号
# 加载镜像
docker load –i 压缩文件名称
	注意:容器转镜像不会保留挂载的数据卷,但其他修改是能保存的;

docker4镜像原理、容器转镜像和Dockerfile构建镜像_第2张图片

Dockerfile构建镜像
Dockerfile是一个包含若干个指令的文本文件
每条指令基于baseimage构建一层镜像,最终可以构建出成新的镜像
对于开发人员:可以为开发团队提供一个完全一致的开发环境
对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像来工作
对于运维人员:在部署环境时可以实现应用无缝移植

docker4镜像原理、容器转镜像和Dockerfile构建镜像_第3张图片

补充:
Dockerfile关键字 作用 说明
FROM 指定父镜像 指定dockerfile基于那个image构建
MAINTAINER 作者信息 用来标明这个dockerfile谁写的
LABEL 标签 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
RUN 执行命令 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“param2”]
CMD 容器启动命令 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”]
ENTRYPOINT 入口 一般在制作一些执行就关闭的容器中会使用
COPY 复制文件 build的时候复制文件到image中
ADD 添加文件 build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
ENV 环境变量 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ARG 构建参数 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
VOLUME 定义外部可以挂载的数据卷 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]
EXPOSE 暴露端口 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR 工作目录 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER 指定执行用户 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
HEALTHCHECK 健康检查 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
ONBUILD 触发器 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
STOPSIGNAL 发送信号量到宿主机 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL 指定执行脚本的shell 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell

案例:

# 自定义centos7镜像,默认工作路径为/usr,并安装了tree
# 实现步骤:1. 编辑dockfile文件,内容为:
# 定义父镜像:
FROMcentos:7
# 定义作者信息:
MAINTAINER itheima <[email protected]> 
# 执行安装vim命令:
RUN yum install -y tree
# 定义默认的工作目录:
WORKDIR/usr 
# 定义容器启动执行的命令:
CMD/bin/bash 
----------------------------------------------------------------------
# 2. 通过dockerfile构建镜像:
dockerbulid –f dockerfile文件路径–t 镜像名称:版本

你可能感兴趣的:(#,docker入门,笔记)