docker 学习笔记(二): Docker的项目案例
2018-05-13 10:41
393 查看
docker 项目案例
标签(空格分隔): docker的部分
- 一:docker的Compose 打包部署工具
- 二:CI/CD 构建持续集成环境
- 三:实现CI/CD发布项目
- 四:容器服务注册与发现
一:docker的Compose 打包部署工具
1.1:compose的介绍
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)必须用引号括起来,这样分析器会将他们解释为字符串。
1.2 compose的常用参数
1.3 一键部署lnmp
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 ### 查看运行的容器
1.4 wordpress 测试
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
1.5 一键部署 Nginx 反向代理 Tomcat
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/
1.6 执行compose构建
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/
二:构建持续集成环境
2.1 CI(持续集成)/CD(持续交付/持续部署)
2.2 发布流程设计
2.3 构建docker的harbor的私用仓库
下载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
三:实现CI/CD发布项目
3.1: 环境信息
172.17.100.11 jenkins 172.17.100.12 docker (tomcat) 172.17.100.13 git/harbor
3.2.1 安装git 服务
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
3.2.2 安装 jenkins
配置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
3.2.3 配置tomcat镜像并提交harbor仓库
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 仓库查看是否提交
3.3.4 配置jenkins 构建
新建一个工程
四:容器服务注册与发现
4.1 :Consul的介绍与安装
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 &
4.2 consul 的相关命令
查看集群信息: 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 # 集群节点详细信息
###4.3手动注册一个服务到consul中
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
4.3 Docker+Registrator+Consul实现容器服务自动加入Nginx集群
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
4.4 Docker 主机启动注册器
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
4.5 安装nginx 服务器
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 ----
4.6 配置consul-template
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 &
相关文章推荐
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- 一次项目维护案例而对事务学习的笔记
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
- Docker学习笔记五:Docker生成jenkins容器,支持Java Web项目持续集成、持续部署
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析