进阶一 · 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镜像
demo.c
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
我们现在需要给容器安装一个gcc,因此容器的yum要配置。
找到中科大的yum源:
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
安装gcc
yum install -y gcc
用docker cp把代码拷贝进去
在容器里面编译代码。
把容器提交为一个镜像。
指定运行新镜像里面的可执行程序。
这样我们就成功的使用了这个镜像里面的demo可执行。