概述

使用docker安装linux的同学都知道,你在docker提供的仓库安装linux系统,你就会体验到最精简的、最纯净的linux系统,当然,他会精简到你连ifconfig命令都需要自己配置,恰好对于我来说,这并不是我想要的。如果我去使用VMware安装linux系统,但是我已经使用了docker,就不能使用vmware了,那么你就会问了,docker、vmware难道就不能同时使用?

那么,我告诉你,是的。

问题就出在这里,网上有大把文章谈及docker与vmware区别,但是很少有文章说明他们在windows上使用的虚拟技术的区别。

当前 Docker 官方出品的 Windows 客户端, 叫做Docker Desktop for Windows.而其正常运行的条件之一是系统开启了 Hyper-V 虚拟化服务. 由上文知 Hyper-V 是 Type-1 的 Hypervisor, 这将使得像 VMware 等作为 Type-2 Hypervisor 的软件无法运行.

此时矛盾已经出现: 使用 Hyper-V 技术的 Docker 客户端与其他 Type-2 Hypervisor 不能同时运行, 必须重启并关闭 Hyper-V 才能再次运行其他的 Type-2 Hypervisor 软件.

摘自Windows 下 Docker 与 VMware 共存

@

那么知道原因后,就要着手解决啊,不想使用docker和VMware来回切换,最初的蠢办法就是在另一个系统上(我装了双系统)使用vmware,在windows使用docker,反正虚拟机也只是在上课的时候用用,但是,回想一下不对啊,这样不就更麻烦了吗。

回头一想,既然docker可以安装linux系统,那么我可不可以使用自己的镜像文件给导入进去呢?

我将原来在docker中安装的linux系统导出,查看其内部构成,这不就是我们常见的那些linux文件吗。所以我只需要将原有的linux系统压缩成docker镜像文件,然后再导入docker,问题不都解决了吗。

如果,你还没安装docker,见:值得学习的应用容器引擎docker安装

壹:过程

一、打包linux镜像

打包linux系统就要做到精简,一些临时文件不需要,就不用打包,只需要将我们需要的东西打包就可以。使用以下命令,记得加sudo,将linux所有文件打包成system.tar,保存在tmp目录下,排除掉一些不需要的目录,不要将最后面有一个点给忘记了。

tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .

二、从linux系统中导出到物理机(windows)

如果你有一个小伙伴,大可在他的电脑里的Vmware完成这第一、二步,然后使用ftp工具导出即可。

打包之后,我将压缩包导出,因为我里面安装了hadoop、hbase、zookeeper、hive等一系列东西,他就是现在的2.57GB大小。

请忽略这一段:(我是从deepin系统中将文件导出到windows中的,这里记录一下,方便自己以后使用,windows与linux双系统文件系统不共享,在windows中无法访问deepin的文件系统,但是在deepin中可以读取windows文件,不能写,那么我在deepin(linux)中的压缩包怎么弄到windows呢,这时候神器出场了,使用linux reader就可以实现在windows中读写deepin的文件系统,这东西很奈斯啊)

三、导入到docker中

在cmd中,导入刚刚压缩好的压缩包,这里你必须到system.tar所在目录,要不然,你直接加上system.tar的绝对路径,不然肯定会报错找不到该文件。

docker import system.tar

导入后使用docker images查看镜像,会有一个未命名,没有标签的镜像,这时候我们就需要给该镜像打上标签,方便日后使用及查看

四、打标签

使用docker tag命令为你的镜像打标签,后面接镜像id 以及仓库名:标签。

docker tag [镜像id] linux/centos:hadoop



到这一步,你已经成功了一大半,这时候镜像已经准备好了,就需要使用镜像运行一个容器了。

五、运行容器

使用以下命令运行你自己创建的镜像,注意后面的/bin/bash不能少。

docker run -t -i [镜像id] /bin/bash

测试 ,嗯,java还在,那么其他的都还在。



那么,到现在大功就搞成了。

贰:docker相关操作

一、docker save

将镜像文件保存为本地文件。

Usage:  docker save [OPTIONS] IMAGE [IMAGE...]

Save one or more images to a tar archive (streamed to STDOUT by default)

Options:
-o, --output string Write to a file, instead of STDOUT 例子:docker save -o mysql.tar mysql:latest

二、docker import

将容器导出为本地文件

Usage:  docker export [OPTIONS] CONTAINER

Export a container's filesystem as a tar archive

Options:
-o, --output string Write to a file, instead of STDOUT 例子:docker export -o mysql.tar

三、docker load

从本地读取镜像文件

Usage:  docker load [OPTIONS]

Load an image from a tar archive or STDIN

Options:
-i, --input string Read from tar archive file, instead of STDIN
-q, --quiet Suppress the load output 例子: docker load -i mysql.tar

四、docker import

从本地文件创建镜像

Usage:  docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

Import the contents from a tarball to create a filesystem image

Options:
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Set commit message for imported image 例子:docker import mysql.tar

建议:一般save、load组合使用,export、import组合使用。

作者有话

嗯,截止到我发这篇文章之前,我再次向他妥协了,原因是因为修改了docker中我导入的容器的内容时,重启后,他并不会生效,并且没有找到有用的方法解决,如果你有可以解决的方法,欢迎留言告诉笔者,笔者将感激不尽,不过这篇博客仍然可以作为我的笔记方便以后查看,最终我使用的方法是在需要使用虚拟机的时候关闭Hyper -v。

