为什么要使用docker:
在项目部署时,由于各种原因,其它部门的人员在安装 jdk\mysql\redis\mq 等软件以及修改相关配置文件时很容易出错,研发人员需要写很多安装说明,费时费力而且效果也不好。所以打算直接把相关的软件都打包到镜像中,简化操作。
1、安装docker ( yum install docker ) 、配置国内镜像 略(win10环境)
启动docker 服务 : service docker start
在线拉取就不介绍了,以下是针对我们从docker官方拉取后导出的 .tar镜像,
镜像可从这里获取 https://hub.docker.com 。
镜像拉取速度慢,可以从这里获取加速器地址: https://www.daocloud.io/mirror
导出镜像:
docker save -o centos-mysql-57-centos7.tar centos/mysql-57-centos7
docker save -o mbentley-tomcat7.tar mbentley/tomcat7
docker save -o kilsoo75-redis-master.tar kilsoo75/redis-master
2、导入本地镜像 (把镜像复制到当前目录下)
2.1 数据库:(基于centos/mysql-57-centos7)
docker load -i centos-mysql-57-centos7.tar
或 docker load -i /e/centos-mysql-57-centos7.tar
2.2 web容器:(基于mbentley/tomcat7)
docker load -i mbentley-tomcat7.tar
2.3 redis容器:(基于kilsoo75/redis-master)
docker load -i kilsoo75-redis-master.tar
3、创建并启动容器
3.1 创建并启动mysql容器 (一定要把数据文件映射到本地硬盘,预先授权 chmod 777 /opt/data)
docker run -d --name mysql3306 -e MYSQL_USER=hly -e MYSQL_PASSWORD=hly@123 -e MYSQL_DATABASE=his3 -p 3306:3306 -v /e/data:/var/lib/mysql/data --privileged=true centos/mysql-57-centos7
执行完上面的语句应该无法正常启动容器,原因是对宿主机的目录没有写权限。需要先授权外挂的目录:
chmod 777 *
说明:参考 https://hub.docker.com/r/centos/mysql-57-centos7/
1)--name mysql3306 表示容器名称:mysql3306
2)-v /e/data:/var/lib/mysql/data 表示把windows E盘下data文件目录挂载为 mysql数据存放目录.
3) --privileged=true 给容器加特权,以避免Docker文件挂载因文件所属用户为mysql引起的权限问题。
如果启动后想进入容器可:docker exec -it mysql3306 /bin/sh
3.2 创建并启动tomcat容器(一定要把上传的数据文件映射到本也硬盘 chmod 777 /e/webapps)
docker run -d --name tomcat8080 -p 8080:8080 -v /e/webapps:/opt/tomcat/webapps -v /e/logs:/tomcat/logs --privileged=true mbentley/tomcat7
1)映射文件共享目录 webapps 用于发布web项目的war包、logs 查看历史日志
2)映射Tomcat端口
3.3 创建并启动redis服务器
docker run -d --name redis-master -e REDIS_PASSWORD=hly123 -e MASTER_PASSWORD=hly123 -p 6379:6379 --privileged=true kilsoo75/redis-master
如果启动后想进入容器可:docker exec -it tomcat8080 /bin/sh
其中用到的映射关键字如下
--name:容器名字
-d : 以守护进程方式运行(后台)
-p: 端口, 可以有多个-p
-v: 共享目录, 可以有多个-p
4、容器创建完成后,以后如果需要关闭和重启,只需要使用
docker stop <容器名> 、docker start <容器名> 、docker restart <容器名> 即可:
如:docker stop mysql3306
其它软件的安装和配置大同小异,配置完成后,直接固化到镜像导出,把导出的镜像和脚本文件复制给其它部门安装。
查询镜像:docker images
查询容器:docker ps -a
删除镜像:docker rmi <镜像name或ID>
删除容器:docker rm <容器name或ID>