微服务 Spring Cloud 与 docker 联合使用,并且Maven部署到远程linux服务器

疯狂创客圈:spring boot 、spring cloud 架构交流。入圈学习交流请加QQ群,大家一起学习、交流、成长

入QQ群交流,请点击链接:疯狂创客圈QQ群


一 在linux服务器装docker

这里不建议使用#yum install docker方式安装,因为这种方式安装的版本比较旧,而且在配置远程api时要好多错误,建议使用方式#yum install docker-engine,


1.首先docker需要linux内核版本3.0以上,centos6版本需要升级内核,查看内核版本命令为uname -a ,uname -r


2.然后更新下yum ,命令为 yum update -y


3.添加docker的yum源命令行输入: 
tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=http://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=http://yum.dockerproject.org/gpg
EOF

4. 安装docker包 :

# yum install docker-engine


到这一步都进展顺利,接下来开始通过yum安装docker-engine了。想不到的事情发生了。。。


5  gpg 验证错误

然而突然出现一个docker安装的gpg 验证错误: 

warning: /var/cache/yum/x86_64/7/dockerrepo/packages/docker-engine-selinux-1.10.3-1.el7.centos.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY
Retrieving key from https://yum.dockerproject.org/gpg
 

GPG key retrieval failed: [Errno 12] Timeout on https://yum.dockerproject.org/gpg: (28, 'Resolving timed out after 3512 milliseconds')

解决办法是:

# rpm -import http://yum.dockerproject.org/gpg

导入gpg文件,ok,非常简单, 搞定

Gpgkey
开启gpgcheck后,通过gpgkey来指定,相应的gpg文件
如果不指定gpgkey文件,那么就必须手动的导入相应的gpg文件,
Rpm --import http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5
必须手动的敲入这条命令。


RHEL发行版安装好后会将相应的gpgkey放在/etc/pki/rpm-gpg目录下面。
Yum仓库中每一行参数都已经介绍完毕了



6  .启动服务 service docker start


7  #docker version命令即可验证是否安装成功,


8 开机时启动dockr

