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

Posted shixi-study

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始到新建一个容器的镜像相关的知识,希望对你有一定的参考价值。

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

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

 

以上是关于从零开始到新建一个容器的镜像的主要内容,如果未能解决你的问题,请参考以下文章

Docker 运维 - 从零开始学习

Docker 运维 - 从零开始学习

Docker之从零开始制作docker镜像

手把手·从零开始撸Docker 系列一

自己的微信小程序学习笔记——从零开始新建项目

自己的微信小程序学习笔记——从零开始新建项目