Docker编译openwrt

目的

使用 Docker 去构建一个专门用于 Open­Wrt 编译的系统环境容器. 这样的好处是编译的过程始终在容器内进行,可以保持编译环境的高度一致性,基本上杜绝了因编译环境不同导致的编译失败的情况,有助于提高效率和编译成功率,同时省去了对编译环境的重复配置。

docker可以认为是一个轻量化的虚拟机。从别的地方获取镜像(只读的),然后docker run运行镜像创建一个“虚拟机”。这个虚拟机里面的内容一般不会被保存,但是可以将物理机的目录挂在到“虚拟机上”实现修改宿主机上的东西,类似于VMware的共享目录。

  1. Docker基础

什么是Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用免费的社区版就可以了。

Docker特点

在学习一项技术时,了解该技术的特点才能更好地实际运用。Docker 作为当前主流的一个开源容器引擎,其主要特点如下。

.更快速的交付和部署

开发者可以使用一个标准的Docker镜像来构建一套开发容器, 开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker 可以快速创建容器以及快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker容器轻,且启动速度快,可以大量地节约开发、测试和部署的时间。

.更高效的虚拟化

Docker容器在运行时,不需要额外的虚拟机程序的支持。由于它是内核级的虚拟化,所以可以实现更高的性能和效率。

.更轻松的迁移和扩展

Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人计算机和服务器等。这种良好的兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个平台,十分有利于应用的迁移和扩展。

.更简单的管理

使用Docker, 只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

除上述几个特点外,Docker还具有实现逻辑分离、适合与面向服务的架构配合使用等特点。

Docker与虚拟机的区别

https://img-blog.csdnimg.cn/20190506153629598.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDAyNjg1,size_16,color_FFFFFF,t_70

Docker的引擎

https://img-blog.csdnimg.cn/20190506153920458.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDAyNjg1,size_16,color_FFFFFF,t_70

Docker Engine 中包含了三个核心组件(Docker CLI,REST API和Docker daemon),这三个组件的具体说明如下。

dockerCLI ( command line interface ):

表示Docker命令行接口,开发者可以在命令行由使用Docker相关指令与Docker守护进程进行交互,从而管理诸如image (镜像) container(容器人network (网络)和data volumes (数据卷)等实体。

REST API:

表示应用程序API接口,开发者通过该API接口可以与Docker的守护进程进行交互,从而指示后台进行相关操作。

docker daemon:

表示Docker的服务端组件,它是Docker架构中运行在后台的一个守护进程,可以接收并处理来自命令行接口及API接口的指令,然后进行相应的后台操作。

对于开发者而言,既可以使用编写好的脚本文件通过REST API来实现与Docker进程交互,也可以直接使用Docker相关指令,通过命令行接口来与Docker进程交互,而其他一些Docker应用则是通过底层的API和CLI进行交互的。

Docker架构

https://img-blog.csdnimg.cn/20190506154754927.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDAyNjg1,size_16,color_FFFFFF,t_70

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker

面向对象

容器

对象

镜像

概念

说明

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

Docker

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于使用Docker Desktop编译OpenWrt,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了Docker Desktop,并且它正在运行。 2. 打开终端或命令提示符,然后使用以下命令拉取OpenWrt源代码的Docker镜像: ``` docker pull openwrtorg/sdk:latest ``` 3. 接下来,创建一个新的工作目录,用于存储OpenWrt的配置和输出文件。可以使用以下命令创建一个名为"openwrt"的目录: ``` mkdir openwrt ``` 4. 进入"openwrt"目录并创建一个名为"config"的子目录: ``` cd openwrt mkdir config ``` 5. 在"config"目录中创建一个名为"seed.config"的文件,并将您的OpenWrt配置选项添加到该文件中。例如,您可以使用文本编辑器打开该文件并添加以下内容: ``` CONFIG_TARGET_x86=y CONFIG_TARGET_x86_64=y CONFIG_TARGET_x86_64_Generic=y ``` 这些配置选项示例适用于x86_64架构的通用OpenWrt编译。 6. 回到"openwrt"目录,并使用以下命令运行Docker容器: ``` docker run --rm -it -v $(pwd)/config:/home/user/openwrt/config openwrtorg/sdk:latest /bin/bash ``` 此命令将运行一个新的Docker容器,并将"config"目录映射到容器内的"/home/user/openwrt/config"目录。 7. 在Docker容器中,使用以下命令进入OpenWrt的源代码目录: ``` cd /home/user/openwrt/sdk ``` 8. 运行以下命令以安装OpenWrt的构建工具和依赖项: ``` ./scripts/feeds update -a ./scripts/feeds install -a ``` 9. 配置OpenWrt编译选项,运行以下命令: ``` make menuconfig ``` 在菜单界面中,您可以根据需要进行选择和配置。完成后,保存并退出菜单。 10. 开始编译OpenWrt固件,运行以下命令: ``` make -j$(nproc) ``` 这将使用所有可用的CPU核心进行编译编译过程可能需要一些时间,具体取决于您的系统性能和OpenWrt配置的复杂程度。 11. 编译完成后,在Docker容器中可以找到生成的固件文件。您可以退出容器并在本地系统上访问它们。运行以下命令退出容器: ``` exit ``` 12. 现在,您可以在"openwrt"目录中找到生成的固件文件,可以根据需要使用它们。 请注意,这只是一个基本的说明,您可能需要根据自己的需求和环境进行适当的调整。确保您已经熟悉DockerOpenWrt的基本概念,并参考OpenWrt官方文档以获取更详细的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值