疯狂创客圈: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,加入以下内容:
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
docker-compose version 1.17.1, build 6d101fb
国外的docker 镜像仓库太慢,必须切换成阿里云的
1:阿里云docker仓库 https://dev.aliyun.com/search.html
2:进去注册帐号后,点击自己的管理中心。
3:管理中心的内容太多,直接搜索:docker镜像加速器有很多的文章,介绍如何配置docker镜像加速器
关于加速器的地址,你只需要登录容器Hub服务的控制台,左侧的加速器帮助页面就会显示为你独立分配的加速地址。
需要创建自己的镜像仓库,界面如下:
成功后,可以使用阿里云的镜像了,阿里云里边进行了操作的指导:
$ sudo docker login --username=username registry.cn-hangzhou.aliyuncs.com
登录registry的用户名是您的阿里云账号全名,密码是您开通服务时设置的密码。
你可以在镜像管理首页点击右上角按钮修改docker login密码。
从registry中拉取镜像:
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/crazymakercircle/lib1:[镜像版本号]
$ 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的启动参数中。
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.spotifygroupId>
<artifactId>docker-maven-pluginartifactId>
<configuration>
<imageName>${project.name}:${project.version}imageName>
<dockerDirectory>${project.basedir}/src/main/dockerdockerDirectory>
<skipDockerBuild>falseskipDockerBuild>
<resources>
<resource>
<directory>${project.build.directory}directory>
<include>${project.build.finalName}.jarinclude>
resource>
resources>
configuration>
plugin>
第二:在各模块的src/main下面新建docker包,在src/main/docker下面新建Dockerfile与runboot.sh文件(文件内容因情况不同就不贴了),结构如下
接下来要想在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 发现自己的项目已经被编译成镜像了,可以启动容器运行镜像了,也相当于完成了项目的云部署