关于docker:
Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括流行的Linux机器、windows机器),也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
所以很多应用由于其环境特殊,是需要运行在docker里的。但6q默认没有支持docker。之前有做过,这次整理到内核和文件系统中:

一、修改配置文件,使内核支持docker。

--- a/arch/arm/configs/imx_v7_defconfig
+++ b/arch/arm/configs/imx_v7_defconfig
@@ -46,7 +46,8 @@ CONFIG_DEFAULT_HOSTNAME="(none)"CONFIG_SWAP=yCONFIG_SYSVIPC=yCONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=yCONFIG_CROSS_MEMORY_ATTACH=y# CONFIG_FHANDLE is not setCONFIG_USELIB=y
@@ -117,16 +118,30 @@ CONFIG_LOG_CPU_MAX_BUF_SHIFT=12CONFIG_GENERIC_SCHED_CLOCK=yCONFIG_CGROUPS=y# CONFIG_CGROUP_DEBUG is not set
-# CONFIG_CGROUP_FREEZER is not set
-# CONFIG_CGROUP_DEVICE is not set
-# CONFIG_CPUSETS is not set
-# CONFIG_CGROUP_CPUACCT is not set
-# CONFIG_MEMCG is not set
-# CONFIG_CGROUP_PERF is not set
-# CONFIG_CGROUP_SCHED is not set
-# CONFIG_BLK_CGROUP is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_PAGE_COUNTER=y
+CONFIG_MEMCG=y
+CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_SWAP_ENABLED=y
+CONFIG_MEMCG_KMEM=y
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_BLK_CGROUP=y
+CONFIG_DEBUG_BLK_CGROUP=y# CONFIG_CHECKPOINT_RESTORE is not set
-# CONFIG_NAMESPACES is not set
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y# CONFIG_SCHED_AUTOGROUP is not set# CONFIG_SYSFS_DEPRECATED is not setCONFIG_RELAY=y
@@ -206,6 +221,7 @@ CONFIG_HAVE_PERF_USER_STACK_DUMP=yCONFIG_HAVE_ARCH_JUMP_LABEL=yCONFIG_ARCH_WANT_IPC_PARSE_VERSION=yCONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=yCONFIG_HAVE_CC_STACKPROTECTOR=y# CONFIG_CC_STACKPROTECTOR is not setCONFIG_CC_STACKPROTECTOR_NONE=y
@@ -243,6 +259,7 @@ CONFIG_LBDAF=y# CONFIG_BLK_DEV_BSG is not set# CONFIG_BLK_DEV_BSGLIB is not set# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLK_DEV_THROTTLING=y# CONFIG_BLK_CMDLINE_PARSER is not set#
@@ -258,6 +275,7 @@ CONFIG_EFI_PARTITION=yCONFIG_IOSCHED_NOOP=yCONFIG_IOSCHED_DEADLINE=yCONFIG_IOSCHED_CFQ=y
+CONFIG_CFQ_GROUP_IOSCHED=y# CONFIG_DEFAULT_DEADLINE is not setCONFIG_DEFAULT_CFQ=y# CONFIG_DEFAULT_NOOP is not set
@@ -523,7 +541,7 @@ CONFIG_CMA_AREAS=7CONFIG_FORCE_MAX_ZONEORDER=14CONFIG_ALIGNMENT_TRAP=y# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_SECCOMP is not set
+CONFIG_SECCOMP=yCONFIG_SWIOTLB=yCONFIG_IOMMU_HELPER=y# CONFIG_XEN is not set
@@ -610,7 +628,7 @@ CONFIG_BINFMT_ELF=yCONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=yCONFIG_BINFMT_SCRIPT=y# CONFIG_HAVE_AOUT is not set
-CONFIG_BINFMT_MISC=m
+CONFIG_BINFMT_MISC=yCONFIG_COREDUMP=y#
@@ -725,14 +743,21 @@ CONFIG_PACKET=yCONFIG_UNIX=y# CONFIG_UNIX_DIAG is not setCONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y# CONFIG_XFRM_SUB_POLICY is not set# CONFIG_XFRM_MIGRATE is not set# CONFIG_XFRM_STATISTICS is not setCONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not setCONFIG_INET=y# CONFIG_IP_MULTICAST is not setCONFIG_IP_ADVANCED_ROUTER=y
+# CONFIG_IP_FIB_TRIE_STATS is not set
+CONFIG_IP_MULTIPLE_TABLES=y
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_ROUTE_CLASSID=yCONFIG_IP_PNP=yCONFIG_IP_PNP_DHCP=y# CONFIG_IP_PNP_BOOTP is not set
@@ -740,8 +765,8 @@ CONFIG_IP_PNP_DHCP=y# CONFIG_NET_IPIP is not set# CONFIG_NET_IPGRE_DEMUX is not setCONFIG_NET_IP_TUNNEL=y
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_NET_UDP_TUNNEL is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_NET_UDP_TUNNEL=y# CONFIG_NET_FOU is not set# CONFIG_NET_FOU_IP_TUNNELS is not set# CONFIG_GENEVE is not set
@@ -792,7 +817,10 @@ CONFIG_NETFILTER=y# CONFIG_TIPC is not set# CONFIG_ATM is not set# CONFIG_L2TP is not set
-# CONFIG_BRIDGE is not set
+CONFIG_STP=y
+CONFIG_BRIDGE=y
+CONFIG_BRIDGE_IGMP_SNOOPING=y
+# CONFIG_BRIDGE_VLAN_FILTERING is not setCONFIG_HAVE_NET_DSA=yCONFIG_VLAN_8021Q=y# CONFIG_VLAN_8021Q_GVRP is not set
@@ -821,8 +849,8 @@ CONFIG_DNS_RESOLVER=yCONFIG_RPS=yCONFIG_RFS_ACCEL=yCONFIG_XPS=y
-# CONFIG_CGROUP_NET_PRIO is not set
-# CONFIG_CGROUP_NET_CLASSID is not set
+CONFIG_CGROUP_NET_PRIO=y
+CONFIG_CGROUP_NET_CLASSID=yCONFIG_NET_RX_BUSY_POLL=yCONFIG_BQL=y# CONFIG_BPF_JIT is not set
@@ -874,6 +902,7 @@ CONFIG_CAN_MCP251X=y# CONFIG_IRDA is not set# CONFIG_BT is not set# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=yCONFIG_WIRELESS=yCONFIG_CFG80211=y# CONFIG_NL80211_TESTMODE is not set
@@ -1243,17 +1272,18 @@ CONFIG_NETDEVICES=yCONFIG_MII=yCONFIG_NET_CORE=y# CONFIG_BONDING is not set
-# CONFIG_DUMMY is not set
+CONFIG_DUMMY=y# CONFIG_EQUALIZER is not set# CONFIG_NET_TEAM is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_IPVLAN is not set
-# CONFIG_VXLAN is not set
+CONFIG_MACVLAN=y
+# CONFIG_MACVTAP is not set
+CONFIG_IPVLAN=y
+CONFIG_VXLAN=y# CONFIG_NETCONSOLE is not set# CONFIG_NETPOLL is not set# CONFIG_NET_POLL_CONTROLLER is not set# CONFIG_TUN is not set
-# CONFIG_VETH is not set
+CONFIG_VETH=y# CONFIG_VIRTIO_NET is not set# CONFIG_NLMON is not set@@ -2552,10 +2582,10 @@ CONFIG_HDMI=y# Console display driver support#CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_LOGO is not set
+CONFIG_LOGO=yCONFIG_LOGO_LINUX_MONO=yCONFIG_LOGO_LINUX_VGA16=yCONFIG_LOGO_LINUX_CLUT224=y
@@ -3282,6 +3312,13 @@ CONFIG_RTC_DRV_RX8010=y# CONFIG_RTC_DRV_RP5C01 is not set# CONFIG_RTC_DRV_V3020 is not set+
+
+
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y;
+CONFIG_NETFILTER_XT_MATCH_IPVS=y;
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y;
+## on-CPU RTC drivers#
@@ -3738,6 +3775,8 @@ CONFIG_FS_MBCACHE=y# CONFIG_XFS_FS is not set# CONFIG_GFS2_FS is not set# CONFIG_OCFS2_FS is not set
+CONFIG_BTRFS_FS=y
+CONFIG_BTRFS_FS_POSIX_ACL=y# CONFIG_BTRFS_FS is not set# CONFIG_NILFS2_FS is not set# CONFIG_F2FS_FS is not set
@@ -3757,7 +3796,7 @@ CONFIG_QUOTACTL=yCONFIG_AUTOFS4_FS=yCONFIG_FUSE_FS=y# CONFIG_CUSE is not set
-# CONFIG_OVERLAY_FS is not set
+CONFIG_OVERLAY_FS=y## Caches
@@ -4119,7 +4158,7 @@ CONFIG_CRYPTO_XTS=y# Hash modes#CONFIG_CRYPTO_CMAC=y
-# CONFIG_CRYPTO_HMAC is not set
+CONFIG_CRYPTO_HMAC=y# CONFIG_CRYPTO_XCBC is not set# CONFIG_CRYPTO_VMAC is not set@@ -4204,6 +4243,7 @@ CONFIG_CRYPTO_DEV_MXS_DCP=y## Library routines#
+CONFIG_RAID6_PQ=yCONFIG_BITREVERSE=yCONFIG_HAVE_ARCH_BITREVERSE=yCONFIG_RATIONAL=y
@@ -4250,6 +4290,10 @@ CONFIG_DECOMPRESS_XZ=yCONFIG_DECOMPRESS_LZO=yCONFIG_DECOMPRESS_LZ4=yCONFIG_GENERIC_ALLOCATOR=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=y
+CONFIG_TEXTSEARCH_BM=y
+CONFIG_TEXTSEARCH_FSM=yCONFIG_ASSOCIATIVE_ARRAY=yCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT_MAP=y

