精华内容
下载资源
问答
  • 由于公司使用的平台比较多,每个平台都会给一个带有可编译SDK...将虚拟机打包成docker镜像也很简单,分几步吧: 1、将虚拟机打包 tar --numeric-owner --exclude=/proc --exclude=/sys -zcvpf debian-3519.tar /.

    由于公司使用的平台比较多,每个平台都会给一个带有可编译SDK的虚拟机环境,这样下来,一共5、6个虚拟机,电脑性能又不是很好,虚拟机开多了卡的不行,要是平台切换的话挺麻烦。所以我就想把这些虚拟机制作成docker镜像,使用哪个平台直接切换docker镜像就行了,能提高不少效率。

    将虚拟机打包成docker镜像也很简单,分几步吧:

    1、将虚拟机打包

     

    tar --numeric-owner --exclude=/proc --exclude=/sys -zcvpf debian-3519.tar /
    --numeric-owner:执行所属
    --exclude:排除那些文件或者目录 
    -zcvf :打包压缩 p保持文件的绝对路径

    2、导入镜像

    将打包好的docker镜像放到装有docker的系统上,执行如下命令,导入镜像:

    docker import debian-3519.tar(这是上一步打包好的docker镜像) image名字(自己定义)

    3、运行镜像

    docker run -it  image名字(上一步自己定义的) /bin/bash

     

    展开全文
  • 本文给出了一个实操例子: 在虚拟机上,将 spring-boot + dubbo 微服务(两个服务),以及它们依赖的组件 ,如zookeeper, 打包成docker 镜像。 同时,本文也对部分操作的动机或原理 进行了简单介绍。 如果你对 ...

    写在前面

    本文给出了一个实操例子: 在虚拟机上,将 spring-boot + dubbo 微服务(两个服务),以及它们依赖的组件 ,如zookeeper, 打包成docker 镜像。

    同时,本文也对部分操作的动机或原理 进行了简单介绍。

    如果你对 spring-boot,dubbo 服务, 镜像,仓库,Dockerfile,容器, 简单的shell ,端口 ,IP, 路由,子网 等有了解,那么本文会比较流畅,否者会略有跳跃。

    前置要求

    本例子的前置条件(粗略):

    一台可以访问的 centOS7 虚机(Google Cloud Platform,其实其他平台或者物理机也都一样), 服务器A的jar包 (一个Spring-boot + dubbo 服务),服务器B的jar 包(一个dubbo 服务),A 和 B 已经在 虚机上run 起来 (即满足了那些能让 A, B 在 这台虚机上 run 起来的必要配置,相关组件等,较细,就不说了)

    我们为什么要使用docker?

    docker 可以将应用打包成镜像,镜像的实例 是 容器, 它使得服务仿佛运行在一个独立的简化版的虚机里(譬如你用windows 开了一个 linux虚拟机,不过 docker镜像量级轻多得多),每个镜像之间是 完全隔绝互不干扰的。当然也有一些方式部署路由策略,使它们互相协作。

    传统方式运维,传统方式上,我们直接在 虚机上配置那些必要的配置,比如防火墙端口, 启动脚本,配置文件,环境变量,启动A B 必须的依赖组件比如 redis ZK Oracle MQ 等等 。

    docker 天然契合云的概念,它的使用 简化了 上诉操作,而且 在 维护,安全,性能 ,资源利用 等方面均有提升 ,所以 了解和学习 它是有必要的。

    但值得说明的是,一个 云平台,譬如一个 PaaS ,一般会提供给用户很多东西,比如 一些可视化操作界面,编译-部署-启动全自动流程,环境变量等配置 ,文件挂载,日志输出,重启,集群等等 ,  还有一些用户不可见的比如 弹性伸缩,网络路由,负载均衡,活性检测,自动拉起 等等 。我个人以为理解并能实现 那些 用户可见的操作 是很有必要的, 至于那些 用户不可见的 听起来高大上的技术,就比较需要时间投入了,本文的例子 并不涉及它们。

    例子开始

    现在假设我们有一个虚机,有两个Spring-boot + dubbo 服务 A  B 已经running 在上面 ,组件只用到了 ZK ,没有数据库 。

    停下服务

    先停下我们那些已经run 起来的组件(ZK)和服务(A,B)。  (代码中一些自定义服务名称/路径名 我使用XXX代替,)

    ps -ef |grep java|grep XXX                
    kill -9 ID  
    
    sh /home/jiantang2001/zk/zookeeper-3.4.14/bin/zkServer.sh start      --ZK启动
    sh /home/jiantang2001/zk/zookeeper-3.4.14/bin/zkServer.sh stop      --ZK停下
    sh /home/jiantang2001/zk/zookeeper-3.4.14/bin/zkServer.sh status   --ZK状态                            

    我们可能会 改一些代码(不改可不用此步)。那么在IDEA中重新打包,并上传到虚机里某个位置,maven 打包指令

    mvn clean package -Dmaven.test.skip=true     #maven 打包

    安装 docker 环境 

    sudo yum update
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    yum list docker-ce --showduplicates | sort -r
    sudo yum install docker-ce-17.12.1.ce
    sudo systemctl start docker             #启动
    sudo systemctl enable docker        #开机自启动
    yum -y install epel-release
    yum -y install python-pip
    yum install python3-pip
    pip3 install docker-compose
    docker-compose version

    下载 ZK 镜像 并启动

    (单机模式)

    这里第一次涉及到镜像概念,我觉得 需要解释一下,也就是说 我把ZK单独做成一个镜像,而不是选择在 服务器A /B 镜像里 放一个ZK 。这样做的原因有很多,比如 因为它俩要 共用这个ZK ,比如更方便的实现ZK 集群 等等。

    我版本选的很随便,直接从仓库拉了一个。

    你也可以使用 docker build的方式创建 ZK 镜像,可以参考  GITHUB ,这里有对应的 ZK 的Dockerfile 和启动脚本。

    docker pull zookeeper:3.4
    docker images                           # 查看所有镜像
    docker run -it -d -p 2181:2181 0e256393bf7e

       -p 2181:2181      是把容器内的2181 映射到 容器外的 2181 (为什么这么做我就不解释了,计算机网络基本知识),2181是ZK 默认端口,虽然我一般喜欢偷偷的改成2182 ...

       0e256393bf7e    是 ZK 镜像的ID  ,可以由  docker images  看到

    到这里ZK 就启动成功了,没错,就是这么简单,,,,,,,,

    你可以用两种方式验证一下 (记得确保虚机上ZK已经被我们关掉了):

    telnet 127.0.0.1 2181

    或者启动一下 服务器 A /B ,它们能启动,ZK 镜像自然功能正常。

    把A 和B 打包成镜像并启动

    A 和 B 略有不同 。

    A 是一个Spring -boot + dubbo ,它 接收 前台的restFul 请求, 端口 比如 是 8282 , 它也是个dubbo 服务,能接收B的 dubbo服务调用请求 端口 比如 是 28282。 这意味着我们需要暴露最少两个端口 .

    B仅仅是一个 dubbo 服务请求 ,但 B 需要通过环境变量去读取一些静态文件。 这意味着 这个镜像需要设置环境变量,还有一些文件挂载

    制作A的镜像 

    我们先要搞定Dockerfile ,这东西挺简单的,懂点shell 都看得懂 ,

    # 基于openjdk 镜像
    FROM openjdk:8-jdk-alpine
    
    # 将本地文件夹挂在到当前容器
    VOLUME /tmp
    
    ENV DUBBO_IP_TO_REGISTRY 35.189.127.74
    ENV DUBBO_PORT_TO_REGISTRY 20832
    
    # 复制文件到容器
    ADD XXX.jar app.jar
    
    # 声明需要暴露的端口
    EXPOSE 20832 8282
    
    # 配置容器启动后执行的命令
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    这里有一个特殊的操作: 那两个 env 指定的环境变量 DUBBO_IP_TO_REGISTRY, DUBBO_PORT_TO_REGISTRY ,IP是虚机的IP ,端口是 dubbo对外的端口。

    这样做的原因 参考的  这里 

    注意将 jar 和 Dockerfile 放到同一目录,然后进入那个目录,

    cp XXX.jar /home/jiantang2001/docker/bilDockerfile/
    cd /home/jiantang2001/docker/bilDockerfile/
    
    docker build -t xxx_server .
    
    docker run -d -p 20832:20832 -p 8282:8282 --name xxx_server xxx_server 
    
    #查看启动日志 
    docker logs xxx_server 

    制作B的镜像 

    Dockerfile

    # 将本地文件夹挂在到当前容器
    VOLUME /tmp
    
    ENV DUBBO_IP_TO_REGISTRY 35.189.127.74
    ENV DUBBO_PORT_TO_REGISTRY 20881
    ENV pmml_path /root/pmmlFile
    
    # 复制文件到容器
    ADD XXX.jar app.jar
    ADD ./pmmlFile/extraData/* /root/pmmlFile/extraData/
    
    # 声明需要暴露的端口
    EXPOSE 20881
    
    # 配置容器启动后执行的命令
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    需要额外指定一个环境变量叫做    pmml_path   

    需要额外加一些静态文件进入 镜像 (先把文件放到Jar 同一目录),应该也可以用挂载的方式实现,我直接粗暴的拷贝进去了。

    docker build -t XXX_server .
    docker run -d -p 20881:20881 --name XXX_server XXX_server

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • Docker将容器打包成镜像

    万次阅读 2017-07-27 10:54:45
    有的时候我们新建了一个镜像并运行它生成了一个容器,容器就好比一个微虚拟机,有的时候我们需要在容器里面操作一些东西,可能由于很多种原因,假设我们修改了系统配置等,那么如何将操作后的容器做一个镜像供以后...

    有的时候我们新建了一个镜像并运行它生成了一个容器,容器就好比一个微虚拟机,有的时候我们需要在容器里面操作一些东西,可能由于很多种原因,假设我们修改了系统配置等,那么如何将操作后的容器做成一个镜像供以后使用呢
    1.查看容器的信息找出CONTAINER ID

    docker ps

    2.打包成镜像

    docker commit -m  ""   -a  ""   [CONTAINER ID]  [给新的镜像命名]
    展开全文
  • 如何使用Docker部署一个web项目并打包成镜像文件 1.创建一个centos镜像 通过命令下载dockerhub上的官方镜像 docker pull centos 2.创建一个基于centos镜像的容器 通过命令docker images查看服务器上已有的镜像...

    如何使用Docker部署一个web项目并打包成镜像文件

    1.创建一个centos镜像

    通过命令下载dockerhub上的官方镜像 
    docker pull centos

    2.创建一个基于centos镜像的容器

    通过命令docker images查看服务器上已有的镜像 
    通过命令 
    docker run -dit -p 4000:8080 centos镜像名或id 
    创建一个基于centos镜像的容器在后台运行并将服务器的4000端口映射到容器中的8080端口

    3.将jdk,tomcat的安装包和web项目上传至镜像中

    docker cp /usr/local/jdk安装包 容器名:容器地址
    docker cp /usr/local/tomcat安装包 容器名:容器地址
    docker cp /usr/local/web项目 容器名:容器地址

    4.进入容器并操作

    通过命令 
    docker attach 容器名或id 
    进入容器中

    安装jdk和tomcat的步骤和在linux中安装步骤一致,你可以把容器当成一个linux虚拟机, 
    之后启动tomcat服务

    5.验证

    在浏览器上输入http://服务器ip:4000,如果出现tomcat页面则成功了

    6.将容器打包成镜像

    docker commit -a "runoob.com" -m "my apache" 容器名称或id 打包的镜像名称:标签 
    OPTIONS说明: 
    -a :提交的镜像作者; 
    -c :使用Dockerfile指令来创建镜像; 
    -m :提交时的说明文字; 
    -p :在commit时,将容器暂停。

    7.上传至你的dockerhub

    使用您的Docker ID登录 
    如果您没有Docker帐户,请在cloud.docker.com注册一个 。记下你的用户名。 
    登录到本地计算机上的Docker公共注册表。 
    docker login

    标记镜像 
    将本地映像与注册表上的存储库相关联的符号是 username/repository:tag。该标签是可选的,但推荐使用,因为这是注册管理机构为Docker镜像提供版本的机制。给存储库并为上下文标记有意义的名称,例如 get-started:part2。这将把图像放入get-started存储库并标记为part2。 
    现在,把它们放在一起来标记镜像。运行docker tag image您的用户名,存储库和标签名称,以便镜像将上传到您想要的目的地。该命令的语法是: 
    docker tag image username/repository:tag

    例如: 
    docker tag friendlyhello john/get-started:part2

    运行docker镜像以查看新标记的镜像。(你也可以用docker image ls。) 
    docker images 
    REPOSITORY TAG IMAGE ID CREATED SIZE 
    friendlyhello latest d9e555c53008 3 minutes ago 195MB 
    john/get-started part2 d9e555c53008 3 minutes ago 195MB 
    python 2.7-slim 1c7128a655f6 5 days ago 183MB 

    发布镜像 
    将您的标记镜像上传到存储库: 
    docker push username/repository:tag

    8.下载镜像

    一旦完成,这个上传的结果是公开的。如果你登录到Docker Hub,你将会看到那个新的镜像和它的pull命令。 
    从远程存储库中提取并运行映像 
    从现在起,您可以使用docker run此命令在任何机器上使用并运行您的应用程序: 
    docker run -p 4000:80 username/repository:tag

    如果图像在机器上本地不可用,Docker将从存储库中取出。

    9.镜像保存到本地

    # docker save -o centos_nginx.tar zlyang/nginx

    注:centos_nginx.tar为保存到本地后的包名

        zlyang/nginx 为被打包的对象镜像

    10.镜像上传

    到此,镜像就都打包完成了,如果在一台新机器还原docker镜像,

    只需要使用:docker load --input centos_nginx.tar就可以了。

    展开全文
  • 1.确认 cpu 是否支持(需开启虚拟化) 执行 egrep "(svm|vmx)" /proc/cpuinfo 出现 vmx 或 svm 即表明支持,如未出现需确认是否支持 ...sudo apt-get install spice-...镜像,创建虚拟机可直接选择此文件作为虚拟盘
  • KVM创建虚拟机,并制作成镜像

    千次阅读 2015-06-23 10:49:11
    利用虚拟机镜像文件,开出虚拟机 步骤1、最小化安装操作系统# cat /etc/issue CentOS release 6.6 (Final) 最小化安装(安装过程略)2、安装kvm查看宿主机的cpu是否支持KVM # grep -E -o '(vmx|svm)' --color=auto...
  • 1.克隆虚拟机镜像 1.右击当前虚拟机–》选择管理–》选择克隆 2.选择克隆自虚拟机当前状态 3.选择完整克隆–》选择保存路径即可 2.虚拟机导入镜像 1.打开虚拟机,选择刚才复制的镜像 2.在主页中就可以看到刚才...
  • Spring Boot应用Docker打包成镜像

    千次阅读 2017-11-09 10:31:48
    本教程将引导你通过建立一个Docker镜像来运行Spring Boot应用。 你将构建什么 Docker是一个具有社區性的Linux容器管理工具集,它允許用户发布镜像或者使用其他开发者发布的镜像。Docker镜像本質上是一个進程的...
  • 将自己的ubuntu18.04打包成镜像

    万次阅读 2018-11-10 10:40:06
    Distribution:打包一个可与朋友分享的iso文件,不包括你的个人数据和配置信息。 Customize: 软件设置 Clea WorkingFolder:清除临时文件 Check Log:检查remastersys.log Quit:退出Remastersys Backup  
  • Springboot项目打包成Docker镜像 因Springboot项目开发完成后,需要打包成Docker中镜像部署到服务器上,故记录过程备忘. 0 制作基础 Springboot项目jar包. linux虚拟机(centos7),安装docker,且docker中安装java8...
  • 虚拟机镜像制作

    2020-09-07 19:02:59
    虚拟机镜像制作 一. 下载安装vmware vmware 官方下载地址:https://www.vmware.com/cn.html。 安装vmware ,按照操作提示,选择下一步就可以。 2. 连接远程vmware虚拟机 进入vmware 首页,选择连接到远程服务器。 ...
  • 第二步:打开对应文件夹(比如下载kali镜像文件) (1)点击kali-images/ (2)点击自己需要的版本(此处我点击的 kali-2018.3a/)  ,iso后缀文件即为镜像文件,点击即可下载。 转载于:...
  • 本文作者: 峡州仙士 原文链接: ...版权声明: 本博客所有文章除特别声明外,均采用 ...今天我在VMware和VitualBox虚拟机中安装了64位的安卓x86,安装完成,仅调为中文,没有安装其他任何软件、更...
  • 最近在淘宝上学习springcloud教程,其中有几节课是讲解讲本地springboot服务打包成镜像并推送到云服务器私有仓库,但是教程里面用的事Mac环境,我的是Windows环境,而且课程里面没有讲解docker本地打包所需要的必备...
  • VirtualBox虚拟机导出镜像及导入镜像

    千次阅读 2011-07-15 16:32:26
    1.将virtualBox安装的目录加入到环境变量path里 ...5.在已新添加的虚拟机 存储->>IDE控制器 选择虚拟光驱(.iso文件,在VirtualBox安装目录下) 6.修改网络的物理地址,(网络-》高级-》点击刷新按钮)
  • 如何把自己的Kali Linux 虚拟机系统制定iso镜像

    千次阅读 热门讨论 2021-02-02 16:16:32
     LiveBuildaCustomKali ISO 创建自己的KALI ISO   最早使用 Kali是在19年...但kali中安装和配置了大量文件,如果安装纯净版再搭建一遍,是很费事的一件事,于是乎,琢磨着是否可以将自己kali定制iso镜像,功夫不
  • @SpringBootApplication @RestController public class DockerImagesApplication { public static void main(String[] args) { SpringApplication.run(DockerImagesApplication.class, args);...
  • 到网上找了很久,发现有一个将本机的系统打包成docker镜像的方法,这里试一试,看能不能行。 首先找一个已经配置好yum源的纯净的centos7系统,然后: 1,cd / tar -cf system.tar bin dev lib64 media opt root ...
  • 各个版本的虚拟机镜像下载

    万次阅读 2017-01-05 20:18:32
    为你提供各个Linux发行版的虚拟机镜像,打开即用,就是这么任性!  百度云链接:http://pan.baidu.com/s/1dFj38Ox 更多版本更新中。。。。。。。 如果失效,请联系更新 欢迎关注博主的微信公众号 ...
  • 虚拟机镜像备份用于保存镜像,便于后续多次使用,可以省去安装软件的过程。类似于AWS中的自定义AMI。 Windows镜像备份操作过程如下: 1:运行 “C:\Windows\System32\Sysprep\sysprep.exe”。 这是为了做通用化...
  • 一. 看看Dockerfile FROM python COPY requReturn_2.py /...2. 然后要注意,如果你的flask服务是需要连接mysql数据库的,你的主机号可千万别一不注意写0.0.0.0,连接mysql的主机号还是要写你宿主机的主机号。
  • 情况是这样的,我想装一个gmt软件,我虚拟机上装崩了(这个软件确实难装),然后我同学电脑系统是Linux的,他还装好软件了,我就想能不能直接把他的系统拷到我的虚拟机里面,求大佬指点
  • 将配好环境的Ubuntu16.04打包制作成镜像ISO 安装systemback sudo add-apt-repository ppa:nemh/systemback sudo apt-get update && sudo apt-get install systemback unionfs-fuse 制作Ubuntu镜像 1.在搜索...
  • 另外还有一种镜像是使用ghost软件制作的,格式为gho的镜像,而ghost镜像常常也被再封装为iso镜像,iso格式的镜像使用WinRAR之类的压缩软件就可以打开,也可以直接解压。 假设我们已经在硬盘里下载一个iso格式的系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,701
精华内容 9,480
关键字:

虚拟机打包成镜像