首页 文章 精选 留言 我的

精选列表

搜索[DUOX技术],共10000篇文章
优秀的个人博客,低调大师

AliOS Things网络连接技术概述

AliOS Things 是 AliOS 家族旗下的、面向 IoT 领域的、轻量级物联网嵌入式操作系统。 AliOS Things 致力于搭建云端一体化 IoT 基础设施,具备极致性能、极简开发、云端一体、丰富组件、安全防护等关键能力,并支持终端设备连接到阿里云 Link,可广泛应用在智能家居、智慧城市、新出行等领域。 AliOS Things不仅是一个传统的RTOS,而是一个具有丰富组件的,云端一体的运行在嵌入式MCU上的嵌入式操作系统。它具有丰富的连接组件和能力,主要包括: 自组织网络协议(uMesh) 套接字适配层(SAL) TCP/IP网络协议栈(LwIP) 连接协议(WiFi,BLE, LoRaWAN, GPRS和NB-IoT) 自组织网络(uMesh),套接字适配层(SAL)和TCP/IP网络协议栈(LwIP)主要是功能和使用场景

优秀的个人博客,低调大师

虚拟化技术—docker容器—安装篇

核心概念 1.镜像 是一个只读的模板类似于安装系统用到的那个iso文件我们通过镜像来完成各种应用的部署。 2. docker容器 镜像类似于操作系统而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作每个容器都是相互隔离的。 3. docker仓库 存放镜像的一个场所仓库分为公开仓库和私有仓库。最大的公开仓库是Docker hubhub.docker.com国内公开仓库http://dockerpool.com/ 一、安装 centos6上安装(6.5之前版本需要升级一下yum update ) yum install -y epel-release yum install -y docker-io 如果是centos7 yum install -y docker 启动docker /etc/init.d/docker start 二、镜像管理 docker pullcentos//从docker.com获取centos镜像如果太慢直接做个加速 先到https://cr.console.aliyun.com/注册一下,登录成功后,在控制台,看左侧,有一个加速器按钮,点开找到自己的专属加速链接,我的是https://u6vpvkfn.mirror.aliyuncs.com 然后vi/etc/sysconfig/docker 最下面增加一行: other_args="--registry-mirror=https://u6vpvkfn.mirror.aliyuncs.com" centos7是:OPTIONS="--registry-mirror=https://u6vpvkfn.mirror.aliyuncs.com" docker images//查看本地都有哪些镜像 docker tag centos syk123//为centos镜像设置标签为syk123再使用docker images查看会多出来一行改行的image id和centos的一样 docker search (image-name)//从docker仓库搜索docker镜像后面是关键词 docker run -t -i centos/bin/bash//用下载到的镜像开启容器-i表示让容器的标准输入打开-t表示分配一个伪终端要把-i -t放到镜像名字前面 当该镜像发生修改后我们可以把该镜像提交重新生成一个新版本进行在本地。 docker ps//查看运行的容器 docker rmi centos//用来删除指定镜像其中后面的参数可以是tag如果是tag时实际上是删除该tag只要该镜像还有其他tag就不会删除该镜像。当后面的参数为镜像ID时则会彻底删除整个镜像连通所有标签一同删除 docker ps -a//查看所有容器包括已经退出的。 三、创建镜像基于已有镜像的容器创建 运行docker run后进入到该容器中我们做一些变更比如安装一些东西然后针对这个容器进行创建新的镜像 docker commit -m "change somth"-a "somebody info"image_id//通过docker images获取id新镜像名字 例如docker commit -m "install httpd" -a "syk" 2c74d574293f centos_net-tools 这个命令有点像svn的提交-m加一些改动信息-a指定作者相关信息2c74d这一串为容器id再后面为新镜像的名字 四、创建镜像基于本地模板导入 模块获取可以直接在网上下载一个模块http://openvz.org/Download/templates/precreated wget https://download.openvz.org/template/precreated/centos-6-x86-minimal.tar.gz cat centos-6-x86.tar.gz |docker import - centos-6-x86 把现有镜像导出为一个文件 docker save -o syk-centos.tarcentos-6-x86 我们还可以用该文件恢复本地镜像 docker load --input aming-centos.tar或者 docker load < aming-centos.tar docker push image_name//可以把自己的镜像传到dockerhub官方网站 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1860204,如需转载请自行联系原作者

