jenkins+docker生产实战(一)_第1页
jenkins+docker生产实战(一)_第2页
jenkins+docker生产实战(一)_第3页
jenkins+docker生产实战(一)_第4页
jenkins+docker生产实战(一)_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Notes accompany this presentation. Please select Notes Page view. These materials can be reproduced only with official approval from Gartner. Such approvals may be requested via e-.Jenkins+docker郭宏泽生产实战(一)联系方式联系方式 郭宏泽 邮箱 QQ 1211203372 Github https:/ Docker 容器化实践 Jenkins 持续集成 SVN 版本管理 MAVEN包管理 整合续续集工

2、具集第一章第一章目录目录 Docker 运行原理 Docker 日常管理 Docker registry Docker 数据卷 Docker 网络云计算平台云计算平台 CRM E-MAIL OA 为用户服务SAAS CDN 数据库 开发工具 为应用开发人员服务PAAS KVM 存储 网络 OS 为运维人员服务IAAS虚拟机的问题虚拟机的问题 云计算极大的提高了开发的速度 软件开发迭代速度 业务模型变化飞速发展 IAAS主要以虚拟机管理单元 提升资源利用率的需要 开发人员需要一套真正的解决方案-容器Docker的发展的发展 2013年3月开源 2013年11月 RHEL 6.5支持docker

3、2014年AMAZON GOOGLE Microsoft支持docker 2014年8月vmare与docker合作 2014年底google发布kubernetes 2015年4月dockerD轮融资9500万美元DOCKER的好处的好处 持续集成与测试- 消除开发、测试、生产环境的差异性,一次构建到处运行。 跨平台支持- 镜像的标准性可以方便的进行跨平台部署。 环境标准化与版本控制- 通过registry git等可以方便的实现对镜像的版本控制 资源利用率与隔离- 便捷的资源隔离方案与极高的资源利用率Docker 的好处的好处 速度- 极大的提高开发速度 资源- 极小的资源使用成本,系统复

4、用,复合镜像。 成本- 有效的应对云时代开发要求及成本控制安装安装docker的系统需求的系统需求 Ubuntu 14.04 Centos 7 支持64位 内核开启cgroups namespaces 内核版本3.10+- $uname aDOCKER安装安装 官方脚本安装#curl -fsSL https:/ | shor#curl -sSL https:/get.daocloud.io/docker | sh RPM安装 #rpm ivh docker-engine_1.9.1-0trusty_amd64.deb Yum或apt-get安装 #yum install docker #apt

5、-get install docker.io注:安装前执行yum update更新系统,yum安装需要epel启动启动 启停#service docker start#service docker stop#service docker status#chkconfig docker onel7:systemctl start docker.serviceDocker文件文件 Centos 配置文件 /etc/sysconfig/docker启动文件 /usr/lib/systemd/system/docker.service安装目录 /var/lib/docker ubuntu配置文件配置文

6、件 /etc/default/docker启动文件 /etc/init.d/docker安装目录 /var/lib/docker注:安装docker操作系统时最好把/var/lib/docker目录挂载单独的分区,以便容量管理Docker架构架构 1、Docker 使用C/S架构,Docker命令通过client 直接传递到docker daemon服务器从而得到执行并返回结果。 2、Docker每次启动一个容器时先查找本地镜像,如果没有就会去docker hub拉取,所以生成容器时最好指定镜像及库。 3、Docker版本选择1.9.1 或最新版本1.11常用命令列表常用命令列表信息查看 in

7、fo version容器管理 create exec kill pause restart rm run start stop unpause镜像管理 build images import load rmi save tag commit仓库管理 login logout pull push search运维管理 attach export inspect port ps rename stats top wait cp diff日志相关 events history logsDocker命令结构命令结构Hellow world docker run ubuntu echo “hellow

8、world” 交互式启动docker run -i -t ubuntu /bin/bashdocker run -i -t -name=docker01 ubuntu /bin/bash注:docker run 与docker create 的区别 create创建容器而不启动,run创建并启动。管理命令管理命令 docker ps 启动的docker docker ps a 所有docker docker ps l 近期的 docker inspect name|id查看容器信息 docker start name|id 启动容器 Docker stop name|id 停止容器 Docke

9、r rm name|id 删除容器 Docker run 启动容器Docker核心概念核心概念 Namespaces- Docker 是一个进程- 通过linux namespaces实现资源隔离- 写时复制提高资源利用率- clone()创建进程及namespace- Setns()加入一个存在的namespace- Unshare() 在原进程中隔离 6项目隔离项目隔离cgroups Linux内核机制,提供系统资源管理框架 作用- 资源限制- 优先级分配- 资源统计- 任务控制Docker执行架构执行架构Docker 组件组件 Docker daemon 核心守护进程服务 Docker

