Dockerfile创建镜像
Dockerfile创建镜像
一、Docker镜像的创建
创建镜像有三种方法
- 基于已有镜像创建
- 基于本地模板创建
- 基于Dockerfile创建
1.1 基于现有镜像创建
docker export 将容器导出
docker run -id --name c1 centos:7 #创建容器c1
docker exec -it c1 bash #进入c1容器
mkdir -p /var/www/html #创建/var/www/html
cd /var/www/html/
echo "this is a file" > index.txt #写入数据
docker ps -a
docker export -o centos7.tar b75b2a0d27fc #使用export将该容器导出成tar包
将修改后的容器提交为新的镜像(docker commit)
然后将修改后的容器提交为新的镜像,需要使用该容器的ID号创建新镜像
常用选项:
-m | 指定说明信息 |
-a | 指定作者信息 |
-p | 生成过程中停止容器的运行 |
格式:
docker commit -m 说明信息 -a 作者信息 -p 容器ID 生成新的镜像名称
- 将容器导出成镜像
docker commit -m "new" -a "yy" -p b75b2a0d27fc centos7:new
2. 使用导出的镜像创建容器
docker run -id centos7:new
3. 查看容器数据
docker exec -it f154c1fa532d bash
cd /var/www/html/
cat index.txt
4. 查看镜像详细信息
docker inspect 6238358a936a
使用commit创建后的镜像,能把容器修改过的记录保存下来
使用原镜像创建容器,修改过的记录不会存在
1.2 基于本地模板创建
通过导入操作系统模板文件可以生成镜像,模板可以从OPENVZ 开源项目下载,下载地址为:Open source container-based virtualization for Linux. (openvz.org)
#模板里面就是使用docker export 命令导出的容器文件
#下载模板
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
#将模板导入为镜像,两种方法
cat debian-7.0-x86-minimal.tar.gz | docker import - debian:test #方法一
docker import debian-7.0-x86-minimal.tar.gz -- debian:test #方法二
#查看镜像
docker images
#使用导入的镜像创建容器
docker run -itd debian:test bash
docker ps -a
1.3 基于Dockerfile 创建
联合文件系统(UnionFS )
UnionFS(联合文件系统): Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。AUFS、overlayFS 及Devicemapper 都是一种UnionFS 。
Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性: 一次同时加载多个文件系统,但从外面看起来,只能看到一一个