优秀的个人博客,低调大师

虚拟化技术—docker容器—Dockerfile篇

什么是Dockerfile? 按照平时,我们都需要先让一个容器跑起来,然后进去搭建制定自己的服务,那有没有更简洁的方法呢?Dockerfile就是为了更方便的制定容器的。 首先先看Dockerfile里的一些定义,这里从网上截了个图,比较形象: 创建目录: 要先把需要的软件包放在同一个目录下 编写Dockerfile,这里要特别提醒,Dockerfile编写需要非常注意空格!!! vimDockerfile 添加: #ThisisMyfirstDockerfile #Version1.0 #Author:syk #Baseimages FROMcentos #MAINTAINER MAINTAINERyongkang.shi #ADD ADDpcre-8.38.tar.gz/usr/local/src ADDnginx-1.8.1.tar.gz/usr/local/src #RUN RUNyuminstall-ywgetgccgcc-c++makeopenssl-devel RUNuseradd-s/sbin/nologin-Mwww #WORKDIR WORKDIR/usr/local/src/nginx-1.8.1 RUN./configure--prefix=/usr/local/nginx--user=www--group=www--with-http_ssl_module--with-http_stub_status_module--with-pcre=/usr/local/src/pcre-8.38&&make&&makeinstall RUNecho"daemonoff;">>/usr/local/nginx/conf/nginx.conf ENVPATH/usr/local/nginx/sbin:$PATH #EXPOSE EXPOSE80 #CMD CMD["nginx"] 运行命令创建容器: dockerbuild-tnginx-file:v2 /opt/docker-file/nginx/ 最后会提示构建成功: docker ps -a查看一下: 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1860231,如需转载请自行联系原作者

优秀的个人博客,低调大师

虚拟化技术—docker容器—管理篇

一、我们怎么更方便的进去已经start的容器呢? nsenter:可以通过这个命令进去docker的images里 首先获取一个容器的id: docker inspect --format "``.`State`.`Pid`"centos_with_nettools 获取一个id 10592 nsenter --target10592 --mount --yts --ipc --net 这样就进去了,当然这样很麻烦,所以可以写一个脚本: cat in.sh CNAME=$1 CPID=$(docker inspect --format "``.`State`.`Pid`" $CNAME) nsenter --target $CPID--mount --uts --ipc --net 设置权限: chmod +x in.sh 使用:./in.shcentos_with_nettools 二、查看docker网络 brctlshow 查看docker的网桥 iptables -t nat -L -n 三、容器创建好了,怎么对外提供服务呢? 容器都是独立的,资源隔离的,一个容器最常见的是只跑一个服务,但凡服务都都是有端口的,那么我们就要把容器内的端口映射到本机的端口上,然后对外提供服务 第一种:随机映射 docker run -P -d --name nginx1 nginx 第二种:指定映射 docker run -d -p 91:80 --name nginx2 nginx 四、数据卷 什么是数据卷? 当然是存放数据的,那么我们用来做什么?打个比方,一个网站后端不可能只有一台服务器,那么多台服务器怎么保证一些需要的数据一致呢?这里就要用到数据卷了,一个容器只用来保存数据,其他后台服务器都到这个容器里取数据,这样就可以保证数据一致性了。 先创建一个容器: dockerrun-it--namevolume-test1-hnginx-v/datanginx docker ps -l查看一下: dockerinspect-f"``.`Volumes`"volume-test1查看卷: 挂载: dockerrun-it--namevolume-test2-hnginx1-v/opt:/optcentos 注意:/opt后面不能有/号 dockerrun-it--namevolume-test2-hnginx1-v/opt:/opt:ro centos ro:表示在容器里不能写 这时创建新容器时就可以指定了 新建容器,数据卷从volume-test1上取 dockerrun-it--namevolume-test34--volumes-fromvolume-test1centos 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1860219,如需转载请自行联系原作者