10、client用户接口 Graph镜像维护,以层为管理单位 Driver daemon 将用户请求解析成系统调用,调用driver执行Docker目录目录 /var/lib/docker/ aufs aufs驱动工作目录,镜像文件 containers 容器配置目录 devicemapper 设备映射目录 graph 镜像目录元数据 linkgraph.db link管理数据库 network 网络目录 volumes 数据卷目录Docker 镜像管理镜像管理Docker 镜像镜像Docker Images- Docker镜像包括所有Docker运行所需要的文件Bootfs- 底层的引导文件系统

11、,引导完成后被卸载Rootfs- 操作系统文件注:传统linux启动时挂载只读的rootfs,启动完成后转换为可写rootfs.Union mount 联合挂载技术- Docker利用union mount 在只读层上再挂载一个可写层- 只有文件系统发生了变化才把文件写到可写层- 写入后会隐藏只讯层中的老版本文件,COW写时复制联合挂载联合挂载镜像查看镜像查看 Docker images Docker images tree docker images -a 显示中间层镜像 docker images -no-trunc 显示完整ID docker inspect docker01 显示容器

12、docker inspect ubuntu:14.04 显示镜像镜像管理镜像管理 查找镜像- docker search centos 下载镜像- docker pull ubuntu:14.04 上传镜像- docker push imagesName 删除镜像- Docker rmi ubuntu:14.04镜像迁移镜像迁移 Docker savedocker save 00e73c0dee3c /root/hyperkube-amd64:v1.2.0.tar Docker loaddocker load i /root/hyperkube-amd64:v1.2.0.tar保存层数据 Do

13、cker export Docker import不保存层数据通过容器构建通过容器构建 构建镜像 docker commit 通过容器构建 docker commit -a guohz -m nginx determined_mahavira stellghz/nginx 运行并映射 docker run -it -d -p 80:80 -name=nginx_ docker.io/nginx nginx -g daemon off;一个完整的一个完整的dockerfileFROM k04:5000/centos:6.7RUN yum -y install openssh-server epe

14、l-releaseRUN yum -y install vim git unzip tar nginxRUN yum -y install lrzsz telnetRUN echo LANG=en_US.UTF-8 /etc/profileRUN echo root:root | chpasswdRUN mkdir /appsRUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeEXPOSE 22EXPOSE 80EXPOSE 443RUN service sshd startRUN chkconfig sshd onENTRYPOINT

15、 service nginx start & /usr/sbin/sshd -DDocker registry 官方的registry 叫docker hub- 由于某些已知的原因,基本不能用。 通过daocloud加速docker hubecho DOCKER_OPTS=$DOCKER_OPTS -registry-mirror=http:/bc968762.m.daocloud.io | sudo tee -a /etc/default/docker sudo service docker restartregistry 相关命令相关命令 Docker pull 下载一个镜像 Do

16、cker push 上传一个镜像 Docker tag 给镜像打标签 Docker commit 保存一个镜像的改变 Docker build 利用dockerfile构建镜像建立一个私有的建立一个私有的registry docker pull registry mkdir -p /data/registry docker run -d -p 5000:5000 -v /data/registry:/tmp/registry docker.io/registry 访问私有库 curl :5000/v1/search docker search registry_ip:5000

17、/上传到私有库上传到私有库 先从公有库下载镜像docker pull redisdocker tag docker.io/redis k04:5000/redis 编辑配置文件加入-insecure-registry k04:5000vim /etc/sysconfig/dockerOPTIONS=-registry-mirror=http:/b557fae6.m.daocloud.io -selinux-enabled -insecure-registry k04:5000service docker restart上传镜像到私有库docker push k04:5000/nginxdock

18、er volumes 数据卷数据卷 数据卷可以独立于docker文件系统而存在于宿主机。 容器可直接使用其文件 可在不同容器间共享 写入的数据马上生效,无需保存 操作数据卷不影响镜像 独立于容器生命周期docker数据数据卷卷 创建数据卷 docker run -it -v /host/dir:/docker/dir ubuntu /bin/bash docker run -it -v /data/docker:/data:ro ubuntu /bin/bash 只读 查看数据卷 docker inspect 数据卷的备份 docker run -volumes-from dvt5 -v /b

