docker mirror
手动制作 yum 版 nginx 镜像下载镜像并初始化系统在宿主机基于容器 ID 提交为镜像带 tag 的镜像提交从自己镜像启动容器DockerFile 制作 yum 版 nginx 镜像下载镜像并初始化系统准备nginx配置文件编写Dockerfile构建镜像运行镜像DockerFile 制作 编译版 nginx 镜像nginx配置文件及软件要需要先提前准备好编写 Dockerfile执行镜像构建构建完成查看是否生成本地镜像从镜像中启动容器容器是无法删除主进程的将Dockerfile多条RUN整合到一起构建前对比下大小自定义 tomcat 镜像构建系统环境构建 JDK 镜像构建tomcat镜像构建业务镜像1构建业务镜像2构建nginx镜像构建haproxy镜像本地镜像上传至官方 docker 仓库小结
Docker 镜像有没有内核?
从镜像大小上面来说,一个比较小的镜像只有十几 MB,而内核文件需要一百多兆, 因此镜像里面是没有内核的,镜像在被启动为容器后将直接使用宿主机的内核,而镜像本身则只提供相应的 rootfs,即系统正常运行所必须的用户空间的文件系统,比如/dev/,/proc,/bin,/etc 等目录,所以容器当中基本是没有/boot目录的,而/boot 当中保存的就是与内核相关的文件和目录
为什么没有内核?
由于容器启动和运行过程中是直接使用了宿主机的内核,所以没有直接调用过物理硬件,所以也不会涉及到硬件驱动,因此也用不上内核和驱动,另外有内核的那是虚拟机
手动制作 yum 版 nginx 镜像
Docker 制作类似于虚拟机的镜像制作,即按照公司的实际业务务求将需要安装的软件、相关配置等基础环境配置完成,然后将其做成镜像,最后再批量从镜像批量生产实例,这样可以极大的简化相同环境的部署工作,Docker 的镜像制作分为手动制作和自动制作(基于 DockerFile),其中手动制作镜像步骤具体如下
下载镜像并初始化系统
基于某个基础镜像之上重新制作,因此需要先有一个基础镜像,本次使用官方提供的 centos 镜像为基础
在宿主机基于容器 ID 提交为镜像
带 tag 的镜像提交
从自己镜像启动容器
DockerFile 制作 yum 版 nginx 镜像
DockerFile 可以说是一种可以被 Docker 程序解释的脚本,DockerFile 是由一条条的命令组成的,每条命令对应 linux 下面的一条命令,Docker 程序将这些DockerFile 指令再翻译成真正的 linux 命令,其有自己的书写方式和支持的命令,Docker 程序读取 DockerFile 并根据指令生成 Docker 镜像,相比手动制作镜像的方式,DockerFile 更能直观的展示镜像是怎么产生的,有了 DockerFile,当后期有额外的需求时,只要在之前的 DockerFile 添加或者修改响应的命令即可重新生成新的 Docke 镜像,避免了重复手动制作镜像的麻烦
下载镜像并初始化系统
准备nginx配置文件
编写Dockerfile
构建镜像
运行镜像
DockerFile 制作 编译版 nginx 镜像
nginx配置文件及软件要需要先提前准备好
编写 Dockerfile
执行镜像构建
构建完成
可以清晰看到各个步骤执行的具体操作
查看是否生成本地镜像
从镜像中启动容器
容器是无法删除主进程的
将Dockerfile多条RUN整合到一起
RUN可以尽量整合到一起,这样减少层次
构建前对比下大小
自定义 tomcat 镜像
使用官方cenots镜像基础上,先构建JDK,然后再基于 JDK 镜像构建 tomcat 镜像
使用镜像分层管理
构建系统环境
测试
构建 JDK 镜像
测试
构建tomcat镜像
测试
构建业务镜像1
测试
构建业务镜像2
测试
构建nginx镜像
构建haproxy镜像
测试
本地镜像上传至官方 docker 仓库
将自制的镜像上传至 docker 仓库 https://hub.docker.com/
阿里云容器镜像服务 https://cr.console.aliyun.com/cn-hangzhou/instances/credentials
准备aliyun或者docker hub官网的账户
查看认证信息
登录成功之后会在当前目录生成一个隐藏文件用于保存登录认证信息
给镜像做 tag 并开始上传
小结
构建镜像
1、减少构建镜像时间
2、RUN可以尽量整合到一起,这样减少层次
3、生产镜像不会超过2个G
4、程序包名尽量不要更改,会增加构建时间
5、比如目录名不要更改,会影响用户访问的URL,这个需要和开发协商
6、构建镜像需要清理TAG为
<none>的镜像
7、构建镜像CMD 可以使用tailf /etc/hosts 小文件,这样父进程就不是应用服务,方便重启应用tomcat catalina.sh run 前端执行排错https://www.php.cn/docker/446383.html
net.ipv4.ip_forward = 1
Loading...
keepalived