优秀的个人博客,低调大师

容器技术Docker 容器操作大总结

Docker实战之容器操作: 新建容器: docker create创建的容器处于停止状态,可以使用docker start命令启动Docker容器。 使用docker run命令,可以创建一个运行中的容器。 create命令与容器运行模式相关的选项: -a,--attach=[] 是否绑定到标准输出、输入和错误 -a,--detach=true|false 是否在后台运行容器,默认是否 --detach-keys="" 从attach模式退出的快捷键 --entrypoint="" 镜像存在入口指令时,覆盖为新的命令 --pxpose=[] 指定容器会暴露出来的端口或端口范围 --group-add=[] 运行容器的用户组 -i,--interactive=true|false 保持标准输入打开,默认为false --ipc="" 容器IPC命名空间,可以为其他容器或主机 --isolation="default" 容器使用的隔离机制 --log-driver="json-file" 指定容器的日志驱动类型,取值范围是:json-file/syslog/journald/gelf/fluentd/awslogs/splunk/etwlogs/gcplogs/none --log-opt=[] 传递给日志驱动的选项 --net="bridge" 指定容器的网络模式,包括bridge/none/其他容器内网络/host的网络或某个现有的网络 --net-alias=[] 容器在网络中的别名 -P,--publish-all=true|false 通过NAT机制将容器标记暴露的端口自动映射到本地主机的临时端口 -p,--public=[] 指定如何映射到本地主机端口 --pid=host 容器的PID命名空间 --userns="" 启用userns-remap时配置用户命名空间的模式 --uts=host 容器的UTS命名空间 --restart="no" 容器的重启策略,取值no/no-failure[:max-retry]/always/unless-stopped等 --rm=true|false 容器退出后是否自动删除,不能跟-d同时使用 -t,--tty=true|false 是否分配一个伪终端,默认是false --tmpfs=[] 挂载临时文件系统到容器 -v|--volume[=[[HOST-DIR:]CONTAINER_DIR[:OPTIONS]]] 挂载主机上的文件卷到容器 --volume-driver="" 挂载文件卷的驱动类型 --volume-from=[] 从其他容器挂在卷 -w,--workdir="" 容器内的默认工作目录 create命令与容器环境和配置相关的选项: --add-host=[] 在容器内添加一个主机名到IP地址的映射关系 --device=[] 映射物理机上的设备到容器 --dns-search=[] DNS搜索域 --dns-opt=[] 自定义的DNS选项 --dns=[] 自定义的DNS服务器 -e,--env=[] 指定容器内环境变量 --env-file=[] 从文件中读取环境变量到容器中 -h,--hostname="" 指定容器内的主机名 --ip="" 指定容器的IPV4地址 --ipv6="" 指定容器的IPV6地址 --link=[<name or id>:alias] 连接到其他容器 --mac-address="" 指定容器的MAC地址 --name="" 指定容器的别名 create命令与容器资源限制和安全保护相关的选项: --blkio-weight=10~1000 容器读写块设备的I/O性能权重,默认是0 --blkio-weight-device=[DEVICE_NAME_WEIGHT] 指定各个块设备的I/O性能权重 --cpu-shares=0 允许容器使用CPU资源的相对权重,默认一个容器能用满一个核心的CPU --cap-add=[] 增加容器的Linux指定安全能力 --cap-drop=[] 移除容器的Linux指定安全性能 --cgroup-parnet="" 指定容器CGroups限制的创建路径 --cidfile="" 指定容器的进程ID号写到文件 --cpu-period=0 限制容器在CFS调度器下的CPU占用时间片 --cpuset-cpus="" 限制容器能使用哪些CPU核心 --cpuset-mems="" NUMA架构下使用哪些核心的内存 --cpu-quota=0 限制容器在CFS调度器下的CPU额配 --device-read-bps=[] 挂载设备的读吞吐率(以bps为单位)限制 --device-write-bps=[] 挂载设备的写吞吐率(以bps为单位)限制 --device-read-iops=[] 挂载设备的读速率(以每秒I/O次数为单位)限制 --device-write-iops=[] 挂载设备的写速率(以每秒I/O次数为单位)限制 --kernel-memory="" 限制容器内使用内核的内存大小,单位可以是b/k/m/g -m,--memory="" 限制容器内应用使用的内存,单位可以是b/k/m/g --memory-reservation="" 当系统中内存过低的时候,容器会被限制内存到给定的值,默认情况下等于内存限制值 --memory-swap="LIMIT" 限制容器使用内存和交换分区的总大小 --oom-kill-disable=true|false 内存耗尽的时候是否杀死容器 --oom-score-adj="" 调整容器的内存耗尽参数 --pids-limit="" 限制容器的PID个数 --privileged=true|false 是否给容器以高权限,这个意味着容器内应用将不受权限下限制,一般不推荐使用 --read-only=true|false 是否让容器内的文件系统只读 --security-opt=[] 指定一些安全参数,包括权限、安全能力、apparmor --stop-signal-SIGTERM 指定停止容器的系统信号 --shm-size="" /dev/shm的大小 --sig-proxy=true|false 是否代理收到的信号给应用,默认是true,不能代理SIGCHLD --memory-swappiness="0~100" 调整容器内存交换区参数 -u,--user="" 指定在容器内执行命令的用户信息 --ulimit=[] 通过ulimit来限制最大文件数,最大进程数 其他常用参数: -l,--label=[] 以键值对的方式指定容器的标签信息 --label-file=[] 从文件中读取标签信息 docker run来启动容器的时候Docker在后台运行的标准操作包括: 1。检查本地是否存在指定的镜像,不存在就从公有仓库下载。 2.利用镜像创建一个容器,并启动该容器。 3.分配一个文件系统给容器,并在只读的镜像层外边挂载一层可读写层。 4.从宿主机配置的网桥接口中桥接一个虚拟接口到容器中。 5.从网桥的地址池配置一个IP地址给容器 6.执行用户指定的应用程序 对于创建的容器,当使用exit命令退出之后,容器就会自动处于退出状态。 默认情况下,常见的错误代码: 125:Docker daemon执行出错,指定了不支持的Docker命令参数 126:所指定命令无法运行,例如权限不足 127:容器内命令无法找到 命令执行出错,会默认返回错误码。 Docker守护态运行:通过-d参数来实现。 终止容器: docker stop [-t|--time[=10]] [CONTAINER...] 首先向容器发送SIGTERM信号,等待一段时间(默认10秒)后,在发送SIGKILL信号终止容器。 docker kill命令会直接发送SIGKILL信号来强行终止容器。 进入Docker容器: docker attach [--detach-keys[=[]]] [--no-stdin] [--sig-proxy[=true]] CONTAINER 支持子选项的作用: --detach-keys[=[]]:退出attach模式的快捷键序列,默认是CTRL+P,CTRL+Q或CTRL+P+Q --no-stdin=true|false:是否关闭标准输入,默认是保持打开的 --sig-proxy=true|false:是否代理收到的系统信号给应用程序,默认为true 40d5d3816472175538f48f506eb7aa74019ef643c50a1351cc830f96a1a66217 root@doc-vm:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 40d5d3816472 centos "/bin/bash" 6 seconds ago Up 4 seconds vigilant_noether root@doc-vm:~# docker attach vigilant_noether [root@40d5d3816472 /]# ls anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var 当多个窗口同时用attach命令连接同一个容器的时候,所有窗口都会同步显示。当某个窗口因为命令阻塞时,其他窗口也是无法执行操作的。 docker exec [-d|detach] [--detach-keys[=[]]] [-i|interactive] [--privileged] [-t|--tty] [-u|--user[=USER]] CONTAINER COMMAND [ARG...] 支持子选项的作用: -i,--interactive=true|false:打开标准输入接受用户输入的命令,默认是false --privileged=true|false:是否执行命令以高权限,默认是false -t,--tty=true|false:分配伪终端,默认是false -u,--user="":执行命令的用户名或ID nsenter工具: root@doc-vm:~# apt-get install util-linux nsenter --target $PID --mount --uts --ipc --net --pid 删除容器: docker rm [-f|--force] [-l|--link] [-v|--volumes] CONTAINER [CONTAINER...] -f,--force=false:是否强行终止并删除一个运行中的容器 -l,--link=false:删除容器的连接,但是保留容器 -v,--volumes=false:删除容器挂载的数据卷 当添加-f参数的时候,Docker会先发送SIGKILL信号给容器,终止其中的应用,之后强行删除。 导出容器: 导出容器指的是导出一个已经创建的文件,不管此时这个容器是否处于运行状态,可以使用docker export命令: docker export [-o|--output[=""]] CONTAINER -o选项指定tar包的文件名或者使用>重定向。 root@doc-vm:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 40d5d3816472 centos "/bin/bash" 27 minutes ago Up 4 seconds vigilant_noether root@doc-vm:~# docker export >MyCentOS:6.0.tar 40d5d3816472 root@doc-vm:~# ll drwxr-xr-x 16 doc doc 4096 11月 29 22:00 ./ drwxr-xr-x 3 root root 4096 11月 27 21:52 ../ -rw-r--r-- 1 root root 204790272 11月 29 22:00 MyCentOS:6.0.tar 导入容器: docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|url - [REGISTRY[:TAG]] 可以通过-c选项在导入的同时对容器执行Dockerfile指令。 实际上,既可以使用docker load命令来导入镜像库存储文件到本地镜像库,也可以使用docker import命令来导入一个容器快照到本地镜像库。 两者的区别在于容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。此外从容器快照文件导入时,也可以重新指定标签等元数据。 本文转自 棋帅小七 51CTO博客,原文链接:http://blog.51cto.com/xvjunjie/2045829

