docker安装jenkins

docker安装Jenkins

Jenkins介绍

开源的java语言开发持续集成工具,支持CI/CD、易于安装部署。javascript

安装方式:可经过yum安装、或下载war包以及经过docker容器等快速安装部署,可方便web界面配置管理。html

消息通知及测试报告:集成RSS/E-mail经过RSS发布构建结果或当构建完成时经过e-mail通知,生成JUnit/TestNG测试报告。java

分布式构建:支持Jenkins可以让多台计算机一块儿构建/测试。node

文件识别:Jenkins可以跟踪哪次构建生成哪些jar,哪次构建使用哪一个版本的jar等。linux

丰富的插件支持:支持扩展插件,你能够开发适合本身团队使用的工具,如git,svn,maven,docker等。
nginx

补习一下:普通yum安装方式  (部署效率-》中,可能有卸载残留)

Linux时关闭selinuxsetenforce 0git

永久关闭,能够修改配置文件/etc/selinux/config,将其中SELINUX设置为disabled,以下,github

[root@localhost ~]# cat /etc/selinux/config   web

SELINUX=disabled  正则表达式

[root@localhost ~]# sestatus

检查防火墙是否开放了808050000端口。

Centos 7开放端口相关命令:

查看已经开放的端口:firewall-cmd --list-ports

开启端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent

命令含义:

–zone #做用域

–add-port=80/tcp #添加端口,格式为:端口/通信协议

–permanent #永久生效,没有此参数重启后失效

重启防火墙:

firewall-cmd --reload                #从新载入firewall配置,使配置生效

systemctl stop firewalld.service     #中止firewall

systemctl disable firewalld.service  #禁止firewall开机启动

 

安装openjdk1.8
yum install java-1.8.0-openjdk -y 安装git:
yum install
-y git 安装jenkins: sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
cat /etc/yum.repos.d/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins -y
更新jenkins

yum update jenkins

启动jenkins

systemctl start jenkins
systemctl status jenkins

# admin密码,初始化安装时会用到

less /var/log/jenkins/jenkins.log

或者:

cat /var/lib/jenkins/secrets/initialAdminPassword

卸载jenkins

在某次自动安装插件时异常了一大片,刷新也没出现下一步,等待许久无果,删了重装

1.rpm -e jenkins

2.会有一些残留的文件分散在各地

find / -iname jenkins | xargs -n 1000 rm -rf

 

rpm安装方式:(部署效率-》中,可能有卸载残留)

1.直接下载 rpm 安装 各个版本地址 https://pkg.jenkins.io/ wget https://pkg.jenkins.io/redhat/jenkins-2.156-1.1.noarch.rpm rpm -ivh jenkins-2.156-1.1.noarch.rpm 2.配置 vim /etc/sysconfig/jenkins #监听端口 JENKINS_PORT="8080" 3.配置权限 为了避免由于权限出现各类问题,这里直接使用root 修改用户为root vim /etc/sysconfig/jenkins #修改配置$JENKINS_USER="root" 修改目录权限: chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins
启动:
systemctl start jenkins

 systemctl status jenkins

 

根据这种方式能够本身实现一个Dockerfile。

 

FROM openjdk:8-jdk-stretch
# yum install java-1.8.0-openjdk -y
ARG user=jenkins
ARG group=jenkins
ARG uid=1000
ARG gid=1000
ARG http_port=8080
ARG agent_port=50000
ARG JENKINS_HOME=/var/jenkins_home
RUN mkdir -p $JENKINS_HOME \
  && chown ${uid}:${gid} $JENKINS_HOME \
  && groupadd -g ${gid} ${group} \
  && useradd -d "$JENKINS_HOME" -u ${uid} -g ${gid} -m -s /bin/bash ${user}

war文件如今 wget https://repo.jenkins-ci.org/public/org/jenkins-ci/main/jenkins-war/2.121.1/jenkins-war-2.121.1.war
# 省略 ......

找了个示例:

FROM centos:7
 
MAINTAINER abc 123456@qq.com
 
RUN yum install wget -y
 
ADD apache-tomcat-9.0.10.tar.gz /opt/
ADD apache-ant-1.10.5-bin.tar.gz /opt/
ADD jdk-8u181-linux-x64.tar.gz /opt/
ADD apache-maven-3.5.4-bin.tar.gz /opt/
ENV JAVA_HOME /opt/jdk1.8.0_181
ENV ANT_HOME /opt/apache-ant-1.10.5
ENV CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV MAVEN_HOME /opt/apache-maven-3.5.4
ENV JENKINS_HOME /var/jenkins_home
ENV JAVA_TOOL_OPTIONS -Dfile.encoding=UTF-8
ENV PATH $JAVA_HOME/bin:$ANT_HOME/bin:$PATH:$MAVEN_HOME/bin:$PATH:$JENKINS_HOME
RUN yum install -y git
CMD /opt/apache-tomcat-9.0.10/bin/catalina.sh run
 
