Docker镜像与制作(9)

1502人浏览 / 0人评论

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
 

启动完成!

访问成功!

 

全部评论