优秀的个人博客,低调大师

文件注入技术之guestmount 排错之道

OpenStack文件注入排错过程 1)撰写功能模块 1)因Centos 7.0 x64文件系统的特殊性(XFS),openztack.nova.virt.disk.api.vfs模块无法识别文件系统,故调用系统命令guestmount,撰写函数 IPDB调试代码是否成功 程序启动正常 看到下面的日志,表示^_^,创建成功 启动服务service openstack-nova-compute restart 2)如果我用ipdb/usr/bin/nova-compute--config-file=/etc/nova.conf就很OK 3)细心研究发现,guestmount之后的目录是root权限 [root@athControllereb9a4714-448a-4a2c-a9ee-53227b811753]#ll total9300 -rw-rw----1novanova0Aug2015:32console.log -rw-r--r--1novanova9437184Aug2015:34disk -rw-r--r--1novanova198656Aug2015:32disk.localdrwxr-xr-x.18rootroot4096Jul815:17mnt 4)为了解决root权限问题,调用nova.virt.libvirt.utils.chow函数 5)得到的结果依然很难受,还是报同样的错误信息 6)于是网友提醒,让我用nova用户权限登录,看是否可以mount,并且可以create一个文件 7)在nova用户模式中,mount本地之后的权限是root权限,故不能正常访问, 8)无意看官方资料,man文档,无意中看到惊喜 10)修改源代码 11) 至此,所有问题已全部解决,虚机已正常生产 本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1543137

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册