BusyBox

Docker系列07—Dockerfile 详解

ぐ巨炮叔叔 提交于 2020-04-18 06:28:24
本文收录在 容器技术学习系列文章总目录 1 、认识 Dockerfile 1.1 镜像的生成途径 基于容器制作 dockerfile , docker build   基于容器制作镜像,已经在上篇 Docker系列06—基于容器制作镜像并上传到Docker Registry 详细讲解过了,大家有需要可以去上篇查找;这篇主要讲解基于 Dockerfile ,使用 docker build 命令制作镜像。 1.2 Dockerfile 介绍   Docker 中有个非常重要的概念叫做 —— 镜像( Image )。 Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。   镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile 。   Dockerfile 是一个文本文件,其内 包含了一条条的指令 (Instruction) , 每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建 。 1.3 Dockerfile

Docker系列06—基于容器制作镜像并上传到Docker Registry

女生的网名这么多〃 提交于 2020-04-18 04:51:30
本文收录在 容器技术学习系列文章总目录 1 、制作镜像 1.1 镜像的生成途径 基于容器制作 dockerfile , docker build   本篇主要详细讲解基于容器制作镜像;基于dockerfile 制作镜像在后一张文 章 Docker系列07—Dockerfile 详解 中 详细介绍; 1.2 基于容器制作 docker commit ( 1 )格式 Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] ( 2 ) Options 参数 -a ,作者(例如, “along <along@along.com>” ) -c ,修改 Dockerfile 指令应用于创建的镜像 -m ,提交消息 -p ,在提交期间暂停容器(默认为 true ) ( 3 )示例 1 :简单的基于容器创建一个新的镜像 ① 先运行一个容器 [root@along ~]# docker run --name b1 -it busybox / # ls / bin dev etc home proc root sys tmp usr var / # mkdir -p /date/html / # echo "<h1>busybox httpd server</h1>" > /date/html/index.html / # cat

TQ2440(S3C2440)移植Linux-4.0.1内核全过程

夙愿已清 提交于 2020-04-15 17:10:37
【推荐阅读】微服务还能火多久?>>> TQ2440(S3C2440)移植Linux-4.0.1内核全过程 文件系统yaffs2下载地址: https://yaffs.net/get-yaffs linux内核下载地址: BusyBox下载地址: https://busybox.net/ 开发环境: ubuntu1404 天嵌光盘里的交叉编译器(版本4.4.3) busybox-1.13.0 (一)制作根文件系统 1、创建根文件系统目录 使用如下脚本: #!/bin/sh rm -rf yaffs2 echo "create yaffs2 dir..." mkdir yaffs2 cd yaffs2 mkdir root dev etc boot tmp var sys proc lib mnt home usr opt mkdir etc/init.d etc/rc.d etc/sysconfig mkdir usr/sbin usr/bin usr/lib usr/modules usr/local mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp mkdir var/lib var/lock var/run var/tmp echo "make node..." mknod -m 600 dev/console c 5 1

第二十章 九析带你轻松完爆 Istio

跟風遠走 提交于 2020-04-10 17:36:28
系列文章: 总目录索引: 九析带你轻松完爆 istio 服务网格系列教程 目录 1 前言 2 邀约 3 virtual service 简述 4 virtual service 样例 4.1 jiuxi-busybox.yaml 4.2 jiuxi-deployment.yaml 4.3 jiuxi-svc.yaml 4.4 jiuxi-vs.yaml 5 Istio 注入 6 登录客户端验证规则生效 7 总结 1 前言 如果你对博客有任何疑问,请告诉我。 2 邀约 你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料: 3 virtual service 简述 在前面的章节中已经讲过了 virtual service 的概念和理论了。这里再做一个赘述,virtual service 是虚拟服务,它并非真正的 k8s service,首先不能通过 kubectl get svc 的方式找到它,其次在服务调用的时候也不会直接调用它,它就像 k8s service 背后的女人一样,紧紧握着 k8s service 的老二,让它乖乖按照自己的旨意将请求流量路由到网格内的特定目标。 如下是经常困扰初学者的问题,下面一一做解答。 问题一:Virtual service 跟 k8s service 的关系是什么。属于强绑定吗? 回答:不是强绑定。virtual service 可以帮助

[转帖]CRI & runc 介绍

杀马特。学长 韩版系。学妹 提交于 2020-04-06 10:06:57
CRI & runc 介绍 https: // blog.lecury.cn/2017/11/19/CRI&runc介绍/ 发表于 2017-11-19 | 0 | 阅读次数: 10 kubernetes CRI kubernetes是一个容器编排系统,可以便捷的部署容器,它同时支持Docker和Rocket两种容器类型。然而不管是Docker还是Rocket都需要通过内部、不太稳定的接口直接集成到kubelet的源码中,这样的集成过程需要开发者十分熟悉kubelet内部原理,同时维护起来也非常麻烦。在kubernetes1.5版本中,提供了一个清晰定义的抽象层消除了这些障碍,开发者可以专注于构建他们的容器运行时,这个抽象层称作Container Runtime Interface(CRI)接口,下面介绍一下CRI这个概念。 CRI CRI是一个插件接口,这个接口的引入使得kubelet不用重新编译的情况下管理多种容器类型。CRI主要由gRPC API和protocol buffers组成,它的架构图如下所示: kubelet与容器运行时(或者是CRI shim)之间的通信是借助gRPC框架通过unix套接字完成的,kubelet作为client,CRI shim作为server来实现。对于docker容器而言,dockershim是kubelet的CRI shim