然后重新编译内核,生成新的zImage并替换。
二、文件系统中添加对应的docker命令和要用的脚本

forlinx@forlinx:~/linux/rootfs/usr/bin$ ls doc*
docker  dockerd  docker-init  docker-proxy
forlinx@forlinx:~/linux/rootfs/usr/bin$

我这里是用的直接编译好的命令,其他cpu或者系统需要使用的话可以找到docker源码交叉编译一下可执行文件。
将cgroup的挂载脚本添加到文件系统中:

forlinx@forlinx:~/linux/rootfs/forlinx/shell$ ls
cgroupfs-mount.sh  gprs.sh  me909s.sh  mf210.sh  wifi.sh
forlinx@forlinx:~/linux/rootfs/forlinx/shell$ 

制作出烧写的文件系统,和刚才的内核一同烧写。

三、测试

先执行挂载脚本

root@imx6qsabresd:/forlinx/shell# ./cgroupfs-mount.sh
root@imx6qsabresd:/forlinx/shell#

然后后台执行dockerd命令,开启管理进程

root@imx6qsabresd:/forlinx/shell# dockerd &
[1] 906
root@imx6qsabresd:/forlinx/shell# WARN[2011-06-20T20:12:47.131209033Z] Error while setting daemon root propagation, this is not generally critical but may cause some functionality to not work or fallback to less desirable behavior  dir=/var/lib/docker error="error writing file to signal mount cleanup on shutdown: open /var/run/docker/unmount-on-shutdown: no such file or directory"
WARN[2011-06-20T20:12:47.132329366Z] could not change group /var/run/docker.sock to docker: group docker not found
INFO[2011-06-20T20:12:47.162946033Z] libcontainerd: started new containerd process  pid=915
INFO[2011-06-20T20:12:47.163698699Z] parsed scheme: "unix"                         module=grpc
INFO[2011-06-20T20:12:47.163807366Z] scheme "unix" not registered, fallback to default scheme  module=grpc
INFO[2011-06-20T20:12:47.186733699Z] ccResolverWrapper: sending new addresses to cc: [{unix:///var/run/docker/containerd/containerd.sock 0  <nil>}]  module=grpc
INFO[2011-06-20T20:12:47.186960699Z] ClientConn switching balancer to "pick_first"  module=grpc
INFO[2011-06-20T20:12:47.187860033Z] pickfirstBalancer: HandleSubConnStateChange: 0x1484f2f0, CONNECTING  module=grpc
INFO[0000] starting containerd                           revision=468a545b9edcd5932818eb9de8e72413e616e86e version=v1.1.2

到此docker已经成功支持,执行一个docker命令测试:

root@imx6qsabresd:/forlinx/shell# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@imx6qsabresd:/forlinx/shell#

脚本的内容如下,供参考。

#!/bin/sh# Copyright 2011 Canonical, Inc#           2014 Tianon Gravi# Author: Serge Hallyn <serge.hallyn@canonical.com>#         Tianon Gravi <tianon@debian.org>set -e# for simplicity this script provides no flexibility# if cgroup is mounted by fstab, don't run# don't get too smart - bail on any uncommented entry with 'cgroup' in itif grep -v '^#' /etc/fstab | grep -q cgroup; thenecho 'cgroups mounted from fstab, not mounting /sys/fs/cgroup'exit 0fi# kernel provides cgroups?if [ ! -e /proc/cgroups ]; thenexit 0fi# if we don't even have the directory we need, something else must be wrongif [ ! -d /sys/fs/cgroup ]; thenexit 0fi# mount /sys/fs/cgroup if not already doneif ! mountpoint -q /sys/fs/cgroup; thenmount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroupficd /sys/fs/cgroup# get/mount list of enabled cgroup controllersfor sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); domkdir -p $sysif ! mountpoint -q $sys; thenif ! mount -n -t cgroup -o $sys cgroup $sys; thenrmdir $sys || truefifidone# example /proc/cgroups:#  #subsys_name hierarchy   num_cgroups enabled#  cpuset    2   3   1#  cpu 3   3   1#  cpuacct 4   3   1#  memory  5   3   0#  devices 6   3   1#  freezer 7   3   1#  blkio   8   3   1exit 0

在IMX6Q的linux4.1.15版本上默认支持docker相关推荐

  1. 在Linux4.1.15上使用vsftpd搭建FTP服务问题解析

    在Linux4.1.15上使用vsftpd搭建FTP服务问题解析 BUG1:在windows系统登陆arm Linux FTP时,显示"服务器不允许匿名登录,或者不接受该电子邮件地址&quo ...

  2. mt7601在linux4.1.15上的移植

    在b-link拿到一份代码,他们在linux4.4的内核上正常编译运行,代码在如下链接 https://download.csdn.net/download/bgk112358/10441975 用到 ...

  3. iOS 15提示“此App的开发者需要更新APP以在此IOS版本上正常工作”

    在升级到iOS正式版后,忽然发现原来发布的app忽然提示"此App的开发者需要更新APP以在此iOS版本上正常工作",这个是由于什么问题导致的呢? 其实这个是由于苹果更新了新的签名 ...

  4. linux qt手册,明远智睿I.MX6 Linux-4.1.15 QT5 程序编译手册

    明远智睿I.MX6 Linux-4.1.15 QT5 程序编译手册 [复制链接] 编译主机环境编译主机CPU架构:64位 编译主机系统:Linux Linux发行版:Ubuntu Ubuntu版本号: ...

  5. Linux 内核实时补丁 PREEMPT_RT补丁 与 Linux4.1.15 + patch-4.1.15-rt18.patch 补丁,实测实时性差

    Linux4.1.15 + patch-4.1.15-rt18.patch 补丁,实测实时性差 开发环境 发行环境 该环境用于发行 Linux: 4.1.15 preempt_rt: patch-4. ...

  6. 在 Ubuntu 14.04/15.04 上配置 Node JS v4.0.0

    大家好,Node.JS 4.0 发布了,这个流行的服务器端 JS 平台合并了 Node.js 和 io.js 的代码,4.0 版就是这两个项目结合的产物--现在合并为一个代码库.这次最主要的变化是 N ...

  7. 云原生生态周报 Vol.9| K8s v1.15 版本发布

    本周作者 | 衷源.心贵 业界要闻 1.Kubernetes Release v1.15 版本发布,新版本的两个主题是持续性改进和可扩展性.(https://github.com/kubernetes ...

  8. ubuntu15.04配置php,Linux_Ubuntu 15.04上安装Justniffer的详细教程,Justniffer 是一个可用于替代 Snor - phpStudy...

    Ubuntu 15.04上安装Justniffer的详细教程 Justniffer 是一个可用于替代 Snort 的网络协议分析器.它非常流行,可交互式地跟踪/探测一个网络连接.它能从实时环境中抓取流 ...

  9. android8虚拟键布局,Android 虚拟按键在不同版本上的位置问题

    当 Android 手机设备进行横屏状态时,其虚拟按键的位置在不同版本上位置可能不同. 问题描述 应用里面为了实现全局的右滑返回效果而引入了一个 SwipeBack 库 (GitHub - Swipe ...

  10. WDM在不同Windows版本上的音频支持

    "Windows音频驱动"翻译系列总目录: https://blog.csdn.net/danteLiujie/article/details/102530417 目录 1. 实现 ...

最新文章

  1. CSDN 插件限时内测,新用户抢永久免费去广告特权!
  2. xe ftp.config.php,用PHP实现一个高效安全的ftp服务器(一)
  3. JavaFX UI控件教程(六)之Toggle Button
  4. 争分夺秒:阿里实时大数据技术全力助战双11
  5. Linux环境 Oracle 监听和服务 日常操作
  6. Nifi 怀疑出个bug 流程中的实时数据结果痕迹没有不是实时的,是之前的。以及相应解决办法。
  7. 数据可视化系列(一):Matplotlib初相识
  8. rails提供的validators
  9. 判断一个文件是否可以使用
  10. 远程办公、游戏迅猛增长,旅行、汽车业遭重创!疫期移动互联网行业报告解读...
  11. Linux命令简介之xargs
  12. sicily 1022. Train Problem
  13. python3.8的用法_Python3.8对可迭代解包的改进及用法详解
  14. asp.net电子影像相册_大连孕妈看过来 | 290元=孕中期四维排畸+孕妇写真+胎宝电子影集...
  15. 常用电压电流转换原理图
  16. linux中getchar函数用法,linux getchar函数使用
  17. 特征点匹配——SIFT算法详解
  18. 这个神器让我的 Bug 少了一半
  19. 中级微观经济学:Chap 32 交换
  20. 好玩游戏不上学去学计算机,如果你这样学习,不如去玩游戏!

热门文章

  1. android实现地图功能实现,Android百度地图应用之基本地图功能实现
  2. Tensorflow实现Softmax回归
  3. nekohtml转换html时标签变大写的问题
  4. elasticsearch 匹配发音相同单词的方案
  5. 【SAP Abap】SAP Eclipse ADT开发环境配置与应用
  6. P2525 Uim的情人节礼物·其之壱 prev_permutaion
  7. 计算机windows8黑屏怎么办,Win8电脑开机黑屏只有鼠标光标怎么解决
  8. PADS Layout 滴泪、敷铜和删除
  9. 计算机三级数据库技术 知识点
  10. WPF笔记汇总之ListView控件