Docker 镜像有没有内核?
从镜像大小上面来说,一个比较小的镜像只有十几MB,而内核文件需要一百多兆, 因此镜像里面是没有内核的,镜像在被启动为容器后将直接使用宿主机的内核,而镜像本身则只提供相应的rootfs,即系统正常运行所必须的用户空间的文件系统,比如/dev/,/proc,/bin,/etc等目录,所以容器当中基本是没有/boot目录的,而/boot当中保存的就是与内核相关的文件和目录。
为什么没有内核?
由于容器启动和运行过程中是直接使用了宿主机的内核,所以没有直接调用过物理硬件,所以也不会涉及到硬件驱动,因此也用不上内核和驱动,另外有内核的那是虚拟机。
一、手动制作yum版nginx镜像:
Docker制作类似于虚拟机的镜像制作,即按照公司的实际业务务求将需要安装的软件、相关配置等基础环境配置完成,然后将其做成镜像,最后再批量从镜像批量生产实例,这样可以极大的简化相同环境的部署工作,Docker的镜像制作分为手动制作和自动制作(基于DockerFile),其中手动制作镜像步骤具体如下:
1、下载镜像并初始化
基于某个基础镜像之上重新制作,因此需要先有一个基础镜像,本次使用官方提供的centos镜像为基础:
[root@1 ~]# docker run -it --name centos-images centos /bin/bash
#启动centos容器[root@a6ab9a482e55 /]# yum install wget -y
#安装wget[root@a6ab9a482e55 /]# rm -rf /etc/yum.repos.d/*
#删除源[root@a6ab9a482e55 /]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#装源[root@a6ab9a482e55 /]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#装源[root@a6ab9a482e55 /]# yum install nginx -y
安装nginx[root@a6ab9a482e55 /]# yum install -y vim wget pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
安装基础命令
2、启动nginx
修改nginx的配置文件,加入daemon参数
vim nginx.con
daemon off;
自定义nginx静态页面
[root@a6ab9a482e55 nginx]# cat /usr/share/nginx/html/index.html
Docker Yum Nginx
ctrl+PQ 保存退出容器
3、创建docker镜像
在宿主机基于容器ID 提交为镜像
[root@1 ~]# docker commit -m "nginx images" a6ab9a482e55 jack/centos-nginx:v1
启动nginx镜像
[root@1 ~]# docker run -d -p 80:80 --name "nginxv1" 9819819f4bae "/usr/sbin/nginx"
dc90ebcceed7cc164eb80b32c81bcf0598fdc05faf07995bec955d1056d72b12
启动完成!
访问成功!
有问题请加博主微信进行沟通!
全部评论