首页 > 其他 > 详细

从零开始到新建一个容器的镜像

时间:2019-08-09 23:45:56      阅读:134      评论:0      收藏:0      [点我收藏+]

一、一个官方容器的编排文件

https://hub.docker.com/search?q=centos&type=image

FROM scratch

ADD centos-7-docker.tar.xz /

LABEL org.label-schema.schema-version="1.0" \

      org.label-schema.name="CentOS Base Image" \

      org.label-schema.vendor="CentOS" \

      org.label-schema.license="GPLv2" \

      org.label-schema.build-date="20181205"

CMD ["/bin/bash"]

这个基础镜像是基于 scratch 创建的

添加了一个文件 centos-7-docker.tar.xz

 

一个容器需要满足的两个条件:

1、 scratch 镜像

2、centos-7-docker.tar.xz 一个文件

 

解释:

 1、scratch 镜像  根本不存在,是所有基础镜像最原始的一个模板镜像。

1.1 获取 scratch 镜像 的方法:

tar cf scratch.tar --files-from /dev/null

 

1.2 导入 scratch 镜像

docker import scratch.tar scratch

 

2、centos-7-docker 其实就是系统的根目录下的所有文件

2.1 获取centos-7-docker.tar.xz的方法

2.1.1 创建一个文件夹

mkdir /root/vroot

2.1.2 安装系统常用的软件

yum -y install --installroot /root/vroot  bash yum coreutils net-tools vim 

2.1.3 初始化root登录环境

把/root/vroot/etc/skel/ 所有非以..开头的文件 拷贝到 /root/vroot/root/ 下面

cp -a vroot/etc/skel/.[!.]* vroot/root/

2.1.4  打包文件,要以虚拟目录作为根打包

tar -cJf centos-7-docker.tar.xz -C vroot ./

2.1.5  把官方的编排文件copy到Dockerfile

vim Dockerfile

2.1.6 创建镜像

docker build –t centos:latest 

 

PS:创建root登陆环境的两种方法。

第一种:

在容器里执行

cp -a /etc/skel/.[!.]*  /root/

退出使用bash解释器重新登陆

ctrl + p +q

docker ps -q  #获取id

docker exec -it id bash

第二种:

在物理机上:

chroot /root/vroot  #重新挂载根系统

cp -a /etc/skel/.[!.]*  /root/

把容器保存为镜像

docker commit id 镜像名:标签名

docker commit 9c897e695486 docker.io/centos:latest

把镜像打包称tar文件,供其他docker主机使用

docker save 镜像名:标签名 -o 文件名.tar

docker save docker.io/centos -o centos.tar

 

从零开始到新建一个容器的镜像

原文:https://www.cnblogs.com/shixi-study/p/11329760.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!