首页 文章 精选 留言 我的

精选列表

搜索[本地知识库],共10000篇文章
优秀的个人博客,低调大师

Docker初体验,创建并导出第一个本地镜像

准备工作,创建一个目录docker-test,用来存放创建镜像所需的文件,同事完成相关文件的创建。 [root@ChatDevOps ~]# mkdir docker-test [root@ChatDevOps ~]# cd docker-test/ [root@ChatDevOps docker-test]# touch Dockerfile [root@ChatDevOps docker-test]# touch app.py [root@ChatDevOps docker-test]# touch requirements.txt 在Dockerfile中加入以下内容: # Use an official Python runtime as a parent image FROM python:2.7-slim # Set the working directory to /app WORKDIR /app # Copy the current directory contents into the container at /app ADD . /app # Install any needed packages specified in requirements.txt RUN pip install --trusted-host pypi.python.org -r requirements.txt # Make port 80 available to the world outside this container EXPOSE 80 # Define environment variable ENV NAME World # Run app.py when the container launches CMD ["python", "app.py"] 在app.py中增加以下内容: from flask import Flask from redis import Redis, RedisError import os import socket # Connect to Redis redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2) app = Flask(__name__) @app.route("/") def hello(): try: visits = redis.incr("counter") except RedisError: visits = "<i>cannot connect to Redis, counter disabled</i>" html = "<h3>Hello {name}!</h3>" \ "<b>Hostname:</b> {hostname}<br/>" \ "<b>Visits:</b> {visits}" return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits) if __name__ == "__main__": app.run(host='0.0.0.0', port=80) 在requirements.txt中添加以下内容: Flask Redis 安装pip,并使用pip安装Flask和Redis: [root@ChatDevOps docker-test]# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py [root@ChatDevOps docker-test]# python get-pip.py [root@ChatDevOps docker-test]# pip install -r requirements.txt [root@ChatDevOps docker-test]# rm -rf get-pip.py [root@ChatDevOps docker-test]# ls app.py Dockerfile requirements.txt 执行构建命令,使用-t选项指定镜像的仓库、标签。注意,镜像名称必须小写。 [root@ChatDevOps docker-test]# docker build -t local/chatdevops . Sending build context to Docker daemon 4.608 kB Step 1/7 : FROM python:2.7-slim Trying to pull repository docker.io/library/python ... 2.7-slim: Pulling from docker.io/library/python ... ... [root@ChatDevOps docker-test]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE local/chatdevops latest fc26e265213a 21 minutes ago 151 MB docker.io/fedora latest cc510acfcd70 2 weeks ago 253 MB 使用刚刚创建的镜像构建一个容器,并将容器的80端口映射到本机的4000端口。 [root@ChatDevOps docker-test]# docker run -p 4000:80 local/chatdevops * Serving Flask app "app" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:80/ (Press CTRL+C to quit) 172.17.0.1 - - [23/May/2018 04:21:04] "GET / HTTP/1.1" 200 - 172.17.0.1 - - [23/May/2018 04:21:04] "GET /favicon.ico HTTP/1.1" 404 - 172.17.0.1 - - [23/May/2018 04:22:24] "GET / HTTP/1.1" 200 - 在浏览器看一下效果:镜像制作完成,导出镜像,选项-o表示将导出内容写入一个文件,替代了标准输出。 [root@ChatDevOps docker-test]# docker save -o chatdevops.tar local/chatdevops [root@ChatDevOps docker-test]# ll 总用量 153716 -rw-r--r--. 1 root root 666 5月 23 09:52 app.py -rw-------. 1 root root 157392896 5月 23 11:47 chatdevops.tar -rw-r--r--. 1 root root 509 5月 23 11:12 Dockerfile -rw-r--r--. 1 root root 12 5月 23 09:51 requirements.txt 在异机上导入刚刚创建的镜像。 [root@ChatDevOps docker-test]# scp chatdevops.tar root@10.1.1.1.12:/root/ [root@ChatDevOps ~]# ll 总用量 153704 -rw-------. 1 root root 157392896 5月 23 14:30 chatdevops.tar [root@ChatDevOps ~]# docker load --input chatdevops.tar ba291263b085: Loading layer [==================================================>] 82.94 MB/82.94 MB 10dd6271862c: Loading layer [==================================================>] 7.487 MB/7.487 MB 4e1a46391216: Loading layer [==================================================>] 46.96 MB/46.96 MB a40d037570f2: Loading layer [==================================================>] 7.649 MB/7.649 MB d9bad830e350: Loading layer [==================================================>] 1.536 kB/1.536 kB 16b29278858d: Loading layer [==================================================>] 5.12 kB/5.12 kB b6e1c4419841: Loading layer [==================================================>] 12.32 MB/12.32 MB Loaded image: local/chatdevops:latest [root@ChatDevOps ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE local/chatdevops latest dea564c3cb05 3 hours ago 151 MB 本文是Docker官方文档的实例的实践与拓展,刚刚学习Docker,诸多问题还望大家海涵和指教。

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