RUN rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
# expose memcached port
EXPOSE 8080
EXPOSE 50000

直接war包安装方式(须要安装jdk1.8):(部署效率-》中,可能有卸载残留)

http://updates.jenkins-ci.org/download/war/ 2.78 将jenkins.war放到/usr/local中 执行java -jar httpPort=8080 jenkins.war,启动jenkins服务器 访问8080端口,能够看到jenkins的界面,须要输入秘钥 在控制台能够找到秘钥,也能够再/root/.jenkins/secrets/initialAdminPassword中找到 复制秘钥,进入界面 install suggested plugins,安装推荐的插件 建立一个管理员帐户,save and finish

一条 docker 命令安装方式:(部署效率-》快,数据在数据卷中,基本上无残留,对docker掌握的技术要求高)

1建立一个jenkins目录(用于备份数据)

# mkdir -p /home/jenkins_home

因为jenkins的官方的镜像的Dockerfile文件,将要挂载的文件夹的用户的uidgid必需是1000,因此要更改文件夹的属主和属组,下面这个方法最直接。

建立用户: useradd 1000

设置密码: passwd 1000

组的添加:   groupadd 1000   

chown -R 1000:1000 /home/jenkins_home

检查一些dockerhub的jenkins版本(请求API地址,对响应结果进行分页显示):

咱们经过浏览器访问:https://hub.docker.com 能够参考对应镜像文件的版本,可是在linux 是经过docker search jenkins是看不出来对应的版本信息的。

能够经过调用dockerhub的api接口:

https://registry.hub.docker.com/v1/repositories/{image镜像名称}/tags

示例:

curl -s https://registry.hub.docker.com/v1/repositories/jenkins/tags | awk -F"," 'gsub("},","}\n")' | more -10

说明:-10 每次显示10

能够作成shell脚本,命令的位置:/bin/usr/bin目录下,默认都是全体用户使用,或者/sbin,/usr/sbin,默认root用户使用。

受权可执行:chmod 777 docker-search-tags

根据上面的知识点得知,须要手动移动到/bin目录下:

 mv docker-search-tags /bin/

可使用which,whereis查找命令位置,详细点信息,经过maninfo命令

[root@master bin]# which docker-search-tags
/usr/bin/docker-search-tags
[root@master bin]# whereis docker-search-tags
docker-search-tags: /usr/bin/docker-search-tags
[root@master ~]# man docker-search-tags


[root@master ~]# info docker-search-tags

启动jenkins容器:

docker run -p 8080:8080 -p 50000:50000 -d --name jenkins \ --privileged=true \ -v /home/jenkins_home:/var/jenkins_home -u 0 \ jenkins/jenkins:lts

说明:

8080jenkins默认访问端口

50000端口用于slave集群间通讯

--privileged=true CentOS7中的selinux禁掉了,参数给容器加特权。那么能够检查一下selinux状态,开启的状况下会致使一些服务安装、使用不成功

-u 参数是使用宿主机的权限uid操做数据卷的文件:若是存在权限问题 就须要添加 -u参数 或者手动将文件 改成 用户和组为1000

换一个镜像:

docker run -d --restart unless-stopped --name jenkins \ -p 8080:8080 -p 50000:50000 \ -v /docker_volume/jenkins_home:/var/jenkins_home \ jenkins/jenkins:alpine

访问jenkins地址 http:<ip或者域名>:8080,进行安装初始化。

 查看镜像:

docker inspect jenkins/jenkins:alpine

密码查看:

初次启动的时候,能够经过下面命令查看控制台输出的密码,经过这个密码登陆系统。 docker logs -f jenkins

 由于咱们在部署jenkins服务时,在数据卷选项中主机目录映射到容器内目录。

 因此应该到咱们的主机映射目录去查看,宿主机中执行以下命令获得密码:

 cat /home/jenkins_home/secrets/initialAdminPassword

或者:

 sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

或者经过进入容器:

docker exec -it jenkins /bin/bash

而后查看密码:

cat /var/jenkins_home/secrets/initialAdminPassword

 

 

 发现文件的权限不够:须要设置权限后从新启动容器。

chmod -R 777 /home/jenkins_home

docker restart jenkins

或者:在启动容器时加上 -u 0参数。这参数的意思是覆盖容器中内置的账号,使用外部传入的用户ID做为默认用户,这里传入0表明的是root账号Id

