关于docker及环境配置
一、关于docker
二、docker安装
三、安装nacos
四、安装rabbitmq
五、关于容器打包镜像的迁移
一、关于docker
简介说明:docker官网.
镜像网站:docker hub
以上的关系有点像maven+mvnrepository的关系。这里为什么使用docker呢?一是在之前的单体应用开发时,只需要关注一个包,其中包含整个系统的服务,而在向分布式看齐后可能会出现N个包管理N个服务的情况发生;第二就是在开发环境的配置到实际的生产环境再去配置一遍真的会很烦!包括可能服务仅在内网部署不通外网的情况。docker让开发减少对环境的关注,这是目前考虑到使用docker的优点了,毕竟不能和专业运维相比。
二、docker安装
操作系统:CentOS 7.5
使用yum进行在线安装:
查看可安装版本: yum list docker
选择版本安装:yum install docker
启动docker:system start docker
开机启动:system enable docker
查看版本:docker version
这里就正常使用yum安装,如果没有docker或者安装失败检查一下yum源是不是没有替换成国内源。
三、安装nacos
目前公司的服务使用的是nacos来作为服务发现和配置中心,这里不多讲选型的问题。之前是直接安装的,之间出来一些问题,包括更换了jdk,虽然最后解决了,但是实际还是没有docker简单。
#1.查看可获取镜像版本
docker search nacos
#2.获取指定版本 此时1.3.1是最新稳定版
docker pull nacos:1.3.1
#或者 获取最新版本
docker pull nacos:latest
#3.查看镜像信息
docker images
到这一步就有一些问题需要来确定了,这里只能看到镜像大概的描述信息 实际还是在 docker hub 网站检索查看更详细信息。详细描述:nacos-server
nacos有集群和单例两种,默认是集群,但是这里是单机部署,并支持使用mysql作为存储。在数据库中创建一个配置库,执行最新的sql脚本:nacos-db
#4.启动运行容器 ("" + ENTER 就可以实现换行)
docker run -d
#指定单例
-e MODE=standalone
#调整jvm大小 根据服务器配置调整
-e JVM_XMS=256m -e JVM_XMX=512m
#对外服务Ip
-e NACOS_SERVER_IP=
#单例支持数据库配置
-e SPRING_DATASOURCE_PLATFORM=mysql
#mysql主机地址
-e MYSQL_SERVICE_HOST=
#mysql端口
-e MYSQL_SERVICE_PORT=
#mysql数据库名
-e MYSQL_SERVICE_DB_NAME=
#mysql用户
-e MYSQL_SERVICE_USER=
#mysql密码
-e MYSQL_SERVICE_PASSWORD=
#挂载创建的日志文档
-v /opt/nacos/logs:/home/nacos/logs
#镜像实例运行对外映射端口
-p 8848:8848
#设置启动镜像实例名称
–name nacos
#具体镜像名称或者IMAGE ID
docker.io/nacos/nacos-server
#5.查看运行的状态
docker ps -a
这里执行的运行语句中的参数具体参照上述链接中的解释,包括启动类型,其中命令含义可以参考这篇文章:docker run命令运行以及参数详解。其中注意一下服务器的配置,默认的大小比我使用的服务器内存大小要大,启动正常但会挂掉,因此jvm的大小我调小了。
四、安装rabbitmq
#1.查看可获取镜像
docker search rabbimq
#2.拉取镜像
docker pull rabbitmq:3.8.5-management
#3.启动运行容器
docker run -d
#指定主机名
–hostname myRabbitmq
#运行容器名
–name rabbitmq
#虚拟主机
-e RABBITMQ_DEFAULT_VHOST=my_vhost
#管理账号
-e RABBITMQ_DEFAULT_USER=rabbitmq
#管理密码
-e RABBITMQ_DEFAULT_PASS=rabbitmq
#程序使用端口
-p 5672:5672
#管理平台使用端口
-p 15672:15672
#镜像+版本
rabbitmq:3.8.5-management
#4.浏览器打开:http://ip:15672 进入管理平台
注意: 这里的版本3.8.5-management可能通过上述查找不到对应的版本,还是需要去 docker hub查找,选择带management版本是因为此版本是带web管理平台的。关于pull此类型版本可能会出现下述问题:
pull报错:error pulling image configuration: Get https://docker.mirrors.ustc.edu.cn/v2/library/rabbitmq/blobs/sha256:80cc4ea44b55686b968e8eec5e7719eb99b36a0096c3a9f3ab1023cd82474604: net/http: TLS handshake timeout
#执行下面命令,同步时间校准
ntpdate ntp1.aliyun.com
上述 ntpdate 报错: 4 Aug 15:51:15 ntpdate[17987]: the NTP socket is in use, exiting
#查看是否正在运行 存在则 kill -9 pid 杀掉进程 再执行ntpdate
ps -ef|grep xntpd
#不存在则执行下面命令 再kill -9 pid 杀掉进程 再执行ntpdate
pid:lsof -i:123
五、关于容器打包镜像的迁移
关于容器在服务器之间的迁移,这边做个拿 svn-server 简单描述:
1.容器打包成镜像
docker commit svn-server svn-server-test
2.镜像导出
docker save svn-server-test >svn-server-test.tar
或
docker save -o svn-server-test.tar svn-server-test
3.包将导入到指定服务器后,加载
docker load <svn-server-test.tar
或
docker load -i svn-server-test.tar
4.查看镜像
docker images
最后: 以上为使用docker搭建基本的环境的步骤,docker可以使我们不需要关注太多组件之间的依赖关系,在我看来很类似maven来管理依赖包,当然这样的使用应该日常不存在问题,本文也仅作为入门参考。有任何问题请评论提出,共同学习。