初识Android下的busybox与toolbox

♀尐吖头ヾ 提交于 2020-03-25 23:37:29
2020-03-25 关键字: 原来 Android 中的 busybox 与 toolbox 是两套程序。 busybox 是一个嵌入式领域常用的软件。它是一个命令集工具,像传统的PC端的Linux系统上的大多数命令的实现都被封装在 busybox 程序中。在嵌入式平台上就可以将这些命令以参数的形式传递给 busybox 工具集,进而实现相应的功能。 那为什么嵌入式平台不能直接像PC端那样,直接将各个命令所对应的程序预置在板端,而非要包装在一个 busybox 中呢?其最主要的原因还是因为这些命令所对应的程序加起来太过庞大,嵌入式平台的存储资源通常是比较有限的,为了节约存储空间,就将这些命令集合在一个程序中。那集合以后的程序又凭什么能比PC端那种分散开来的形式体积要小呢?一个主要的原因是因为这些命令中,有不少命令的实现都是相同的。busybox 就将这些相同的部分提取出来让多个命令共用。如此一来随着命令数量的增多,就能比较大程度地缩减程序体积了。 Android平台是基于嵌入式Linux的。通过串口或者 adb shell 可以像在嵌入式Linux平台上那样敲击命令以实现某些目的。 Android平台的命令系统一般而言可以认为分为两类: 1、busybox 实现的命令系统 2、toolbox 实现的命令系统 toolbox 命令系统是Android平台默认的命令系统。 例如

Docker学习笔记 — Docker私有仓库搭建

那年仲夏 提交于 2020-03-25 11:05:00
3 月,跳不动了?>>> 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库。 使用私有仓库有许多优点: 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可; 提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。 接下来我们就大致说一下如何在本地搭建私有仓库。 目前 Docker Registry已经升级到了v2,最新版的Docker已不再支持v1。Registry v2使用 Go 语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。此文档是在v1的基础上写的,如果需要安装registry v2,只需下载registry:2.2即可,或者可以下载后面的安装脚本运行安装。 环境准备 环境:两个装有Docker的Ubuntu虚拟机 虚拟机一:192.168.112.132 用户开发机 虚拟机二:192.168.112.136 用作私有仓库 此处我们准备了两个虚拟机,分别都安装了Docker,其中132机器用作开发机,136机器用作registry私有仓库机器。环境准备好之后接下来我们就开始搭建私有镜像仓库。 搭建私有仓库 首先在136机器上下载registry镜像 $ sudo docker pull registry

基于 debootstrap 和 busybox 构建 mini ubuntu

无人久伴 提交于 2020-03-21 22:33:02
基于 debootstrap 和 busybox 构建 mini ubuntu 最近的工作涉及到服务器自动安装和网络部署操作系统,然后使用 ansible 和 saltsatck 进行配置并安装 openstack 。 难点在于服务器的自动安装,由于不单只是通过 PXE 安装服务器,还需要能够安装时进行分区、配置网卡等工作,因此需要在开始安装前,必须先收集服务器的硬件信息。 调研了一下目前的开源项目中,提供此类功能的有 tinycorelinux 、 puppet razor-el-mk 可做类似的工作。tinycorelinux 是个很好的工具,整个系统在 PXE 之后在内存中执行,可在里面加上简单的 agent 完成任务报告的工作;razor 是 puppet 绑定在一起用的,el-mk 基于 centos ,它在里面装了 razor 的 agent,使用 facter 进行硬件信息收集。 这些方案的基本思路都是相通的,首先通过 PXE 下载 microkernel ,然后直接在内存中执行,启动网卡,运行 agent 并向服务器汇报信息,并接收来自服务器的命令。基本的技术原理都是 PXE + linux initramfs ,根据不同的需要向 initramfs 中加硬件驱动。 仔细研究了一下之后,发现用 debootstrap + busybox 工具做这样的小系统会更加简单

Why does SIGHUP not work on busybox sh in an Alpine Docker container?

孤者浪人 提交于 2020-03-21 06:53:44
问题 Sending SIGHUP with kill -HUP <pid> to a busybox sh process on my native system works as expected and the shell hangs up. However, if I use docker kill to send the signal to a container with docker kill -s HUP <container> it doesn't do anything. The Alpine container is still running: $ CONTAINER=$(docker run -dt alpine:latest) $ docker ps -a --filter "id=$CONTAINER" --format "{{.Status}}" Up 1 second $ docker kill -s HUP $CONTAINER

Docker私有仓库Harbor使用操作

只愿长相守 提交于 2020-03-15 15:28:38
Harbor页面基础操作 1):网页登陆http://192.168.100.61/ 默认账户密码:admin Harbor12345 [root@localhost ~]# cat /data/harbor/harbor.cfg | grep harbor_admin_password 2):用户管理 系统管理--用户管理--创建用户 3):新建一个项目 4):上传下载镜像到Harbor仓库 [root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 docker2 [root@localhost ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"], "insecure-registries": ["192.168.100.61:5000"], "insecure-registries": ["docker2:80"] }