1,如果用docker,
第一步:在控制面板中勾选Hyper -v
第二步:在cmd,以管理员身份运行:
bcdedit /set hypervisorlaunchtype auto
第三步;重启 2,开启虚拟机linux
第一步:在控制面板中取消勾选Hyper -v
第二步:在cmd中,以管理员身份运行:
bcdedit /set hypervisorlaunchtype off
第三步;重启

方法引用:docker和虚拟机不兼容问题

【docker linux】linux系统镜像转化为docker镜像的更多相关文章

  1. [视频教程] 如何在Linux深度系统deepin下安装docker

    笔记: 安装docker的命令 curl -sSL https://get.docker.com/ | sh service docker start 排查错误的命令 strace 视频地址在此:ht ...

  2. 在Linux深度系统deepin下安装docker

    wget -qO- https://get.docker.com/ | sh wget -qO- https://get.docker.com/ | sh

  3. 【docker】linux系统centOS 7上安装docker

    要求: 一个centOS 7系统  虚拟就上安装CentOS 7步骤 本文操作在本机上使用xshell连接虚拟机上的centOS 7进行操作 1.Docker 要求 CentOS 系统的内核版本高于 ...

  4. Docker在linux系统下的安装

    系统要求 本安装教程仅限于CentOS7,其他系统不适用.centos-extras仓库必须是启用状态,这个仓库默认状态是启用,如果不是启用状态,请修改. 卸载旧版本的Docker Docker的旧版 ...

  5. 【Docker】在Linux系统中安装Docker虚拟机、启动停止重启查看Docker命令

    安装Docker 文章目录 安装Docker Docker虚拟机架构 在Linux系统中安装Docker虚拟机 管理Docker虚拟机 参考资料 Docker虚拟机架构 Docker创建的所有虚拟实例 ...

  6. linux命令的使用 以及基本docker命令及docker镜像安装

    以linux CentOS-7 64位 系统为例 查看ip  ifconfig 固定ip 输入vim /etc/sysconfig/network-scripts/ifcfg-ens3 其中vim是修 ...

  7. Docker在windows系统以及Linux系统的安装

    Docker简介和安装 Docker是什么 Docker 是一个应用打包.分发.部署的工具 你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要, 而普通虚拟机则是一个完 ...

  8. Docker在Linux上运行NetCore系列(二)把本地编译好的镜像发布到线上阿里云仓库

    转发请注明此文章作者与路径,请尊重原著,违者必究. 系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 开始 本篇文章结束在本地创建完成镜像后, ...

  9. Linux系统 Centos7 环境基于Docker部署Rocketmq服务

    消息队列 基本概述 MQ,Message Queue,基于TCP协议构建的简单协议,区别于具体的通信协议. 基于通信协议定义和抽象的更高层次的通信模型,一般都是生产者和消费者模型,又或者说服务端和客户 ...

随机推荐

  1. Prometheus 监控平台的搭建

    1. 环境准备 两台ubuntu 16.04 服务器内网IP 作用 安装软件 172.16.4.11                 监控的服务端                Prometheus( ...

  2. 我的学习笔记之node----node.js+socket.io实时聊天(1)

    本想着从hello word开篇,也确实写了相关学习笔记.各种原因吧,现在又着急写出作品,便作罢. 这里将记录一个node.js+socket.io的实时聊天程序.(当然我也是跟着网上各种教程资料学习 ...

  3. Java反射之成员方法的反射

    上一篇介绍了Java反射之成员变量的反射,这次介绍成员方法的反射. [一]Method类 Method类中封装了所有java方法的属性,包括该方法是否私有,该方法的修饰符,返回值,参数,抛的错误等等. ...

  4. Mybatis(二) Mybatis通用的写法

    2.1 用来循环容器的标签forEach,查看例子   foreach元素的属性主要有item,index,collection,open,separator,close. item:集合中元素迭代时 ...

  5. 如何使用Postman编写Testlink测试用例

    Postman2Testlink 通过Postman快速操作testlink测试用例.测试套件.测试计划.添加关键词.添加自定义字段等等. 工具地址 https://github.com/liyinc ...

  6. Mol. Cell. Proteomics | 糖蛋白基因组学:一种常见的基因多态性影响人血清胎球蛋白/α-2-HS-糖蛋白的糖基化形式

    大家好,本次分享的是发表在Molecular & Cellular Proteomics上的一篇关于糖蛋白基因组学的文章,题目是Glycoproteogenomics: A Frequent ...

  7. 用c写的简单的日历(学习模块划分)

    简单日历 ​ 主要目的是学习函数模块划分,成品大概是这样,加了一些花里胡哨的东西(/▽\) ​ 分三个模块,主函数.c 显示.c 计算.c 与.h 文件 有两种实现方式,区别在于是否以数组在模块之间传 ...

  8. JS 冒泡排序详解

    冒泡排序原理:比较相邻两个数的大小,如果第一个数大于第二个数,那么交换位置,从第一位数开始,对后面每一对相邻的数据进行同样的比较和交换,直到最后没有任何一位需要进行比较大小和交换: 思路演算: arr ...

  9. leetcode 签到 面试题 17.16. 按摩师 动态规划

    题目: 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长 ...

  10. JSP+Servlet+C3P0+Mysql实现的azhuo商城

    项目简介 项目来源于:https://gitee.com/xuyizhuo/shopping 原仓库中缺失jar包及sql文件异常,现将修改过的源码上传到百度网盘上. 链接:https://pan.b ...