Docker部署微服务
实验准备:
准备一台虚拟机4G以上内存
将网络模式更改为nat模式,在编辑——>虚拟网络编辑器内更改NAT模式的网段ip为10.0.0.0,子网掩码为255.255.255.0

随后进入虚拟机进行更改:
>vi /etc/sysconfig/network-scripts/ifcfg-ens33
将BOOTPROTO改为none或者stasic(静态ip获取)
随后在最下方另起一行添加:
IPADDR=10.0.0.220
GATEWAY=10.0.0.2
PREFIX=24
DNS1=114.114.114.114
保存退出
重启网络
>systemctl restart network
检验:
>ping www.baidu.com
关闭防火墙以及selinux保证base、epel仓库可用,网络畅通
一、部署docker
配置阿里云docker yum源:
>yum install -y yum-utils device-mapper-persistent-data lvm2 git
>yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装指定版本:
可以使用
>yum list docker-ce —showduplicates
查看版本
需要指定完整的rpm包的包名,并且加上—setopt=obsoletes=0
参数:
> yum install -y —setopt=obsoletes=0 \
docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
安装Docker新版本(比如Docker 19.03.0):
>yum install docker-ce-19.03.0.ce -y
或者
>yum install docker-ce -y
下载完毕后启动docker:
>systemctl start docker
>systemctl enable docker
查看docker运行状态:
>docker info
随后部署centos镜像到我们的服务器备用
具体流程:
国内镜像站
https://www.daocloud.io
国外镜像站
https://hub.docker.com
登录以上两个仓库注册账号(已有账号请跳过)
随后点击我的账户
搜索c后在右侧镜像列表中找到centos
随后点centos,往下翻找到Dockerfile内容
复制之后回到虚拟机
>cd
>mkdir centos
>cd centos
>vim Dockerfile
将复制的内容粘贴进去

随后保存退出即可
随后在当前目录
>docker build -t centos:7 .
过程较长耐心等待
构建完毕后
>docker images
查看构建的centos镜像
将需要的项目上传到服务器
>yum -y install lftp
> lftp www.xingdiancloud.cn
>cd share/
>get tensquare_admin_service-1.0-SNAPSHOT.jar
>get tensquare_eureka_server-1.0-SNAPSHOT.jar
>get tensquare_gathering-1.0-SNAPSHOT.jar
>get tensquare_zuul-1.0-SNAPSHOT.jar
>get dist.tar.gz
随后在/opt/目录下创建对应的项目包
>cd /opt/
>mkdir admin
>mkdir eureka
>mkdir gathering
>mkdir zuul
同时将项目需要的jdk环境的包上传到本地/opt/目录下
把jdk的压缩包复制到刚创建的每一个目录里
>cp jdk-8u191-linux-x64.tar.gz /opt/admin/
>cp jdk-8u191-linux-x64.tar.gz /opt/eureka/
>cp jdk-8u191-linux-x64.tar.gz /opt/gathering/
>cp jdk-8u191-linux-x64.tar.gz /opt/zuul/
将对应的项目包放到对应的目录内:
>mv tensquare_admin_service-1.0-SNAPSHOT.jar /opt/admin/
>mv tensquare_eureka_server-1.0-SNAPSHOT.jar /opt/eureka/
>mv tensquare_gathering-1.0-SNAPSHOT.jar /opt/gathering
>mv tensquare_zuul-1.0-SNAPSHOT.jar /opt/zuul/
随后开始创建对应的Dockerfile文件,构建镜像
>vim admin/Dockerfile
FROM centos:7
MAINTAINER “admin” 1277848836@qq.com
ADD jdk-8u191-linux-x64.tar.gz /usr/local
RUN mv /usr/local/jdk1.8.0_191 /usr/local/java
ENV JAVA_HOME /usr/local/java/
ENV PATH $PATH:$JAVA_HOME/bin
COPY tensquare_admin_service-1.0-SNAPSHOT.jar /usr/local
CMD java -jar /usr/local/tensquare_admin_service-1.0-SNAPSHOT.jar
保存退出
> vim eureka/Dockerfile
FROM centos:7
MAINTAINER “eureka” 1277848836@qq.com
ADD jdk-8u191-linux-x64.tar.gz /usr/local
RUN mv /usr/local/jdk1.8.0_191 /usr/local/java
ENV JAVA_HOME /usr/local/java/
ENV PATH $PATH:$JAVA_HOME/bin
COPY tensquare_eureka_server-1.0-SNAPSHOT.jar /usr/local
CMD java -jar /usr/local/tensquare_eureka_server-1.0-SNAPSHOT.jar
保存退出
>vim gathering/Dockerfile
FROM centos:7
MAINTAINER “gathering” 1277848836@qq.com
ADD jdk-8u191-linux-x64.tar.gz /usr/local
RUN mv /usr/local/jdk1.8.0_191 /usr/local/java
ENV JAVA_HOME /usr/local/java/
ENV PATH $PATH:$JAVA_HOME/bin
COPY tensquare_gathering-1.0-SNAPSHOT.jar /usr/local
CMD java -jar /usr/local/tensquare_gathering-1.0-SNAPSHOT.jar
保存退出
>vim zuul/Dockerfile
FROM centos:7
MAINTAINER “zuul” 1277848836@qq.com
ADD jdk-8u191-linux-x64.tar.gz /usr/local
RUN mv /usr/local/jdk1.8.0_191 /usr/local/java
ENV JAVA_HOME /usr/local/java/
ENV PATH $PATH:$JAVA_HOME/bin
COPY tensquare_zuul-1.0-SNAPSHOT.jar /usr/local
CMD java -jar /usr/local/tensquare_zuul-1.0-SNAPSHOT.jar
保存退出
更改后为下图
开始构建镜像:
注意此项目的端口映射:
>cd eureka/
> docker build -t eureka .
> docker run -itd —name eureka —hostname eureka -p 30020:10086 eureka
目前只启动eureka这一个镜像,其他项目先构建备用
>cd admin/
> docker build -t admin .
>cd gathering/
> docker build -t gathering .
>cd zuul/
>docker build -t zuul .
随后再去拉取一个mysql的镜像
回到docker官方仓库页面:



回到虚拟机
>cd /opt/
>docker pull daocloud.io/library/mysql:5.7
过程较久,耐心等待
>部署完之后运行mysql镜像生成容器
> docker run -itd —name mysql -e MYSQL_ROOT_PASSWORD=mysql -p 30023:3306 daocloud.io/library/mysql:5.7
>将项目包的数据上传到服务器:
>wget http://www.xingdiancloud.cn:92/index.php/s/qGGdMSZG7DEb4B4/download/tensquare_gathering.sql
>wget http://www.xingdiancloud.cn:92/index.php/s/ZMfdz5a7C858dq6/download/tensquare_user.sql
随后登入容器的mysql进行表的创建和数据的导入
首先下载mysql的命令:
>yum -y install mariadb
随后:
>mysql -u root -pmysql -h 10.0.0.220 -P 30023
> MySQL [(none)]> create database tensquare_user charset=utf8;
> MySQL [(none)]> create database tensquare_gathering charset=utf8;
>MySQL [(none)]> use tensquare_user
>MySQL [tensquare_user]> source /root/tensquare_user.sql
>MySQL [tensquare_user]> use tensquare_gathering
>MySQL [tensquare_gathering]> source /root/tensquare_gathering.sql
注意不要盲目导入,自己的sql文件在哪就输入那里的路径
随后构建nginx的容器:
回到docker的官方仓库:


回到服务器:
> docker pull daocloud.io/library/nginx:1.12.0-alpine
>docker images
进行构建容器之前,先创建一个映射目录,并将dist.tar.gz中的内容解压并复制里面::
>mkdir /nginx
> tar xf dist.tar.gz
>cp dist/* /nginx/ -r
> docker run -itd —name nginx —hostname nginx -p 80:80 -v /nginx:/usr/share/nginx/html/ daocloud.io/library/nginx:1.12.0-alpine
>chmod 777 /nginx/ -R
启动剩余镜像:
>cd /opt/admin
>docker build -t admin .
>cd /opt/gathering/
> docker build -t gathering .
>cd /opt/zuul/
> docker build -t zuul .
随后构建刚刚创建的镜像:
> docker run -itd —name admin —hostname admin -p 30024:9001 admin
> docker run -itd —name gathering —hostname gathering -p 30022:9002 gathering
> docker run -itd —name zuul —hostname zuul -p 30021:10020 zuul
如果遇到了
这种情况,关闭防火墙重启docker
更改完了之后
>docker ps
查看对应的容器是否启动以及对应的端口
随后使用浏览器访问:
10.0.0.220:30020
查看这三个组件是否成功启动
成功后再访问10.0.0.220:80
默认账户:admin
密码:123456
登录成功则部署成功,想看内容就多刷新一下
