镜像的创建

  1. 更换镜像至ustc(为了测试时的速度)
  2. 安装musl-dev make gcc linux-headers bison flex以使TC可以编译
  3. 拷贝进TC的源代码
  4. 进入源代码文件夹进行编译
  5. 运行top(或任何不自动退出的程序)以便exec进入容器

Dockerfile如下:

FROM alpine

RUN rm /etc/apk/repositories
RUN echo -e "http://mirrors.ustc.edu.cn/alpine/v3.8/main\nhttp://mirrors.ustc.edu.cn/alpine/v3.8/community" > /etc/apk/repositories RUN set -ex \
&& apk update && apk add --no-cache --virtual .build-deps \
musl-dev \
make \
gcc \
linux-headers \
bison \
flex ADD iproute /code/iproute
RUN cd code/iproute && make
CMD top

部署用yaml的设置

TC内核通信权限设置

由于TC与内核通信并更改网络设置,需要提高容器权限,这需要在YAML文件中进行设置:

spec:
containers:
securityContext:
privileged: true

这样容器内的TC才有权限通过netlink与内核进行通信

网络设置

TC所在的POD需要能够设置该Node的所有网卡,因此需要设置为hostNetwork网络,另外需要设置DNS以使Pod能以POD的身份访问service

    spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet

最后的部署用的YAML如下:

apiVersion: apps/v1
kind: Deployment
metadata:
name: test-deployment
spec:
selector:
matchLabels:
app: test
replicas: 1
template:
metadata:
labels:
app: test
spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
containers:
- name: test
image: foo
imagePullPolicy: Never
securityContext:
privileged: true

创建一个包含TC的Alpine镜像的更多相关文章

  1. 最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像

    什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建. 下面通过一个具体的例子来学习d ...

  2. 用Python+qrcode库创建一个包含信息的二维码

    安装qrcode库和PIL库 在命令行中分别输入pip install qrcode 和pip install pillow 导入库格式如下: import PIL import qrcode 下面以 ...

  3. js中使用将json数组 转换为json将一个包含对象的数组用以创建一个包含新重新格式化对象的新数组

    1.使用reduce: let arr = [{ "code": "badge", "priceList": [{ "amount ...

  4. compact 创建一个包含变量名为数组的键和它们的值为数组的值的数组

    $firstname = "Bill"; $lastname = "Gates"; $age = "60"; $result = compa ...

  5. 【解决了一个小问题】alpine镜像中,busybox的date命令获取昨天的日期

    直接上答案: date -d@"$(( `date +%s`-86400))" +"%Y-%m-%d"

  6. 「六」创建一个带 weblogic 服务的基础镜像

    Weblogic Weblogic 简单介绍以及其在 Docker 环境下的特殊应用 WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE ...

  7. 创建超小的Golang docker 镜像

    原文: http://colobu.com/2015/10/12/create-minimal-golang-docker-images/ 本文对于创建超小的镜像非常有用 Docker是PaaS供应商 ...

  8. 使用ImageCreate()创建一个代表空白图像的变量

    在建立图像创建环境之前,还需要做一些准备工作.首先,安装t1lib接着安装jpeg-6b,然后再安装GD库文件.在安装时一定要按这里给定的顺序进行安装,因为在编译GD入库时会用到jpeg-6b,如果没 ...

  9. 创建一个EMS 扩展包

    EMS Package 向导: File > New > Other > Delphi projects > EMS > EMS Package Empty packag ...

随机推荐

  1. 在Chrome中使用IE浏览器!

    学校的毕业论文系统,无法完整显示网页,特别是下部的"提交"按钮看不见. IE11无效. 发现"360极速浏览器 7.5.3.186"能正常显示,百度网盘下载太慢 ...

  2. kubeadm安装k8s1.13

    1.环境介绍: centos 7.4.1708 关闭selinux和iptable,环境很重要! 主机 ip地址 cpu核数 内存 swap host解析 k8s-master 10.0.0.11 2 ...

  3. verilog分频模块设计

    verilog设计: 分频器的设计: 分频器就是将一个时钟源的频率降低的过程(可以通过观察分频之后周期中包含几个原时钟周期来看是几分频),分频分为基数分频也分为偶数分频, 偶数分频的代码如下:(其中就 ...

  4. 《Maven 实战》笔记之setting.xml介绍

    maven是什么?有什么用? Maven是一个跨平台的项目管理工具,主要服务于Java平台的项目构建,依赖管理和项目信息管理.项目构建包括创建项目框架.清理.编译.测试.到生成报告,再到打包和部署,项 ...

  5. 设计数据结构之LRU缓存

    leetcode 146. LRU Cache class LRUCache { private: struct Node { int key; int val; Node* prev; Node* ...

  6. ora 12518监听程序无法分发客户机连接

    首先修改ORACLE的PROCESS.SESSION数量 查看当前ORALCE PROCESS数量 SQL> show parameter process 查看当前ORALCE SESSION数 ...

  7. nginx启动、停止、重启

    转自https://www.cnblogs.com/wangcp-2014/p/9922845.html 启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@ ...

  8. vue自定义指令,自动调用下载的方法

    directives: { clickDown: { inserted (el, binding, item) { if (+binding.value.item.fromId === +item.c ...

  9. Mycat常见问题与解决方案

    转载于:https://www.cnblogs.com/jpfss/p/8194111.html 1 Mycat目前有哪些功能与特性? 答:• 支持 SQL 92标准• 支持Mysql集群,可以作为P ...

  10. k8s-wordpress

    将数据库的密码写入wordpress的yaml配置文件不行,额外输入可以初始化数据成功,好奇怪 mysql 配置yamL cat mysql.yml --- apiVersion: apps/v1be ...