1.本地虚拟机创建
2.虚拟机安装Docker服务
3.Docker部署微服务集群
Linux镜像准备:
镜像版本:CentOS-7-x86
虚拟机镜像下载:
链接:https://pan.baidu.com/s/1pEnmonwXGNiFU3zKshGgOA
提取码:12f2
Oracle VM VirtualBox:
链接:https://pan.baidu.com/s/1igzEuMF0f2A_d2IKZo1Gjg
提取码:r21m
a.打开Oracle VM VirtualBox应用
名称:虚拟机名称
文件夹:为虚拟机存放在本机的地址
类型:选择Linux
版本:linux镜像为64bit,本人本机选择的是RedHat 64版本
点击下一步
b.选择虚拟机运行内存:
注意:如果此虚拟机上发布的服务较多,建议内存调大点
设置完了内存后下一步
c.创建虚拟机的虚拟硬盘:
后续步骤直接下一步即可,到最后
点击创建
选中创建的虚拟机并选择设置,选择桥接网卡
d.在Oracle VM VirtualBox界面上双击刚刚创建的虚拟机
选择镜像后启动虚拟机
e.进入启动界面后第一步直接回车
对虚拟机做一些初始设置 点击continue按钮
设置时区等信息,带感叹号的必须设置如上图的SYSTEM第一项为必选项
直接点击done按钮 回到主界面直接点击begin installation按钮
设置用户密码、设置root权限密码
最后点击Reboot按钮
f.root账号登录虚拟机
运行ip addr查看网卡
进入网卡配置界面 cd /etc/sysconfig/network-scripts/
编辑网卡信息:vim ifcfg-enp0s3(如果提示vim command not found 安装 yum -y install vim*)
保存后重启网络,执行命令:service network restart
检查虚拟机是否可以外网访问:ping www.baidu.com
至此,虚拟机已经配置完成
在配置好的虚拟机上安装docker,执行命令:yum install -y docker
将docker设置成开机自启动执行如下两个命令:
systemctl start docker.service
systemctl enable docker.service
输入命令:docker version 查看到了版本信息即为docker安装成功
Docker常用命令:
查看docker镜像:docker images
查看docker容器:docker ps(查询所有启动的容器)/docker ps -a(查看所有容器报错未启动的容器)
停止docker容器:docker stop 容器名称 | 容器id
删除docker容器:docker rm 容器名称 | 容器id
删除docker镜像:docker rmi 镜像名称 | 镜像id
进入docker容器:docker exec -it 容器名称 | 容器id /bin/bash
在安装docker服务的虚拟机上创建一个存放应用jar的文件夹
本人是在usr下创建了一个docker的文件夹:mkdir /usr/docker
将服务按照文件夹的形式 在docker下创建
已eureka服务为例,将DockerFile以及eureka达成的jar放到此文件夹中
Dockerfile属性详解:
- FROM:构建镜像基于哪个镜像
- MAINTAINER:镜像维护者姓名或邮箱地址
- RUN:构建镜像时运行的指令
- CMD:运行容器时执行的shell环境(docker run指定命令时,可以覆盖Dockerfile中的命令)
- VOLUME:指定容器挂载点到宿主机自动生成的目录或其他容器
- USER:为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户
- WORKDIR:为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录
- HEALTHCHECH:健康检查
- ARG:构建时指定的一些参数
- EXPOSE:声明容器的服务端口(仅仅是声明)
- ENV:设置容器环境变量
- ADD:拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压
- COPY:拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能
- ENTRYPOINT:运行容器时执行的shell命令 (不能被docker run指定的命令覆盖)
本机eureka服务Dockerfile内容:
在此文件种下执行 docker build -t eurekatest . 构建镜像
查看docker镜像:docker images
docker run -tid --net=host --name eurekaContainer eurekatest
eurekaContainer:容器名称
eurekatest:镜像名称
--net=host:共享宿主机ip(如果不加此属性,容器会自动分配一个局域网ip)
查看容器运行日志
docker logs -f eurekaContainer
eureka单节点在正式环境中,不可靠并不能满足实际生产需求。搭建高可用eureka集群更能确保系统的稳定。那么如何在多台虚拟机上构建高可用的eureka集群?本地启动三台虚拟机
三台虚拟机ip分别为:
192.168.1.110、192.168.1.111、192.168.1.112
分别在此三台服务上安装好docker
eureka配置三台之间互相注册,所谓互相注册如 此配置的eureka打包放至111虚拟机上,同理110机器上则向111、112注册,112亦然
分别启动三个节点上的eureka服务
上图显示三个服务已经成功注册
其他服务可以分别在各自的虚拟机上发布,只需要往三台eureka服务注册即可
注意:启动容器是一定要指明共享宿主机ip: docker run -tid --net=host --name 容器名称 镜像名称
下图网关服务的集群已经注册:
至此docker搭建微服务集群已经完成。但是在实际使用过程当中,容器数量太多给运维工作人员带来超负荷的工作量,那么有没有一种简单管理的docker容器的方式?
1.docker原生容器管理平台 Docker Swarm
2.kubernetes(k8s)
下次为您讲解通过Docker Swarm、k8s分别如何管理docker容器
代码下载地址:https://github.com/jiangyouwei1/parent.githttps://github.com/jiangyouwei1/parent.git