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

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

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

时间: 2024-10-29 20:46:42

从零开始到新建一个容器的镜像的相关文章

安装docker并使用默认镜像创建一个容器

1.安装docker 命令:yum install –y docker-i 错误解决:如果device-mapper-libs 这个docker依赖包版本太低.可以直接执行yum upgrade device-mapper-libs升级一下这个依赖包 2.Docker装好后,默认自动启动或使用命令启动:service docker start 3.查看版本:  docker –v  来查看当前装的docker版本 4.查看当前所有镜像: docker 安装好后,有个默认cento63镜像,可以选

Docker 之 基于容器的镜像制作

1  概述 镜像包含启动容器所需的文件系统和内容,可以理解为打包的文件,用于创建并启动docker容器. 镜像的生成途径有三个: 1.基于dockerfile实现,镜像制作的程序文件 2.基于容器实现,启动容器后,将新的操作制作为新镜像 3.docker hub automated builds 镜像文件采用分层构建机制,最底层为bootfs,上面为rootfs,rootfs上还可以有多层.位于最下层的镜像文件为父镜像(parent image),最底层为基础镜像(base image,root

Docker镜像管理基础与基于容器的镜像制作示例

一.Docker镜像 Docker镜像是启动Docker容器的一个非常重要的组件.Docker各组件之间的关系如图: Docker镜像含有启动容器所需要的文件系统及其内容,因此Docker镜像用于创建并启动容器.并且Docker镜像是采用分层构建,联合挂载的机制实现的.那什么是分层构建,联合挂载呢?如图: 在分层构建机制中,最底层为bootfs,用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节省内存资源.在bootfs之上的是rootfs,这里就是doc

容器 变成镜像提交到阿里云镜像仓库

有的时候我们新建了一个镜像并运行它生成了一个容器,容器就好比一个微虚拟机,有的时候我们需要在容器里面操作一些东西,可能由于很多种原因,假设我们修改了系统配置等,那么如何将操作后的容器做成一个镜像供以后使用呢 1.登录阿里云Docker Registry docker login --username=zyf1985121 registry.cn-qingdao.aliyuncs.com 2.查看容器的信息找出CONTAINER ID docker ps -a 3.将容器打包成镜像执行命令 doc

Docker(6)-修改容器和镜像

虽然我们可以通过数据卷或数据容器来持久化容器中修改的数据,但是对于在容器中安装的软件和修改的环境变量而言,我们只能通过修改镜像的方法来持久化它们. 想要更改镜像,我们必须先对容器进行更改,然后通过commit命令提交到镜像中. 你可以把镜像想像成宫殿,而容器就是门前的守卫,你必须通过他才能进入宫殿. 具体说来,修改镜像的步骤如下: 以我们想要修改的镜像为模版启动一个容器 对容器进行修改 把修改提交的镜像中 例如: 1. 我们以server-light为模版运行一个容器,返回一个可交互的shell

从零开始写个一个豆瓣电影 (小程序教程1)

微信小程序内测至今也有20天左右,也有很多人作出了很多不错的DEMO并发布到github了.前几日看见了豆瓣电影这个demo,感觉很不错,也跟着做了一个,作为复习巩固文档API用. 废话不多说,直接进入正题: 第一节只写一个首页的展示,数据用的是自己写的虚拟的数据 新建一个demo,不要使用微信自带的DEMO,直接从零开始写起: 首先创建3个文件: app.json app.js apps.wxss app.json  : 主要写配置项:内容如下,具体的每个key值对应的意思,这里就不再细说了,

使用VMware新建一个Linux系统虚拟机

我们将其分为两步,1:新建虚拟机:2:安装Red Hat Enterprse Linux 6操作系统 1.首先我们新建一个虚拟机,先不安装操作系统,稍后再对其安装Linux系统. 新建虚拟机步骤如下: 打开VMware软件,菜单栏点击“文件(F)”–>选择“新建虚拟机(N)”,如下图1,(或者直接点击图中“+”号所在的位置) 选择新建后出现如下界面,如图2,此处我们选择自定义,然后点击下一步. 图3,此处直接下一步. 图4,此处选择“稍后安装操作系统”,然后下一步. 图5,选择Linux系统,版

浅谈Linux容器和镜像签名

导读 从根本上说,几乎所有的主要软件,即使是开源软件,都是在基于镜像的容器技术出现之前设计的.这意味着把软件放到容器中相当于是一次平台移植.这也意味着一些程序可以很容易就迁移,而另一些就更困难. 我大约在三年半前开展基于镜像的容器相关工作.到目前为止,我已经容器化了大量应用.我了解到什么是现实情况,什么是迷信.今天,我想简要介绍一下 Linux 容器是如何设计的,以及谈谈镜像签名. Linux 容器是如何设计的 对于基于镜像的 Linux 容器,让大多数人感到困惑的是,它把操作系统分割成两个部分

如何在jenkins上新建一个项目及其简单配置

1.首先,点击[新建]进入选择页面,如下图(一般选择"构建一个自由风格的软件项目")     2.填好项目名称后,点击ok,跳转至如下页面,可以在这个页面进行项目的配置(包括拉源码.修改持续构建时间.打包部署前修改配置文件等) 3.General中的"丢弃旧的构建"可以设定持续构建的 4.在"参数化构建过程"中可以设置要构建的版本有哪些,如下 5.在源码管理模块可以设置源码地址(我们公司一般用的Git) 6.如果是自动化构建,可以在构建触发器中的