目录

1.本地虚拟机创建 

        1.1工具准备

                        1.2虚拟机创建

2.虚拟机安装Docker服务

3.Docker部署微服务集群


1.1工具准备

Linux镜像准备:

        镜像版本:CentOS-7-x86

        虚拟机镜像下载:

                链接:https://pan.baidu.com/s/1pEnmonwXGNiFU3zKshGgOA 
                提取码:12f2 

Oracle VM VirtualBox:

        链接:https://pan.baidu.com/s/1igzEuMF0f2A_d2IKZo1Gjg 
        提取码:r21m 

1.2虚拟机创建:

a.打开Oracle VM VirtualBox应用

desktop docker 新建虚拟机 虚拟机部署docker_Docker

 名称:虚拟机名称

文件夹:为虚拟机存放在本机的地址

类型:选择Linux

版本:linux镜像为64bit,本人本机选择的是RedHat 64版本

点击下一步

b.选择虚拟机运行内存:

desktop docker 新建虚拟机 虚拟机部署docker_docker_02

 注意:如果此虚拟机上发布的服务较多,建议内存调大点

设置完了内存后下一步

c.创建虚拟机的虚拟硬盘:

desktop docker 新建虚拟机 虚拟机部署docker_docker_03

后续步骤直接下一步即可,到最后

desktop docker 新建虚拟机 虚拟机部署docker_Docker_04

 点击创建

选中创建的虚拟机并选择设置,选择桥接网卡

desktop docker 新建虚拟机 虚拟机部署docker_vim_05

 d.在Oracle VM VirtualBox界面上双击刚刚创建的虚拟机

desktop docker 新建虚拟机 虚拟机部署docker_spring cloud_06

  选择镜像后启动虚拟机

e.进入启动界面后第一步直接回车

desktop docker 新建虚拟机 虚拟机部署docker_vim_07

 对虚拟机做一些初始设置 点击continue按钮

desktop docker 新建虚拟机 虚拟机部署docker_Docker_08

设置时区等信息,带感叹号的必须设置如上图的SYSTEM第一项为必选项

desktop docker 新建虚拟机 虚拟机部署docker_spring cloud_09

 直接点击done按钮 回到主界面直接点击begin installation按钮

desktop docker 新建虚拟机 虚拟机部署docker_Docker_10

设置用户密码、设置root权限密码 

desktop docker 新建虚拟机 虚拟机部署docker_spring cloud_11

 最后点击Reboot按钮

f.root账号登录虚拟机

desktop docker 新建虚拟机 虚拟机部署docker_spring cloud_12

 运行ip addr查看网卡

进入网卡配置界面 cd /etc/sysconfig/network-scripts/

desktop docker 新建虚拟机 虚拟机部署docker_spring cloud_13

编辑网卡信息:vim ifcfg-enp0s3(如果提示vim command not found 安装 yum -y install vim*)

desktop docker 新建虚拟机 虚拟机部署docker_spring cloud_14

保存后重启网络,执行命令:service network restart 

检查虚拟机是否可以外网访问:ping www.baidu.com

 至此,虚拟机已经配置完成

2.虚拟机安装Docker服务

在配置好的虚拟机上安装docker,执行命令:yum install -y docker

将docker设置成开机自启动执行如下两个命令:

         systemctl start docker.service

         systemctl enable docker.service

desktop docker 新建虚拟机 虚拟机部署docker_vim_15

输入命令: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

3.Docker部署微服务集群

        在安装docker服务的虚拟机上创建一个存放应用jar的文件夹

本人是在usr下创建了一个docker的文件夹:mkdir /usr/docker

将服务按照文件夹的形式 在docker下创建

desktop docker 新建虚拟机 虚拟机部署docker_docker_16

已eureka服务为例,将DockerFile以及eureka达成的jar放到此文件夹中

desktop docker 新建虚拟机 虚拟机部署docker_Docker_17

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内容:

desktop docker 新建虚拟机 虚拟机部署docker_spring cloud_18

在此文件种下执行 docker build -t eurekatest .  构建镜像

desktop docker 新建虚拟机 虚拟机部署docker_vim_19

查看docker镜像:docker images

desktop docker 新建虚拟机 虚拟机部署docker_docker_20

 在构建的镜像上运行容器:

docker run -tid --net=host --name eurekaContainer eurekatest

eurekaContainer:容器名称

eurekatest:镜像名称

--net=host:共享宿主机ip(如果不加此属性,容器会自动分配一个局域网ip)

 

desktop docker 新建虚拟机 虚拟机部署docker_docker_21

 查看容器运行日志

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亦然

desktop docker 新建虚拟机 虚拟机部署docker_Docker_22

 分别启动三个节点上的eureka服务

 

desktop docker 新建虚拟机 虚拟机部署docker_docker_23

上图显示三个服务已经成功注册

其他服务可以分别在各自的虚拟机上发布,只需要往三台eureka服务注册即可

注意:启动容器是一定要指明共享宿主机ip: docker run -tid --net=host --name 容器名称 镜像名称

desktop docker 新建虚拟机 虚拟机部署docker_vim_24

 下图网关服务的集群已经注册:

desktop docker 新建虚拟机 虚拟机部署docker_spring cloud_25

 至此docker搭建微服务集群已经完成。但是在实际使用过程当中,容器数量太多给运维工作人员带来超负荷的工作量,那么有没有一种简单管理的docker容器的方式?

1.docker原生容器管理平台 Docker Swarm

2.kubernetes(k8s)

下次为您讲解通过Docker Swarm、k8s分别如何管理docker容器