[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. 


如果需要开机启动其他的引用,需要依赖java环境,

修改开机启动的文件#  vim /etc/rc.local,加入以下内容:


/etc/init.d/ssh start
# set java class path
export JAVA_HOME= /usr/local/jdk1.8.0_111/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:${CLASSPATH}
export PATH=${JAVA_HOME}/bin:${PATH}
/bin/bash
touch /var/lock/subsys/local
exit 0

9  安装完成以后需要关闭selinux

vi /etc/selinux/config

将SELINUX修改为disabled,将SELINUX=enforcing改为SELINUX=disabled,重启机器

注意:如果不关闭selinux在运行容器时,可能会出现没有权限


10 和查看状态

启动服务:   systemctl start docker 

查看守护进程的状态: systemctl status docker.service -l

docker 镜像列表:docker   ps 


11  运行docker的hello world

第一步:下载hello world的docker img
 # docker pull hello-world
docker有一个公共的img仓库,执行docker pull默认会在这个公共库里去下载对应的img,类似maven一样,maven的respository里有很多jar包。

第二步:运行下载到本地的hello world docker img
 #  docker run hello-world

12 安装 docker-compose

Docker-Compose是一个部署多个容器的简单但是非常必要的工具.

安装Docker-Compose之前,请先安装 python-pip
安装 python-pip
1、首先检查linux有没有安装python-pip包,终端执行 pip -V
# pip -V
-bash: pip: command not found
2、没有python-pip包就执行命令 yum -y install epel-release
# yum -y install epel-release
3、执行成功之后,再次执行yum -y install python-pip
# yum install python-pip
4、对安装好的pip进行升级 pip install --upgrade pip
# pip install --upgrade pip
5 安装Docker-Compose
5.1.终端执行:pip install docker-compose
5.2检查docker-compose 安装:docker-compose -version
# docker-compose -version

docker-compose version 1.17.1, build 6d101fb


二  docker使用阿里云镜像仓库 与  镜像加速

2.1 注册阿里云镜像仓库

国外的docker 镜像仓库太慢,必须切换成阿里云的

1:阿里云docker仓库 https://dev.aliyun.com/search.html

2:进去注册帐号后,点击自己的管理中心。

3:管理中心的内容太多,直接搜索:docker镜像加速器

  有很多的文章,介绍如何配置docker镜像加速器

  关于加速器的地址,你只需要登录容器Hub服务的控制台,左侧的加速器帮助页面就会显示为你独立分配的加速地址。

  需要创建自己的镜像仓库,界面如下:



成功后,可以使用阿里云的镜像了,阿里云里边进行了操作的指导:

登录阿里云docker registry:

  $ sudo docker login --username=username  registry.cn-hangzhou.aliyuncs.com


登录registry的用户名是您的阿里云账号全名,密码是您开通服务时设置的密码。

你可以在镜像管理首页点击右上角按钮修改docker login密码。


从registry中拉取镜像:

  $ sudo docker pull registry.cn-hangzhou.aliyuncs.com/crazymakercircle/lib1:[镜像版本号]

将镜像推送到registry:

  $ sudo docker login --username=username  registry.cn-hangzhou.aliyuncs.com
  $ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/crazymakercircle/lib1:[镜像版本号]
  $ sudo docker push registry.cn-hangzhou.aliyuncs.com/crazymakercircle/lib1:[镜像版本号]

其中[ImageId],[镜像版本号]请你根据自己的镜像信息进行填写。

上面的 crazymakercircle 命名空间和lib1 仓库名称,需要根据实际情况修改


2.2 配置docker的阿里云镜像加速

在阿里云的管理界面,可以找到镜像加速器的地址


可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中。

2.2.1 对于 CentOS 7 以上,Docker 1.9 以上用户 ,如下配置( 已经过时了)

sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service

sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=https://ydfq16y8.mirror.aliyuncs.com|g" /etc/systemd/system/docker.service

sudo systemctl daemon-reload

sudo service docker restart


2.2.2   针对Docker客户端版本大于 1.10.0的用户,如下配置 (一般都是按照这种方式配置)

  • 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://ydfq16y8.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker


在正式开始前,固定一下虚拟机的ip

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.0.100
NETMASK=255.255.255.0
GETWAY=192.168.0.1
BOOTPROTO=static
ONBOOT=yes
DEVICE=eth0

三:idea开发一个模块化的maven项目


在win10中使用idea开发一个模块化的maven项目,然后想要把该项目直接编译到远程linux服务器的docker中,具体做法如下:

第一:在各模块中的pom文件中加入以下

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <configuration>
        <imageName>${project.name}:${project.version}</imageName>
        <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
        <skipDockerBuild>false</skipDockerBuild>
        <resources>
            <resource>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

       第二:在各模块的src/main下面新建docker包,在src/main/docker下面新建Dockerfile与runboot.sh文件(文件内容因情况不同就不贴了),结构如下



远程连接docker

接下来要想在windows中操作远程linux中的docker,那前提是必须开启docker远程API

1  修改docker配置文件

#vi /usr/lib/systemd/system/docker.service   ,进入编辑模式后,将ExecStart这一行后面加上 :

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,改完后如下所示

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock  ,

这里就写4个0,你可别改成自己的ip哦,保存后退出。

重新加载配置文件#systemctl daemon-reload   ,启动docker:  #systemctl start docker  ,

输入#netstat -anp|grep 2375 显示docker正在监听2375端口,输入#curl 127.0.0.1:2375/info  显示一大堆信息,证明远程api就弄好了


第四:在windows系统环境变量中新建DOCKER_HOST,值为tcp://10.100.74.220:2375,(你改成你自己的docker服务器ip地址)


       第五步:打开dos窗口,即cmd命令行,进入到你要编译的项目文件夹下,

输入mvn clean package docker:build -DskipTests ,然后慢慢等待,直到最后build成功


       第六步:登陆linux,输入#docker images 发现自己的项目已经被编译成镜像了,可以启动容器运行镜像了,也相当于完成了项目的云部署

猜你喜欢

转载自blog.csdn.net/crazymakercircle/article/details/80208621