Docker上部署微服务
网上查找了很多资料,没有详细的教程,所以自己通过资料总结一下,微服务部署是分别将每个微服务部署在docker上
1、环境搭建
1.1 centos安装docker
-
1、检查centos内核版本,内核版本必须在3.10以上才行
uname -r
-
2、使用root权限登录centos,确保yum包更新到最新
yum -y update
-
3、卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
-
4、安装需要的软件包,yum-utils 提供yum-config-manage功能,另外两个是device-mapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
-
5、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
6、可以查看所有仓库中的docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
-
7、安装docker
sudo yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是稳定版18.03.1
-
8、启动并加入开机启动
systemctl start docker systemctl enable docker
-
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version #看到docker版本即为安装成功
1.2 配置阿里镜像加速
-
注册账号(免费)
网址:https://cr.console.aliyun.com/cn-hangzhou/mirrors
按照上面的第二步提示进行配置即可,
sudo mkdir -p /etc/docker
#下面这几行需要一起copy
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://dhe9work.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2、Docker镜像相关命令
docker images #查看images中全部镜像
docker search java #搜索镜像,搜索结果和在docker hub中搜索的结果相同
docker pull java:8 #下载镜像文件到本地仓库images
docker rmi --imageid #删除镜像
docker run -d -p 81:80 nginx #81暴露给主机,80是宿主机(容器)的端口;-d表示后台运行
运行完上面这条命令之后,去访问(centosIP:81)就会出现下面的欢迎页面
docker ps #查看当前运行的容器
-
如果想要访问容器内部,可以按照如下操作
#1、先查看容器的id #2、输入下面的命令 docker inspect 231d40e811cd
3、将springboot项目部署到docker
3.1 构建自己的docker镜像
-
将jar包上传到linux服务器/user/local/dockerapp目录,在jar包所在目录创建名为Dockerfile的文件
cd .. cd /usr/local mkdir dockerapp #使用filezilla将jar包上传到这个目录下
-
在Dockerfile中添加以下内容
### 指定java8环境镜像 FROM java:8 ### 复制文件到容器app-springboot ADD eurekaserver.jar /app-eurekaserver.jar ### 声明启动端口 EXPOSE 8761 ### 配置容器启动后执行的命令 ENTRYPOINT ["java","-jar","/app-eurekaserver.jar"]
-
使用docker build 命令构建镜像
docker build -t app-eurekaserver . # 格式:docker build -t 镜像名称:标签 Dockerfile的相对位置
-
启动容器
docker run -p 8761:8761 app-eurekaserver
-
然后访问 ip:port 即可看到eurekaserver的界面
4、docker卸载镜像文件
# 先删除容器,后删除镜像
#1、查询容器(没有a表示运行的容器)
docker ps -a
#2、使用容器id删除容器
docker rm 544840513f26
#3、查看镜像
docker images
#4、使用镜像id删除镜像
docker rmi 6cd8bcc98bf3
-
重启命令
systemctl restart docker#重启docker
-
关闭linux防火墙命令(这样使用windows就可以访问linux)
systemctl stop firewalld
5、通过negix配置负载均衡
-
镜像一般默认安装在容器id/ect的目录下
-
容器管理
#进入到容器 docker container exec -it [id] /bin/bash #默认情况下软件安装在目录的/etc目录下 #退出到宿主机 exit
-
linux挂载(使用挂载方式,外部的配置文件覆盖内部容器配置文件)
Docker 安装的软件来修改配置文件
docker run [name] -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx -d docker.io/nginx #/data/nginx/conf/nginx.conf表示宿主机目录 #/etc/nginx/nginx.conf 容器内的目录
6、nginx配置负载均衡
-
安装nginx
-
下载Nginx镜像文件
docker pull nginx docker images
-
创建挂载目录
mkdir -p /data/nginx/{conf,conf_d,html,logs}
-
编写Nginx配置文件
-
启动容器
docker run [name] -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx -d docker.io/nginx #执行完这步之后就已经将配置文件同步到容器内部了
-
查看容器
docker ps
-
7、mysql安装
-
查询mysql版本
docker search mysql
-
下载MYSQL5.7版本
docker pull mysql:5.7
-
等待下载完成,创建mysql容器
docker create --name mysql3306 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.7 #创建的容器名称为mysql3306 #密码为123456
-
启动容器
docker start mysql3306
-
进入到容器
docker exec -it mysql3306 bash
-
mysql连接
mysql -uroot -p
安装完成之后就可以通过navicate等工具进行数据库的读写,或者直接通过上面的命令进入到mysql容器内部进行读写