OSS bucket远程挂载成ECS本地盘之cloudfs4oss

1.cloudfs 1.1.1功能改进点 增加上传线程数可配置,默认线程数为1 修改文件上传后,文件大小为0的错误 对系统内部内存进行了优化,极大减少cloudfs运行内存消耗 解决多并发时程序异常退出的问题 解决文件上传时,文件只有BLOCK_SIZE大小的问题 解决当多个ECS共享一个BUCKET时,某个ECS对文件进行修改,其它文件不同步的问题 1.1cloudfs上传线程数配置功能 配置文件位置:cloudfs安装目录/conf/cloudfs.conf 修改MAX_UPLOAD_THREADS属性,如4 2.centos7安装cloudfs4oss 2.1安装环境 Ubuntu 14.04 32/64位: apt-get install libcurl4-openssl-dev libssl-dev pkg-config libxml2 libxml2-dev libfuse-dev libunwind8-dev CentOS 6.5 32/64位: yum install libcurl libcurl-devel openssl-devel fuse fuse-libs fuse-devel libxml2-devel libunwind-devel(最后这一个出现libfuse.so.2版本冲突未安装一样实现功能) find / -name libfuse.so.2 rpm -qa|grep libunwind 2.2配置cloudfs4oss 阿里云用户在阿里云“工具市场”中搜索cloudfs4oss 其他用户下载http://blog.cloudtalkers.com/category/cloudfs/cloudfs4oss-download tar -zxvf CloudFS_Centos64_0274.tar.gz cd CloudFS_Centos64/ 2.2.1默认安装 ./CloudFS_Install.sh cloudfs的安装目录是 /usr/local/cloudfs ,oss的挂载目录是 /mnt/oss # vi /usr/local/cloudfs/conf/cloudfs.conf(简单修改下面四选项,其它参数见云文档) HOST=oss-cn-qingdao-internal.aliyuncs.com ID=eRops7R1O39lodWN KEY=MJKeghOshVod0H6Bd5lsUv7REp8Sbe BUCKET=wctest # systemctl start cloudfs.service # systemctl status cloudfs.service 2.2.2自定义安装 ./CloudFS_Install.sh INSTALL_DIR=/usr/local/cloudfs_test MOUNT_POINT=/mnt/test cloudfs的安装目录是 /usr/local/cloudfs_test ,oss的挂载目录是 /mnt/test 2.3验证 报错时候可以试一试 ./cloudfs /mnt/oss/ -f(远程挂载目录) umount -l /mnt/oss/(恢复挂载点) cd /mnt/oss/ mkdir test touch 110.txt rm -rf test/ rm 110.txt 二、我自己测试一台ECS运行多个cloudfs的方法 tar -zxvf CloudFS_Centos64_0274.tar.gz mv CloudFS_Centos64/ cloudfs1 cp cloudfs1 cloudfs2 -R cd cloudfs1 chmod 777CloudFS_Install.sh viCloudFS_Install.sh DEFAULT_INSTALL_DIR="/opt/king/cloudfs1" DEFAULT_MOUNT_POINT="/opt/oss/king" 新建king目录并赋值777 mkdir -R/opt/oss/king chmod 777 king/ 修改连接值并启动链接 ./CloudFS_Install.sh vi/opt/king/cloudfs1/conf/cloudfs.conf HOST=oss-cn-qingdao-internal.aliyuncs.com ID=eRops7R1O39lodWN KEY=MJKeghOshVod0H6Bd5lsUv7REp8Sbe BUCKET=king cd/opt/king/cloudfs1 ./cloudfs /opt/oss/king -o allow_other 设置cloudfs2的方法与cloudfs1的方法一致 设置启动./cloudfs /opt/oss/queen -o allow_other 二、一台ECS运行多个cloudfs 参考: http://www.xker.com/page/e2015/06/199015.html 1. 介绍: 最近,许多用户在使用cloudfs时,需要用到同一台ECS上挂载多个BUCKET的功能。在我们的官方安装文档上没有指明。这个功能目前cloudfs是支持的,解决方法是在同一台ECS运行多个cloudfs。 下面以一个用例来演示如何使用。 注意: 要在同一台ECS上运行多个cloudfs,cloudfs的启动方式必须要是手动启动。 2. 演示: 本安装演示环境是Ubuntu14.04 64位,本文的安装是在用户有一定的cloudfs安装经验上的,如果您对cloudfs的安装还不太清楚,请移步http://blog.cloudtalkers.com/122.html下载安装文档。 2.1 下载解压缩多个cloudfs 访问http://blog.cloudtalkers.com/category/cloudfs/cloudfs4oss-download下载cloudfs并解压缩 本文一共下载了3个,结构图如下 一台ECS运行多个cloudfs_新客网 2.2 分别编辑多个cloudfs的配置文件 编辑每一个cloudfs的配置文件,配置文件所在目录为:cloudfs解压缩目录/conf/cloudfs.conf 本文一共3个配置文件,配置如下: /root/test/cloudfs1/CloudFS_Ubuntu64/conf/cloudfs.conf --- 杭州BUCKET /root/test/cloudfs2/CloudFS_Ubuntu64/conf/cloudfs.conf --- 深圳BUCKET /root/test/cloudfs3/CloudFS_Ubuntu64/conf/cloudfs.conf --- 青岛BUCKET 2.3 启动多个cloudfs 执行启动cloudfs命令,本文一共三个cloudfs,启动命令如下: 进入cloudfs的安装目录,执行命令 ./cloudfs /mnt/oss/bucket1 -o allow_other ./cloudfs /mnt/oss/bucket2 -o allow_other ./cloudfs /mnt/oss/bucket3 -o allow_other 上述命令中 /mnt/oss/bucket1为oss的挂载目录,请确保/mnt/oss/bucket1的权限为777。 查看cloudfs启动情况, 执行命令: ps -ef|grep cloudfs ,如下图即成功 一台ECS运行多个cloudfs_新客网 (点击图片放大) 3. 测试: 一、拷贝一个文件到cloudfs cp /bin/ls /mnt/oss/ 二、从cloudfs中删除一个文件 rm /mnt/oss/ls 三、在cloudfs中创建一个目录 mkdir /mnt/oss/test/ 四、在cloudfs中删除一个目录 rm -r /mnt/oss/test/ 在操作过程中,请登录到阿里云(www.aliyun.com)的控制台,对比对应的bucket的文件/文件夹增加删除变化 本文转自 guowang327 51CTO博客,原文链接:http://blog.51cto.com/guowang327/1730401,如需转载请自行联系原作者

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

