将Linux的系统制作成Docker镜像

前言

DockerHub 上有很多的镜像,可以满足大部分的需求。这种情况我们就可以直接通过docker pull ** 从DockerHub上获取对应的镜像。
当然还有一些情况,我们需要的镜像DockerHub上不存在,例如:Linux信创的环境,在DockerHub上就很难知道对应的镜像,如果需要这种镜像的话就需要通过运行的系统来制作镜像了。

具体步骤

1. 对系统进行压缩

  • 查看系统目录
$ cd /
$ ls
bin  boot  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

/proc/sys/run/dev这几个目录都是系统启动时自动生成的,虽然也属于文件系统一部分,但是他们每次开机都会有变化,所以打包的时候就应该忽略它们

  • tar 完成系统压缩包
    1、可以选择/跟目录,然后--exclude排除不需要的目录
    2、也可以直接选择需要压缩的目录
tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .

or 

tar -cvpf /tmp/system.tar bin data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  root  sbin  srv  tmp  usr  var

参数说明:
-c或--create 建立新的备份文件
-f<备份文件>或--file=<备份文件> 指定备份文件
-p或--same-permissions 用原来的文件权限还原文件
-v或--verbose 显示指令执行过程
z或--gzip或--ungzip 通过gzip指令处理备份文件
--numeric-owner 以用户识别码及群组识别码取代用户名称和群组名称

tar 命令更多参数可参考:
Linux tar 命令
Linux tar.gz、tar、bz2、zip 等解压缩、压缩命令详解

2. 导入docker

导入docker之前,最好修改下docker的默认存储路径。
具体修改方法可参考: Linux 下修改Docker默认存储路径

  • tar 导入docker
$ docker import /tmp/system.tar linux:10.1
// linux:10.1  是自定义的镜像和tag名称

or 

cat /tmp/system.tar | docker import - linux:10.1

运行镜像容器

tips: 运行导入的镜像的时候必须带command,否则启动报如下错误. 最后的/bin/bash 不能少

$ docker run -it -d **** /bin/bash

提示: 制作的镜像文件太大,会导致启动容器时候失败: Getting the final child's pid from pipe caused "EOF"

参考文章:
[Docker 镜像导出和导入] https://yeasy.gitbook.io/docker_practice/container/import_export

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容