权限分析:

  Jenkins镜像内部使用的用户是jenkins,可是咱们启动容器时的用户是root,致使没有权限操做内部目录,咱们能够稍微改一下上面的命令:

   查看容器用户

$ docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "whoami && id"

 jenkins  

 uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins)

 

查看容器"/var/jenkins_home"目录权限

$ docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "ls -la /var/jenkins_home"

total 20

drwxr-xr-x  2 jenkins jenkins 4096 Nov 22 07:43 .

drwxr-xr-x 26 root    root    4096 Nov  8 21:55 ..

-rw-r--r--  1 jenkins jenkins  220 Nov 12  2014 .bash_logout

-rw-r--r--  1 jenkins jenkins 3515 Nov 12  2014 .bashrc

-rw-r--r--  1 jenkins jenkins  675 Nov 12  2014 .profile

插件可以安装成功,就说明安装很成功了。

还有不少其余方式,比较麻烦,如:手动配置java环境,经过war包启动方式,这里不采用。手动配置的方式好处就是版本任意,docker方式版本可能不是最新的。

还有人用的这个镜像文件:这个版本安装时,安装插件存在安装失败的状况

docker run -it -d -p 8080:8080 -p 50000:50000 \ --name jenkins --privileged=true -u 0 \ -v /home/jenkins_home:/var/jenkins_home \ jenkins

我也挺纳闷,最新版本这么才是 2.60.3,正式版都2.100多了

恭喜你中大奖了 ,本人亲测好几遍,默认插件安装不上,有人说时候本身单独安装,强迫症的我,看着就不爽,抓狂抓狂~~~

jenkins经常使用的插件:

如下这两个网站是Jenkins全部的插件及说明

Jenkins Plugins https://plugins.jenkins.io

Jinkins Plugins Wiki https://wiki.jenkins.io

参考文章
jenkins经常使用插件汇总
Jenkins插件大全

git插件 :默认
Ant插件 :基本没用过

svn插件 :如今不怎么用了,都用git了
maven插件 :手动安装/自定义安装
github插件 :自定义安装
gitLib插件 :自定义安装
SSH插件:默认
一、Publish Over SSH Plugin:
做用:经过SSH拷贝文件到目标机器,同时能够在目标机器上执行脚本
二、Email Extension Plugin 
连接:https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin
做用:用于替换Jenkins自带的邮件发送,更加的强大
三、Role-based Authorization Strategy 
连接:https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin
做用:基于角色的的用户权限控制

Rancher 部署服务来完成jenkins的安装:

Rancher提供了在生产环境中使用的企业级管理Docker和Kubernetes的全栈化容器部署与管理平台。

Rancher可使用任何公有云或者私有云的Linux主机资源。Linux主机能够是虚拟机,也能够是物理机。

Rancher仅须要主机有CPU,内存,本地磁盘和网络资源。从Rancher的角度来讲,一台云厂商提供的云主机和一台本身的物理机是同样的。

Rancher包含了当前所有主流的编排调度引擎,例如Docker SwarmKubernetesMesos

同一个用户能够建立Swarm或者Kubernetes集群。而且可使用原生的Swarm或者Kubernetes工具管理应用。

 目前Rancher支持以下四种:Cattle/Kubernetes/Mesos/Swarm, Cattle是Rancher本身内置的缺省的编排环境,缺省的Default的即为Cattle类型的。

RANCHER服务器标签

Rancher服务器有2个不一样的标签。对于每一个主要版本标记,咱们将提供特定版本的文档。

  • rancher/server:latesttag将是咱们最新的开发版本。这些构建将经过CI自动化框架进行验证。这些版本不适用于生产中的部署。
  • rancher/server:stable标签将是咱们最新的稳定版本。此标记是咱们建议用于生产的版本。

请不要使用带rc{n}后缀的任何版本。这些rc构建适用于Rancher团队测试构建。

 先从镜像中心下载rancher镜像:

参考文档1.X版本:https://rancher.com/docs/rancher/v1.6/en/quick-start-guide/

若是是1.x系列的,镜像名为rancher/server,而2.x是rancher/rancher,咱们使用2.x版本的,因此,执行以下命令便可:

Rancher部署 单容器部署(使用容器内部自带的MySQL数据库) 在安装和部署了Docker容器环境的Linux服务器上,使用一个简单的命令就能够启动一个单实例的Rancher。
# 1.x版本 $
sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable
查看日志:
$ sudo docker logs -f <CONTAINER_ID>

Rancher服务器启动只需几分钟。日志显示时,Rancher UI已启动并正在运行。
配置完成后,这行日志几乎就会当即生效。此输出后可能还有其余日志,所以请不要认为它将在初始化时成为日志的最后一行。