foreman架构的引入10-hostgroup如何转换为本地的fact

零基础学习Puppet自动化配置管理系列文档 在Foreman上可以根据业务逻辑设置多个主机组(Host Groups),并且可以将不同的节点加入到不同的主机组,这样在每次操作“puppet run”的时候,只需要在搜索按钮里搜索对应的主机组即可找到里面包含的所有节点,如下图所示 Foreman安装 但是,foreman目前在puppet run上对mcollective的集成度很低,基本就是只能运行一条命令。那么如果要在shell终端上通过mco命令去对这些自定义的Host Groups进行操作应该如何做呢。答案是转换为facter。 自定义facter有四种方式,如下:http://kisspuppet.com/2014/03/30/puppet_learning_base10/ 这里介绍第三种方式将Foreman上设置的主机组(Host Groups)转换为每个节点自己的facter 1、首先创建主机组 Foreman安装 2、查看节点的主机组信息 其实相当于自定义了一个外部变量,变量名叫hostgroup,值为节点加入的组名称 Foreman安装 Foreman安装 3、编写一个fact模块 模块的功能就是将Foreman上的变量“hostgroup”落地到每个节点的/etc/facter/facts.d/${hostname}.txt文件中,内容为fact的标准格式。 #模块结构 [root@puppetmaster162modules]#treefact fact ├──files ├──manifests │├──config.pp │├──fact.pp │├──init.pp │└──params.pp └──templates └──hostgroup.erb 3directories,5files #模块主配置文件init.pp [root@puppetmaster162modules]#catfact/manifests/init.pp classfact{ tag("puppet_env") requirefact::params $hostgroup_erb=$fact::params::hostgroup_erb includefact::config includefact::facter } #创建目录以及文件 [root@puppetmaster162modules]#catfact/manifests/config.pp classfact::config{ file{'/etc/facter': ensure=>directory, owner=>'root', group=>'root', mode=>'0644', } file{'/etc/facter/facts.d': ensure=>directory, owner=>'root', group=>'root', mode=>'0644', require=>File['/etc/facter'] } file{"/etc/facter/facts.d/$hostname.txt": owner=>"root", group=>"root", mode=>0400, content=>template($fact::hostgroup_erb), require=>File['/etc/facter/facts.d'], } } #定义变量 [root@puppetmaster162modules]#catfact/manifests/params.pp classfact::params{ $hostgroup_erb='fact/hostgroup.erb' } #定义fact模板(原因可参考http://kisspuppet.com/2013/11/10/mcollective-middleware/) [root@puppetmaster162manifests]#catfact.pp classfact::facter{ file{"/etc/mcollective/facts.yaml": owner=>root, group=>root, mode=>0440, loglevel=>debug,#reducenoiseinPuppetreports content=>inline_template('<%=scope.to_hash.reject{|k,v|k.to_s=~/(uptime.*|path|timestamp|free|.*password.*|.*psk.*|.*key)/}.to_yaml%>'), } } #设置文件模板 [root@puppetmaster162modules]#catfact/templates/hostgroup.erb hostgroup=<%=@hostgroup%> foreman_env=<%=@foreman_env%> 4、Foreman上管理主机组和模块fact 先导入类,然后在主机组里进行关联即可,由于fact模块是针对所有主机的,建议关联到1级主机组,加入的节点会自动继承。关联完成后的效果如下 Foreman安装 Foreman安装 5、在Foreman上对两个节点执行“puppet run”操作 Foreman安装 6、查看facter信息是否生成 [root@foreman163~]#facterhostgroup prd [root@puppetmaster162~]#facterhostgroup prd/kisspuppet 7、通过mco命令结合fact进行过滤查看 [root@puppetmaster162~]#mcoping-Fhostgroup=prd foreman163.kisspuppet.comtime=98.55ms ----pingstatistics---- 1repliesmax:98.55min:98.55avg:98.55 [root@puppetmaster162~]#mcoping-Fhostgroup=prd/kisspuppet puppetmaster162.kisspuppet.comtime=94.14ms ----pingstatistics---- 1repliesmax:94.14min:94.14avg:94.14 [root@puppetmaster162~]#mcopuppet-vrunonce-Fhostgroup=prd/kisspuppet Discoveringhostsusingthemcmethodfor2second(s)....1 *[============================================================>]1/1 puppetmaster162.kisspuppet.com:OK {:summary=>"StartedaPuppetrunusingthe'puppetagent--test--color=false--splay--splaylimit30'command"} ----rpcstats---- Nodes:1/1 Pass/Fail:1/0 StartTime:ThuDec1815:13:09+08002014 DiscoveryTime:2004.07ms AgentTime:85.19ms TotalTime:2089.26ms 注:以上方式只是提供了一种思路,更多的方式还需要根据具体的实际环境而改变,总之一点,fact很强大,看你怎么用。 本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1591390,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

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

用户登录
用户注册