【Docker进阶】镜像制作-用快照制作Docker镜像

在这里插入图片描述

进阶一 · docker镜像制作


文章目录

  • 进阶一 · docker镜像制作
    • 1. 镜像制作及原因
    • 2. Docker镜像制作的方式
    • 3. 快照制作镜像


1. 镜像制作及原因

镜像制作是因为某种需求,官方的镜像无法满足需求,需要我们通过一定手段来自定义镜像来满足要求。

制作镜像往往有以下原因:

  • 编写的代码如何打包到镜像中直接随镜像发布
  • 第三方制作的内容安全性未知,如含有安全漏洞
  • 特定的需求或者功能无法满足,如需要给数据库田间审计功能
  • 公司内部要求基于公司内部的系统制作镜像,如工资内部要求使用自己的操作系统作为基础镜像

2. Docker镜像制作的方式

制作容器镜像,主要有两种方法:

  • 制作快照的方式活的景象(偶尔制作的镜像):在基础镜像上(比如Ubuntu),先登录容器中,然后安装镜像需要的所有软件,然后整体制作快照
  • Dockerfile方式构建镜像(经常更新的镜像):将软件安装的流程写成Dockerfile,使用docker build构建成容器镜像

3. 快照制作镜像

docker commit [OPTIONS] CONTAINER [REPO[:TAG]]

参数:

  • -a:提交的镜像作者
  • -c:使用dockerfile指令来创建镜像,可以修改启动指令
  • -m:提交的时候说明文字
  • -p:在commit时,将容器暂停

现在我们制作一个C++的HelloWorld镜像

【Docker进阶】镜像制作-用快照制作Docker镜像_第1张图片

demo.c

#include 
int main()
{
  	printf("hello world\n");
		return 0;
}

我们现在需要给容器安装一个gcc,因此容器的yum要配置。

找到中科大的yum源:

【Docker进阶】镜像制作-用快照制作Docker镜像_第2张图片

sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-Base.repo

运行之后。

yum makecache

【Docker进阶】镜像制作-用快照制作Docker镜像_第3张图片

安装gcc

yum install -y gcc

【Docker进阶】镜像制作-用快照制作Docker镜像_第4张图片

用docker cp把代码拷贝进去

【Docker进阶】镜像制作-用快照制作Docker镜像_第5张图片

在容器里面编译代码。

【Docker进阶】镜像制作-用快照制作Docker镜像_第6张图片

把容器提交为一个镜像。

指定运行新镜像里面的可执行程序。

这样我们就成功的使用了这个镜像里面的demo可执行。

你可能感兴趣的:(docker,容器,运维)