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 &
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com