docker 与 vm 的那些事儿

本文详述了在Windows 10家庭版系统中,因受限于系统版本无法直接安装Docker,转而采用docker-toolbox在CentOS虚拟机中搭建Docker环境的全过程。包括虚拟机创建、网络配置、防火墙调整、Linux常用命令介绍,以及如何在项目中使用Docker环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习 docker 的时候,发现在 w10系统上安装和使用 docker 不太顺畅,我的是正版W10,但是安装的时候告诉我要 专业版或家庭版,瞅了下我的,哦,“家庭中文版”,安装不了,就下了 docker-toolbox,创建linux虚拟机搭建docker环境,在这里记录一下在这个过程中遇到的问题和解决思路,说不定以后还能用的上呢。

一、下载 docker-toolbox

这个我在docker官网上没找到,就搜索国内镜像,从阿里镜像下载:点此直达->

二、摸索虚拟机

1. 创建虚拟机,需要虚拟机iso文件,自行搜索下载,本人使用的是centos 7.5。下载完成后,创建虚拟机,创建时注意自行设置虚拟机存盘路径,不要默认,默认就是C盘,CPU推荐2核,只运行简单桌面和脚本足够了。

2. 网络设置。在虚拟机网络设置中设置网卡,一般选用桥接模式,待虚拟机启动正常且与物理机可以相互ping通时,按照网上帖子做法修改网卡配置文件以固定ip。参考 桥接模式下固定ip  

3. 修改防火墙配置。一般来说,如果虚拟机启动了服务,虚拟机本机可以访问,但物理机无法访问,在确保步骤2的前提下,一般为防火墙问题。centos7及以上版本防火墙配置使用 firewall,而不是原版的 iptables. 参考 Linux系统通过firewall限制或开放IP及端口  

4. 其他linux常用命令,如 df、free、vi、chmod 等。参考 Linux 命令大全 

三、搭建docker环境

在linux虚拟机中安装docker:请参考官网linux系统安装教程自行安装。

四、在项目中使用docker环境

首先引入maven配置,下载插件

<plugin>

    <groupId>com.spotify</groupId>

    <artifactId>docker-maven-plugin</artifactId>

    <version>0.4.13</version>    // 推荐使用最低版本

    <configuration>

        <dockerHost>http://ip:port</dockerHost>  // 你的虚拟机ip及docker端口(一般为2375)

        <imageName>自定义仓库名/镜像名:标签名</imageName>

        <baseImage>java</baseImage>

        <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>

        <resources>

              <resource>

                  <targetPath>/</targetPath>  // 表示 ${project.build.directory} 所在的根目录

                  <directory>${project.build.directory}</directory>

                  <include>${project.build.finalName}.jar</include>

            </resource>

        </resources>

    </configuration>

</plugin>

然后使用以下命令构建镜像。

mvn clean package docker:build 

!若物理机连接虚拟机docker端口超时,请参考这篇文章解决 连接docker超时解决  !

Docker容器和虚拟机(VM)是两种不同的虚拟化技术,它们在技术实现、资源占用、性能以及适用场景等方面存在显著差异。 ### 技术特性 Docker 容器是一种操作系统级虚拟化方法,它利用 Linux 内核的命名空间(namespaces)和控制组(cgroups)功能来隔离进程和服务。每个容器共享宿主机的操作系统内核,但拥有独立的文件系统、网络配置等资源。这种方式使得 Docker 容器非常轻量级,并且启动速度快[^1]。 相比之下,虚拟机通过硬件抽象层提供完整的操作系统环境。每个 VM 都运行在一个称为 hypervisor 的软件之上,该软件模拟了物理硬件的功能。这意味着每个 VM 可以运行不同的操作系统,并且具有较高的隔离性。然而,由于需要模拟或直接访问底层硬件,VMs 通常比容器更重且启动时间更长[^1]。 ### 资源效率性能 Docker 容器因为不需要额外的操作系统开销,所以能够更快地启动并占用较少的内存和存储空间。这种高效的资源利用使 Docker 成为部署大量小型服务的理想选择,如微服务架构中的各个组件。 虚拟机由于包含完整的操作系统镜像,因此会消耗更多的计算资源。尽管如此,随着硬件辅助虚拟化技术的发展,现代 VM 的性能已经相当接近于裸机,尤其是在 I/O 密集型的应用中表现良好[^1]。 ### 安全性和隔离性 安全性方面,虚拟机提供了更强的隔离机制,因为它完全隔绝了 guest 操作系统 host 系统以及其他 VMs。如果一个 VM 被攻破,攻击者很难影响到其他 VM 或者主机系统[^1]。 而 Docker 容器虽然也实现了某种程度上的隔离,但由于它们共享同一个内核,所以潜在的安全风险更高。一旦某个容器内的应用程序获得了对内核的不当访问权限,则可能会影响到整个宿主机器上的所有容器[^1]。 ### 使用场景 基于上述特点,Docker 更适用于那些追求敏捷开发流程、快速迭代周期以及希望最大化服务器利用率的项目。例如,在持续集成/持续交付(CI/CD)管道中使用 Docker 可以加速构建、测试及部署过程;而在云原生应用设计中,Docker 提供了一种标准化的方式来打包和分发服务。 另一方面,当涉及到遗留系统的迁移、需要支持多种操作系统平台或者对于安全要求极为苛刻的情况下,虚拟机会是一个更好的选择。比如企业内部的传统业务应用往往依赖特定版本的操作系统及其库文件,这时采用 VM 方案可以确保兼容性和稳定性[^1]。 综上所述,选择 Docker 还是虚拟机取决于具体的业务需求和技术考量因素。两者各有优势,在实际操作过程中也可能结合使用以发挥各自长处。 ```python # 示例代码:创建简单的Dockerfile用于构建Python应用镜像 FROM python:3.8-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "app.py"] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值