@zhangyy
2019-12-12T16:42:13.000000Z
字数 6810
阅读 158
docker的部分
- 一:docker的Compose 打包部署工具
- 二:CI/CD 构建持续集成环境
- 三:实现CI/CD发布项目
- 四:容器服务注册与发现
1 、介绍
Compose是一个定义和管理多容器的工具,使用Python语言编写。使用Compose配置文件描述多个容器应用的架构,比如使用什么镜像、数据卷、网络、映射端口等;然后
一条命令管理所有服务,比如启动、停止、重启等。
2 2 、安装
curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
或者
pip install docker-compose
3 3 、 YAML 文件格式及编写注意事项
YAML是一种标记语言很直观的数据序列化格式,可读性高。类似于XML数据描述语言,语法比XML简单的很多。
YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来。
YAML文件格式注意事项:
1.不支持制表符tab键缩进,需要使用空格缩进
2.通常开头缩进2个空格
3.字符后缩进1个空格,如冒号、逗号、横杆
4.用井号注释
5.如果包含特殊字符用单引号引起来
6.布尔值(true、false、yes、no、on、off)必须用引号括起来,这样分析器会将他们解释为字符串。
tree compose_lnmp
docker-compose -f docker-compose.yml up 一直到构建接收
docker-compose -f docker-compose.yml up -d ### 后台查看
docker-compose -f docker-compose.yml ps ### 查看运行的容器
mv wordpress-4.7.4-zh_CN.tar.gz /root/compose_lnmp/wwwroot/
cd /root/compose_lnmp/wwwroot/
tar -zxvf /root/compose_lnmp/wwwroot/
测试: http://172.17.100.12:81/wordpress/
此处用户名密码在docker-compose.yml里面已经定义好了
数据库主机填写:mysql
tree compose_nginx_tomcat/
部署jdk
cp -p jdk-8u45-linux-x64.tar.gz /root/compose_nginx_tomcat/
cd /root/compose_nginx_tomcat/
tar -zxvf jdk-8u45-linux-x64.tar.gz
mv jdk1.8.0_45/ /usr/local/
docker-compose -f docker-compose.yml up ### 一直到执行结束
docker-compose -f docker-compose.yml up -d
docker-compose -f docker-compose.yml ps
访问测试:
http://172.17.100.12:82/
下载harbor 软件:harbor-offline-installer-v1.1.2.tgz
wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
tar xvf harbor-offline-installer-v1.1.2.tgz
mv harbor /usr/local/
cd /usr/local/harbor
----
vim harbor.cfg
---
更改harbor 的hostname
hostname = 172.17.100.13
---
执行harbor脚本开始构建
cd /usr/local/harbor/
./install.sh #### 一直到构建完毕
····
····
····
---
docker ps -a
打关浏览器:
http://172.17.100.13
用户名: admin 密码: Harbor12345
增加一个项目flyfish
更改增加一个registries
vim /etc/docker/daemon.json
----
{
"registry-mirrors": [ "https://registry.docker-cn.com"],
"insecure-registries":["172.17.100.13"] ### 增加一行
----
然后重启docker
service docker restart
登录docker 仓库
docker login 172.17.100.13
输入用户名 admin 密码: Harbor12345
给上传仓库的镜像 打一个tag
docker tag nginx:latest 172.17.100.13/flyfish/nginx:latest
上传push 到镜像仓库
docker push 172.17.100.13/flyfish/nginx
172.17.100.11 jenkins
172.17.100.12 docker (tomcat)
172.17.100.13 git/harbor
172.17.100.13
yum install -y git
useradd git && echo git |passwd git --stdin
su - git
mkdir solo.git
cd solo.git
git --bare init
172.17.100.11:
cd /root/
git clone https://github.com/b3log/solo.git
cd solo/src/main/resources
vim latke.properties
---
serverHost=172.17.100.12
serverPort=8888
---
模拟提交solo 到git
mkdir test
cd test
git clone root@172.17.100.13:/home/git/solo.git
cp -ap /root/solo/* /root/test/solo/
cd /root/test/solo/
git add .
git commit -m "all"
git push oriagin master
----
jenkins 拉代码不要输入密码:
linux下每次git clone不需输入账号密码的方法
在~/下, touch创建文件 .git-credentials, 用vim编辑此文件,输入内容格式:
ame@zhenyun ~ $touch .git-credentials
ame@zhenyun ~ $vim .git-credentials
在里面按“i”然后输入:https://{username}:{password}@github.com
比如 https://aoeddklj:1233ds@github.com
2. 在终端下执行
ame@zhenyun ~ $git config --global credential.helper store
3. 可以看到~/.gitconfig文件,会多了一项:
[credential]
helper = store
这个时候输入命令git clone http://username@url 时不需要输入密码,即可完成代码的git
----
配置jenkins
mkdir jenkins
cd jenkins
vim Dockerfile
----
FROM jenkins
USER root
RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list && \
wget http://mirrors.163.com/.help/sources.list.jessie -O /etc/apt/sources.list
RUN apt-get update && apt-get install -y git libltdl-dev
----
docker build -t jenkins:v1 .
生成jenkins 容器:
docker run -d \
--name jenkins \
-p 8080:8080 \
-v /var/jenkins_home/:/var/jenkins_home \
-v /usr/local/apache-maven-3.5.0:/usr/local/maven \
-v /usr/local/jdk1.8.0_45:/usr/local/jdk \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
-v ~/.ssh:/root/.ssh \
jenkins:v1
----
打开jenkins 的web 页面:
http://172.17.100.11:8080
172.17.100.12 : (tomcat)
引用构建一个tomcat的基础镜像
---
FROM centos:7
MAINTAINER www.aliangedu.com
RUN yum install unzip iproute -y
ENV JAVA_HOME /usr/local/jdk
ADD apache-tomcat-8.0.46.tar.gz /usr/local
RUN mv /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat
WORKDIR /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["./bin/catalina.sh", "run"]
---
docker build -t 172.17.100.13/tomcat:v1 .
提交镜像到仓库:harbor
docker login 172.17.100.13
将镜像上传打一个tag
docker tag 172.17.100.13/tomcat:v1 172.17.100.13/flyfish/tomcat:v1
docker push 172.17.100.13/flyfish/tomcat
打开harbor 仓库查看是否提交
新建一个工程
1 、介绍
Consul是一个分布式、高可用性,在基础设施中发现和配置服务的工具。
2 、安装
下载二进制Consul包:https://www.consul.io/downloads.html
# unzip consul_0.9.2_linux_amd64.zip
# mv consul /usr/bin
3 、部署
# consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=172.17.100.11 \
-client=0.0.0.0 \
-node=server01
放在后台运行:
nohup consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=172.17.100.11 -client=0.0.0.0 -node=server01 & > /var/log/consul.log &
查看集群信息:
consul members
consul info |grep leader
consul catalog services
通过 HTTP API 获取集群信息 :
curl 127.0.0.1:8500/v1/status/peers # 集群server成员
curl 127.0.0.1:8500/v1/status/leader # 集群Raft leader
curl 127.0.0.1:8500/v1/catalog/services # 注册的所有服务
curl 127.0.0.1:8500/v1/catalog/services/nginx # 服务信息
curl 127.0.0.1:8500/v1/catalog/nodes # 集群节点详细信息
curl -X PUT -d \
'{"id": "jetty","name": "service_name","address": "172.17.100.12","port": 8081,"tags": ["test"],"checks": [{"http":
"http://172.17.100.11:8081/","interval": "5s"}]}' \
http://172.17.100.11:8500/v1/agent/service/register
consul- template :
一个守护程序,用于实时查询consul集群数据,并更新文件系统上的任意数量的指定模板,生成配置文件,更新完成后可以选择运行任何Shell命令。
gliderlabs/registrator:
检查容器运行状态自动注册和注销Docker容器的服务到服务配置中心。目前支持Consu
l、etcd和SkyDNS2。
https://github.com/hashicorp/consul-template
https://releases.hashicorp.com/consul-template/0.19.3/consul-template_0.19.3_linux_amd64.zip
172.17.100.12 上面:
docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=172.17.100.12 \
consul://172.17.100.11:8500
172.17.100.11
yum install -y gcc gcc-c++ make openssl-devel pcre-devel
tar -zxvf nginx-1.12.1.tar.gz
cd nginx-1.12.1/
./configure --prefix=/usr/local/nginx && make -j 2 && make install
cd /usr/local/nginx
sbin/nginx
ps -ef |grep nginx
更改nginx 的配置文件增加注册时候生成的配置文件目录
cd /usr/local/nginx/conf
mkdir vhost
vim nginx.conf
----
在最后增加一个目录
include vhost/*.conf
----
172.17.100.11 上面配置
unzip consul-template_0.19.3_linux_amd64.zip
mv consul-template /usr/bin/
mkdir consul
cd consul
vim nginx.ctmpl
----
upstream http_backend {
# ip_hash;
{{range service "nginx"}}
server {{ .Address }}:{{ .Port }};
{{ end }}
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://http_backend;
}
}
----
nohup consul-template -consul-addr 172.17.100.11:8500 -template "./nginx.ctmpl:/usr/local/nginx/conf/vhost/site.conf:/usr/local/nginx/sbin/nginx -s reload" -log-level=info & > /var/log/site-nginx.log &