1、使用linux虚拟机离线安装docker
(1) 登录docker官网安装教程 https://docs.docker.com/installation/ 查看,里边有在线安装和离线安装。离线安装的话需要在指定网站下载deb安装包。本次使用 docker-ce_17.12.0_ce-0_ubuntu_amd64.deb安装包,下载地址为https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/。
(2)将安装包拷贝到本地linux虚拟机中,使用dpkg -i xxx.deb命令安装。这里有个问题,docker有一些依赖包,需要一并安装:
下载依赖deb。
网址:https://pkgs.org/
搜索:libltdl7
下载deb:libltdl7_2.4.6-0.1_amd64.deb
搜索:libgcrypt20
下载deb:libgcrypt20_1.6.5-2_amd64.deb
搜索:libsystemd-journal0
下载deb:libsystemd-journal0_215-17+deb8u7_amd64.deb
以上三个deb文件和docker安装包一起安装。将四个deb文件拷贝到一个目录中,执行dpkg -i *.deb命令
(3)敲命令docker -v 命令确认是否安装成功
2、开启远程访问/搭建java编译环境
如果开发环境是windows,为了在windows机器上能访问docker进行相关操作,这里需要在linux上开放一个端口并启用远程访问
(1)我们修改/etc/default/docker,然后重启docker服务即可。
现在本地和远程均可通过2375端口访问docker进程了。
(2)windows机器上配置环境变量DOCKER_HOST
以上操作不一定能成功,原因不明。
建议在linux环境下编译jar包,所以需要在linux下安装jdk、maven并配置环境变量和maven仓库。如果虚拟机不能连接大网,还需要借助Nginx做一个代理。
(1)安装JDK
(2)安装Maven
(3)配置maven仓库,如果虚拟机不能连接大网,则需要先安装Nginx,配置使用与虚拟机连通的能连大网的机器代理外部镜像源。
3、打开项目(eureka-server微服务)路径,在main文件夹下添加docker文件夹,添加dockerfile
注意:ADD那一行的jar包名称和版本号要与pom中的artifactId和version一致
4、修改pom加入编译插件
5、修改application.yml
6、从dockerfile中可以看到,打包依赖
这个镜像,所以,在打包之前我们需要先在liunx虚拟机中添加该镜像,如何添加呢,咱们的linux虚拟机连不上外网docker-hub,解决方法如下:
(1)找一个能连接到外网的linux虚拟机(比如说绿区虚拟机、阿里云的云主机等),安装docker,配置镜像加速器,加快访问docker-hub的速度:
(2)使用docker pull frolvlad/alpine-oraclejdk8:slim下载镜像
(3)使用docker save -o alpine-oraclejdk8_slim.tar frolvlad/alpine-oraclejdk8:slim将镜像打成tar包,传到离线linux虚拟机中
(4)使用docker load --input alpine-oraclejdk8_slim.tar载入镜像,输入docker images命令查看镜像是不是载入成功。
7、执行打包命令:
(1)cmd到微服务pom.xml所在目录
(2)输入命令:mvn clean
(3)输入命令: mvn package docker:build
进入target->docker目录,将生成的jar包拷贝到linux虚拟机中。
8、将该镜像跑起来:
linux虚拟机中执行命令:
docker run --name microservice-discovery-eureka -p 8761:8761 -v $PWD/microservice-discovery-eureka-0.0.1-SNAPSHOT.jar:/app.jar -d mambo/microservice-discovery-eureka
docker run --name eureka-client --link microservice-discovery-eureka:microservice-discovery-eureka -p 8762:8762 -v $PWD/microservice-discovery-eureka-0.0.1-SNAPSHOT.jar:/app.jar -d mambo/microservice-discovery-eureka
执行docker images和docker ps -a可以看到镜像已经装好而且容器已经运行。
9、访问下172.27.28.134(宿主机IP):8761试试:
OK
微信不允许插入外部链接,为了方便找到链接,请查看原文。这篇排版比较乱,请谅解。