19、ackup/backup -name dvt10 ubuntu tar cvf /backup/dvt5.tar /datavolume1Docker networkIptables Docker会在宿主机上建立iptables 规则iptables-save 查看-A POSTROUTING -s /16 ! -o docker0 -j MASQUERADE将源地址为/16网段的IP包 ,不是从docker0发出现做SNAT源地址转换。Docker 访问访问 外界访问docker是通过DNAT -A DOCKER ! -i docker0 -p tcp

20、 -m tcp -dport 5000 -j DNAT -to-destination :5000 内部访问外部SNAT 外部访问内部DNAT Docker 在宿主机上建一个私有网络并利用宿主机进行nat路由访问Docker 的四种网络模式的四种网络模式 Bridge使用net=bridge指定,默认模式 Host使用宿主机网络,没有进行网络隔离 Container与某个存在的容器共享网络。 None自定义网络配置第二章第二章SVNWhats SVN Subversion is a free/open source version control system. That

21、is, Subversion manages files and directories, and the changes made to them, over time. This allows you to recover older versions of your data or examine the history of how your data changed. In this regard, many people think of a version control system as a sort of “time machine.” SVN是一个自由/开源的版本控制系统

22、。SVN优点优点 优点- 安全性高,权限由中央服务器统一管理- svn支持特权访问控制svn lock,在处理很难合并的文件时非常有用- svn支持空目录,svn支持二进制文件,更容易处理大文件- 学习成本低、成熟稳定、使用简单。 缺点- 无网的情况下无法提交代码,无法查看代码的历史版本、无法同步代码- 代码要定期做备份,所有的代码数据及版本变更记录。- 由于每次提交都会保留一个原始副本,因此SVN的数据库容量增长很快。尤其是在开发人员非常多的情况下。SVN与与GIT 不同时代不同哲学的版本控制系统 Svn是集中式代码管理版本控制系统,中央集权。 Git是分布式代码管理版本控制系统,民主自治。

23、 Svn更成熟简单,GIT更强大充满活力。SVN 架构总览架构总览SVN工作方式工作方式SVNdev1dev2dev3commitupldatever1ver2ver3ver4Subversions ComponentssvnThe command-line client programsvnversionA program for reporting the state (in terms of revisions of the items present) of a working copysvnlookA tool for directly inspecting a Subversion

24、 repositorysvnadminA tool for creating, tweaking, or repairing a Subversion repositorymod_dav_svnA plug-in module for the Apache HTTP Server, used to make your repository available to others over a networksvnserveA custom standalone server program, runnable as a daemon process or invokable by SSHsvn

25、dumpfilterA program for filtering Subversion repository dump streamssvnsyncA program for incrementally mirroring one repository to another over a network安装安装SVN的两种方式的两种方式 Yum 安装- 速度快,安装简单,但版本受yum源限制。 编译安装- 定制化高,版本随意选择。安装安装SVN服务端服务端 安装 yum install subversion 创建库目录mkdir -p /data/svn/ 创建库svnadmin creat

26、e -fs-type fsfs /data/svn/codesvnadmin create -fs-type fsfs /data/svn/it创建创建SVN目录结构目录结构 mkdir -p /data/svn/tmp cd /data/svn/tmp mkdir -p 01_report 02_schedule 03_dev 04_test 05_ops 06_product 07_resource 08_shareSvn import 导入库 svn import /data/svn/tmp file:/data/svn/it -m first import 查看导入svn list -

27、verbose file:/data/svn/it/编辑配置文件编辑配置文件 编辑配置文件vim svnserve.confgeneralanon-access = noneauth-access = writepassword-db = ././passwdauthz-db = ././authzrealm = codesasl用户权限用户权限 编辑用户名密码 vim passwdusersguohz = password目录控制目录控制 编辑认证 vim authzgroups#admin=guohz/guohz=rw启动启动SVN 启动svn svnserve -d -r /data/s

28、vn -log-file /data/svn/svn.log -pid-file /data/svn/svn.pid客户端客户端 Linux 下直接使用svn相关命令行工具- Svn ckeckout - svn up - svn look Windows 下使用客户端工具- /packages.html- TortoiseSVNSvn常用命令常用命令checkout到本地文件svn co file:/data/svn/repo repo_dir更新svn up /data/repo_dir查看信息svn info /data/svn/it添加文件svn add file_name提交文件svn ci file_name file:/ file:/data/svn/repo -m “fisrt commit”Svn repos urlsSvn co repos_urls SVN HOOKS SVN HOOKS 简单来说就是检测SVN的某种状态而执行的一串脚本 经常使用的两个脚本- pre-commit 上传前的动作,用于检查是否合法,如语法检查。- post-commit 上传后的动用,用于分发文件到指定位置。Pre-commit检查注释字符数检查注释字符数#!/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论