# 2.x版本
.... Startup Succeeded, Listening on port...
  当前2.x版本的快速入门:https://www.cnrancher.com/quick-start
  Linux主机操做系统:64位Ubuntu 16.04或者CentOS7
  硬件:最少1核 至少4GB内存(这块被坑过,没注意内存大小,致使安装一直不成功
2.X版本的测试命令:
 $ sudo docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
-v /var/lib/rancher/:/var/lib/rancher/ \
rancher/rancher:stable

--name rancher
规矩点的命令:
$ mkdir -p /docker_volume/rancher_home/rancher $ mkdir -p /docker_volume/rancher_home/auditlog

$-/docker_volume/rancher_home/rancher$-/docker_volume/rancher_home/auditlog
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 \ -v /docker_volume/rancher_home/rancher:/var/lib/rancher \ -v /docker_volume/rancher_home/auditlog:/var/log/auditlog \ --name rancher rancher/rancher:stable  

Rancher 2.0部署与使用过程当中常见的问题及其解决方法:

一、部署Rancher 2.0的环境需求

  • 推荐使用的操做系统
  • 推荐的硬件配置
  • 支持的docker版本
  • 防火墙须要容许经过的端口

二、部署过程当中的常见问题及排查思路

  • 环境信息残留
  • openssh版本太低问题
  • nodeport端口只有一台机器能访问
  • 部署使用calico网络部署环境失败问题
  • 部署时主机not found问题
  • web页面kubectl闪退问题
  • 非worker节点仍然被调度pod问题
  • it is a not share mount 问题
  • networkredy=false 问题
  • 集群 unavailable
1.x版本 单容器部署(使用外部MySQL数据库) 除了使用内部的数据库,你能够启动一个Rancher Server并使用一个外部的数据库。启动命令与以前同样,但添加了一些额外的参数去说明如何链接你的外部数据库。 使用外部数据库,须要提早建立数据库名和数据库用户,Rancher服务启动后会自动建立Rancher管理平台须要的数据库表。如下为相关的建库脚本, 可供参考: > CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8'; > GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle'; > GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle'; 启动一个Rancher链接一个外部数据库,你须要在启动容器的命令中添加额外参数。 $ sudo docker run -d --restart=unless-stopped -p 8090:8080 rancher/server \ --db-host 192.168.1.101 --db-port 3306 --db-user username --db-pass password --db-name cattle 大部分的输入参数都有默认值而且是可选的,只有MySQL数据库主机地址配置项是必须配置的。 --db-host 数据库主机名或IP地址 --db-port               数据库服务端口(默认为:3306) --db-user 数据库用户名(默认为:cattle) --db-pass 数据库用户密码(默认为:cattle) --db-name 数据库名(默认为:cattle)

在高可用(HA)的模式下运行Rancher Server与单容器部署方式同样简单,但须要暴露一个额外的服务端口用于实现集群节点之间的通信。
须要添加额外的参数到启动命令中,而且运行一个外部的负载均衡就能够了。

HA 节点:

9345,8080端口须要在各个节点之间可以互相访问

至少1GB内存

MySQL数据库

至少1GB内存

每一个Rancher Server节点须要50个链接 (例如:3个节点的Rancher则须要至少150个链接)
大规模部署建议

  • 每个Rancher Server节点须要有4GB 或者 8GB的堆空间,意味着须要8GB 或者 16GB内存
  • MySQL数据库须要有高性能磁盘
  • 对于一个完整的HA,建议使用一个有备份的MySQL数据库。另外一种选择则是使用MySQL集群(Galera)。

在每一个须要加入Rancher Server HA集群的节点上,运行如下命令:

$ docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 \ rancher/server --db-host 192.168.1.101 --db-port 3306 \ --db-user Cattle --db-pass cattle --db-name cattle \ --advertise-address <IP_of_the_Node> 

在每一个节点上,<IP_of_the_Node> 须要在每一个节点上惟一,由于这个IP会被添加到HA的设置中。

若是你修改了 -p 8080:8080 并在host上暴露了一个不同的端口,你须要添加 --advertise-http-port <host_port> 参数到命令中, 以下所示:

$ docker run -d --restart=unless-stopped -p 8000:8080 -p 9345:9345 \ rancher/server --db-host 192.168.1.101 --db-port 3306 \ --db-user Cattle --db-pass cattle --db-name cattle \ --advertise-address 192.168.1.102 --advertise-http-port 8000

初始配置

访问rancher的管理web页面:https://192.168.1.101:8080

添加agant 节点

 https://blog.51cto.com/13043516/2299949

切换为中文:单击“ 基础架构”,单击“ 添加主机”Rancher将提示您选择主机注册URL。此URL是Rancher服务器运行的位置,必须能够从要添加的全部主机访问。这在Rancher服务器将经过NAT防火墙或负载平衡器暴露给Internet的安装中很是有用。若是您的主机具备私有或本地IP地址192.168.*.*,Rancher将打印一条警告,要求您确保主机确实能够访问该URL。

因为咱们正在添加同时运行Rancher服务器的主机,所以咱们须要添加应该用于主机的公共IP。其中一个选项提供了输入此IP的功能,该IP会自动使用环境变量更新自定义命令。

在运行Rancher服务器的主机中运行此命令。当您在Rancher UI上单击“ 关闭”时,您将被定向回“ 基础架构” - >“ 主机”视图。几分钟后,主机将自动出现。

 

 

添加主机的意思(物理机/云主机ecs节点),就是添加主机到集群。

 拷贝出来在须要加入集群的,能够相互访问的主机节点 执行该命令:

sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.1.110:8090/v1/scripts/AB0EDE972891EE3B4F8E:1546214400000:PGj1EDD8P46wtSzI5IzE3hhP8

 每一个新添加的主机,都去http://192.168.1.110:8090这个节点进行注册。

 点击 基础架构 ---》主机,进入主机页面,发现会自动下载不少个容器,

咱们能够经过docker image ls(docker images)和docker container ls(docker ps -a)看看刚才集群建立过程当中都为咱们拉取了哪些镜像和启动了哪些容器:

 

 建立nginx容器:

 可能会建立失败,通常状况是端口被占用,docker-proxy会占用8080端口,暴露端口改为8000

部署tomcat8镜像:

 

经过另外的一种方式是经过rancher应用商店安装jenkins

 

左侧是jenkins-ci server,第三个是swam-plugin,这两个能够组成一个master/slave模式的集群。

 安装单机版时,只需呀安装第一个插件,

容器内: /var/jenkins_home/secrets/initialAdminPassword 宿主机: /var/lib/docker/jenkins-ci/secrets/initialAdminPassword 访问 IP:8066 输入密码

 再来理解一下应用和服务和容器之间的关系

每一个用户下面有多个应用,一个应用下面有多个服务,一个服务下面对应多个容器。

 删除jenkins-ci时,删除的是应用,若是删除的服务,那么下次安装时会失败。

 2.0.x版本是安装页面以下:

注:由于Rancher是自动使用的自签名证书,在第一次登陆会提示安全授信问题,信任便可

点开红框,在点开继续前往

修改密码,默认密码admin ,这里改成123456

 

设置服务器地址:默认就能够

 

进入主页,修改成中文简体语言

首先须要添加一个集群,这里选择CUSTOM自定义集群,集群的名称可自定义:

 

 配置主机的及角色地址,这个主机也就是rancher agent:按照1的描述,每一个集群都必须包含下面的三个选项至少都存在一个,而当前就一个节点做为1个集群,因此须要三个都勾选上。

复制2的内容,在192.168.1.101的linux命令行执行,若是是多个节点,就在须要添加的节点执行。agant能够理解为注册中心。每一个节点都执行一遍,那不就是向注册中心注册数据么。

下载agant须要等个几分钟。

 

 注册成功,页面会显示一个提示,点击完成。

 此时咱们的集群处于等待注册的状态,点击主机下的数字能够查看主机信息:

 

主机信息以下,这会主机处于注册中的状态:

基本上就这个意思,2.x不少坑,先本研究了,有时间在搞搞~~~

清理容器

$ docker rm -f  $(docker ps -a -q)

$ docker stop $(docker ps -a -q) && docker system prune --all --force

 ====================================================================================================================================================

操做系统分类

 全功能操做系统:常见有 Ubuntu、CentOS
这类操做系统的功能无疑是最齐全的。若是某个应用程序须要某个特定的特性或功能,全功能操做系统或许都能知足它。
不过这种“齐全”也是有必定代价的:在存储、内存和CPU资源方面,这类操做系统对系统的要求最高。
同时,这些功能还会增长操做系统的攻击面,为潜在的攻击者提供更多的角落和缝隙进行攻击。

不管是价格成本仍是安全风险,若是操做系统的这些功能都是应用程序须要的,那么这些成本也就很容易承担了;但若是只须要少许功能,相较之下性价比就略低。
最适合的用例,是企业须要在单个OS实例之上的容器中部署多个不一样应用程序。在这些状况下,操做系统的功能多而全,多是支持应用程序最经济的方式。
  精简的操做系统:常见有BusyBox和Alpine Linux
 容器,尽量地将少而精的功能聚集在一块儿,建立完整的应用程序。
BusyBox是由于是单一可执行文件而体积很小, 而Alpine Linux则是使用强化的内核,为其前身BusyBox的紧凑、简单的目标增长安全性。

容器操做系统:常见有 Rancher OS和Container Linux
开箱即用,拥有内置的自动化和容器编排工具。它们被设计和构建为“主机”操做系统,用于托管Alpine和BusyBox等容器操做系统的操做系统。
容器操做系统的特征在于,它不只仅是一个支持容器的软件,而是使用容器技术部署的软件。“容器一直向下”的体系结构意味部署的自定义程序更高、更灵活,从而比传统的OS部署复杂得多。
另外一方面,对于早期转向容器的组织,或者对于那些不必定适合容器架构的应用程序部署中,“全容器”架构并不是那么容易。
RancherOS中的每一个进程都在Docker管理的单独容器中运行。对Docker的优化和依赖让RancherOS能够作到体积极小、启动极快。
除了基本的性能优点以外,RancherOS系统服务由Docker Compose定义和配置。这种依赖意味着只加载和部署应用程序所需的服务,从而进一步加速和简化部署。
经过与cloud-init集成,再次简化了部署,从而实现了普遍和高速的自动配置和部署。

三大类可用于容器部署操做系统,开发团队应该选择哪一种?

若是某个特定服务器的惟一目的是托管容器,那么像RancherOS和Container Linux这样的容器操做系统很是适合。

这类操做系统的自动化、部署速度和一致的容器架构,使其成为那些但愿优化容器托管环境的人的最佳选择。

 

若是要同时考虑容器和非容器应用程序,那么毫无疑问,像Ubuntu和CentOS这样的传统Linux部署也能够用做容器平台。

它们的体系结构、实用程序、功能列表将使它们启动速度变慢而且须要更多系统资源,但若是启动速度和最小资源消耗不是关键考虑因素,那么这类操做系统是不错的选择。

 
 

位于上述两者之间的BusyBox和Alpine Linux这样的极精简操做系统。

单从容器部署的角度出发,这类操做系统能够知足需求。不过若是企业存在资源受限的非容器应用程序(例如物联网的应用程序),这些应用程序也应该做为整个应用程序环境的一部分被考虑进来。

 
 

了解不一样类型操做系统的功能和限制之间的差别,对于任何用于生产的OS平台的讨论都相当重要。

使用现代操做系统,真正的考量不该该知足于哪一个操做系统能够工做,而是须要围绕哪一个操做系统能最有效和最高效地完成工做。

 ====================================================================================================================

具体介绍rancherOS

RancherOS,目标是成为一个运行Docker容器的最小linux发行版,体积只有30M左右,精简的很不错。
RancherOS中的全部东西都是Docker容器。咱们经过启动两个Docker实例来实现这一目标。
RancherOS中有两个Docker守护进程:System Docker容器,Docker容器

一个是咱们所谓的System Docker,它是系统上的第一个进程。全部其余系统服务,如ntpd,syslog和console,都在此Docker容器中运行。
System Docker运行一个名为Docker的特殊容器,PID为1,这是另外一个负责管理全部用户容器的Docker守护程序。

从控制台以用户身份启动的任何容器都将在此Docker中运行。这会建立与System Docker容器的隔离,并确保正常的用户命令不会影响系统服务。
咱们建立这种分离不只是为了安全性,还为了确保命令docker rm -f $(docker ps -qa)不会删除整个操做系统。

其实RancherOS技术并非多么厉害,不少linux发行版都很小,可是它的思想,它的观念是厉害的。
说到这里不得不提CoreOS,CoreOS的目标也是为了运行Docker,可是RancherOS要比CoreOS的设计思想更进一步。
RancherOS最初但愿能直接在Linux Kernel上运行Docker,把全部用户空间Linux服务分发为Docker容器。
这使得部署一个服务变得至关简单,对于运维人员来讲,须要就拿来,不须要就去掉,招之即来挥之即去。

视频教程:https://rancher.com/videos-and-podcasts/

这是官网文档:http://docs.rancher.com/os/

这是官网Github地址:https://github.com/rancher/os

快速入门:https://rancher.com/docs/os/v1.x/en/installation/running-rancheros/workstation/boot-from-iso/

安装到磁盘的官方文档:https://rancher.com/docs/os/v1.x/en/installation/running-rancheros/server/install-to-disk/

v1.5.0版本的initrd已经采用了gzip格式,文件体积有所增大,可是启动速度有了质的飞跃。 同时咱们也优化了system-docker的镜像加载和cloud-init的启动,对启动速度进行了深度优化。

安装RancherOS

RancherOS可使用Live版进行免安装体验,本文记述如何安装RancherOS到硬盘。

RancherOS ISO文件可用于在KVM,VMware,VirtualBox或裸机服务器上建立新的RancherOS安装。您能够rancheros.iso从咱们的发布页面下载该文件。

将RancherOS安装到一台虚拟机中,并经过SSH进行远程管理RancherOS主机。

而后尝试运行RancherOS系统特有的一些管理命令,好比查看系统可用版本、查看Docker可用版本,切换Docker版本、设置Docker镜像加速器、运行容器等等。

系统要求:1.5.x版本,内存在1GB以上,硬盘没有限制,通常5G足够使用,CPU配置1G~2G,网络模式改为桥接网卡,EFI启动不要勾选。

登陆帐号:rancher  密码:rancher

环境配置:
Win10+VirtualBox-5 用于建立2台虚拟机(RancherOS、Ubuntu16.04

RancherOS    1台  192.168.1.200  安装到虚拟机硬盘中

Ubuntu16.04  1台  192.168.1.100  建立秘钥,远程ssh操做RancherOS

主要过程:
1、在Ubuntu机器上,使用ssh-keygen生成秘钥对; 2、编辑cloud-config.yml配置文件,放入ssh公钥和IP地址信息; 3、在RancherOS主机上使用scp命令,将Ubuntu上的配置文件拷贝到机器中; 4、执行sudo ros install命令,指定配置文件和磁盘,安装RancherOS系统到硬盘中; 5、重启RancherOS主机,并在ubuntu机器上使用私钥ssh登陆到RancherOS进行管理; 6、尝试查看系统可用版本、切换Docker版本、设置镜像加速器、运行容器等基本操做;

一、先建立一台普通的虚拟机,安装linux普通操做系统(主要是用于操做rancherOS系统的客户端),使用ssh-keygen生成秘钥对,三次回车,使用默认文件名

ssh-keygen -t rsa

生成的公钥和私钥文件名、位置及内容

二、编辑cloud-config.yml配置文件,设置即将要安装的RancherOS主机的网络相关信息,复制粘贴方式加入公钥

rancher:
    network:
        interfaces:
            eth0:
                address: 192.168.1.100/24
                gateway: 192.168.1.1
                mtu: 1500
                dhcp: false

ssh_authorized_keys:
    - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0rUXXb3mIX1Zt0U6GMGchehCp7nIo75jENxYWgg0hQCQ9+BMOmN1Dtl/UsewNRRO3X4OajJ0M4fU0B8bWXsG1nv9cSESzoozh6AXo0ZxbZtp7Kg3aD41ncF1IW4pa3kAVEmgjxFc3VvYLhnF27zWxEmbqqulbBD7n6ARSJijbW/v0sNVncd14K/B5eYdIZIbzdAWpvbYI5Eug42G+CJlZo4q/Qa9XBeGDQAU+aHIZj+fkj4U8t5DFAI6ApUa5h4P5/ddBTNDj7f/iyXTOgJQrtnITSdd565+11S6ERZSWt88C7/OfspDZZx9gFy2lIxI46TTdMkfnlqbEpQbC1KzFw== rsa 2048-041018

 三、建立新的一台虚拟机,设置光驱为rancheros.iso文件

默认选第一个,而后下一步。

自动登陆默认用户:rancher/rancher

  • 下载RancherOS的ISO镜像:rancheros.iso,引导镜像1.5.x版本127MB大小。
  • 配置好虚拟机,启动RancherOS,使用默认启动项
  • 在系统内部配置DHCP时,RancherOS的eth0会自动获取IP地址
  • 在RancherOS主机上,使用scp命令将远程的客户端的主机上的cloud-config.yml文件拷贝到RancherOS机器上
$ sudo scp root@192.168.1.101:/root/cloud-config.yml /var/lib/rancher/conf
$ sudo scp root@192.168.1.101:/root/cloud-config.yml .
  • 使用fdisk -l 查看本地磁盘的名称及大小
  •  sudo fdisk -l | grep Disk
  • 使用ros install命令,安装RancherOS系统到本地硬盘中
sudo ros install -c cloud-config.yml -d /dev/sda

一直按y肯定。

四、移除RancherOS虚拟机光驱,以便从硬盘启动系统

      从新启动虚机,从硬盘启动RancherOS系统,IP地址已经是配置文件中的IP

五、在客户端的linux机器上,使用私钥文件远程ssh登陆到RancherOS机器上,这里有可能登陆不上去的,缘由是网络没有设置为桥接模式,NAT模式有可能不行。

ssh -i /root/.ssh/id_rsa rancher@192.168.1.200
或者

ssh rancher@192.168.1.200

六、执行其余操做-查看ros版本-可用版本-docker版本-可用docker引擎的版本

# 查看rancherOS当前的系统版本

$ sudo ros -v

#查看存在的系统版本列表
$ sudo ros os list

 

#查看当前的docker版本

$ sudo docker -v     
$ sudo docker version

#查看存在的docker版本列表

$ sudo ros engine list

 

七、切换到docker-17.03.1-ce 版本,再次查看Docker版本已经是新切换的docker-17.03.1-ce 版本

sudo ros engine switch docker-17.03.1-ce

八、配置镜像加速器

若是速度慢,能够设置国内的镜像 'https://nj9kfpre.mirror.aliyuncs.com'
手工设置 mirror,加快下载速度:  
# RancherOS内设置registry mirror
$ sudo ros config set rancher.docker.registry-mirror "https://s06nkgus.mirror.aliyuncs.com"

$ sudo ros config set rancher.docker.registry_mirror https://registry.docker-cn.com
$ sudo system-docker restart docker
15,经过命令查看这个 container 的运行情况:  sudo docker logs -f rancher
注意,docker 容器的启动须要时间,须要观察到这个容器启动完毕后才能 reboot 系统,不然再启动后容易出错
sudo reboot

 sudo docker info

  再次执行 sudo docker info。多了个仓库地址:

测试镜像下载时间:

 time sudo docker pull nginx

 100m用了54秒,约500m用了21秒

注意: system-docker只能由root用户使用,所以sudo每当您想要与System Docker交互时都必须使用该命令。

RancherOS默认是打开DHCP客户端Docker进程的,因此是能自动获取IP地址的,也能够像下面同样配置静态IP

#先查看本身网络设备名称
ip link
#添加IP,注意将IP和eth0换成本身的
sudo ip addr add 192.168.1.101/24 dev eth0
#添加默认网关,注意将IP换成本身的
sudo route add default gw 192.168.1.1
#添加DNS,注意将IP换成本身的
sudo vi /etc/resolv.conf
#打开resolv.conf文件后添加
nameserver 192.168.1.1
#保存退出

=====================================================================================================================================================

注册网易云帐号,管理镜像仓库

https://www.163yun.com

须要实名认证和企业认证,我的用户目前不具有条件的

我的建议使用阿里云的仓库(支持我的帐户):学习地址(地址有视频教程):https://www.aliyun.com/product/containerservice

 阿里云镜像仓库地址:登陆阿里云帐户以后访问  https://cr.console.aliyun.com   

 ubuntu和centos加速器是同样的

/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://w3m66zhu.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 

 

 

 能够建立k8s集群和swarm集群

 

卡里要大于100元。

awk分字段内容的替换 1 简单例子 awk的内置字符串函数sub和gsub的区别: sub匹配第一次出现的符合模式的字符串,至关于 sed 's//' sub函数匹配指定域/记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。若是没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。 格式以下: sub (regular expression, substitution string) sub (regular expression, substitution string, target string) gsub匹配全部的符合模式的字符串,至关于 sed 's//g' gsub函数做用跟sub相似,但它会替换全部匹配值 格式以下: gsub (regular expression, substitution string) gsub (regular expression, substitution string, target string) 另外, 只有针对字段进行替换的时候 ,指定0FS变量才有用, 若是不指定字段,对整条记录进行替换,不须要指定OFS。
操做1:将第一个“/”替换成空格,后面的“/”不变 $ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," 'sub("/"," ")' mm dd,2018/01/22 00:00:01 操做2:将全部“/”替换成空格 $ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," 'gsub("/"," ")' mm dd,2018 01 22 00:00:01 操做3:将第2和第3个“/”替换成空格,第1个“/”不变 $ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," 'gsub("/"," ",$2)' mm/dd 2018 01 22 00:00:01 问题来了,dd后面的“,”分隔符没有了,由于这里的替换是针对字段进行的,字段内容发生了变化,意味着须要从新设定输出分隔符OFS。 $ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," -v OFS="," 'gsub("/"," ",$2)' mm/dd,2018 01 22 00:00:01 操做4:若是只需第2个“/”替换成空格,第1个和第3个“/”不变 $ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," -v OFS="," 'sub("/"," ",$2)' mm/dd,2018 01/22 00:00:01

 

 资料参考:

https://blog.csdn.net/shenhonglei1234/article/details/86307437
https://blog.51cto.com/zero01/2168999
https://anjia0532.github.io/2017/11/10/rancher-k8s/
相关文章
相关标签/搜索