spring boot / cloud (十八) 使用docker快速搭建本地环境
在平时的开发中工作中,环境的搭建其实一直都是一个很麻烦的事情
特别是现在,系统越来越复杂,所需要连接的一些中间件也越来越多.
然而要顺利的安装好这些中间件也是一个比较费时费力的工作.
俗话说"工欲善其事,必先利其器",这篇文章,就跟大家一起分享一下使用docker在本地环境或者测试环境快速搭建我们常用的一些中间件容器的方法,
(这里没有提及生产环境,并不是说生产环境不能使用docker,只是说要在生产环境上使用,请务必根据自身的实际情况,做好充分的评估)
docker安装
docker支持多种操作系统,本文的内容则是基于centos7操作系统的
docker的文档写的很清晰,大家可以在
https://docs.docker.com/engine/installation/linux/docker-ce/centos/
站点中按照文档的步骤一步一步的安装docker , 假如一切正常 , 大家在命令行输入version , 会得到如下结果 :
$ sudo docker version
# 结果输出 :
Client:
Version: 17.09.0-ce-rc2
API version: 1.32
Go version: go1.8.3
Git commit: 363a3e7
Built: Thu Sep 14 01:54:43 2017
OS/Arch: linux/amd64
Server:
Version: 17.09.0-ce-rc2
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: 363a3e7
Built: Thu Sep 14 01:56:05 2017
OS/Arch: linux/amd64
Experimental: false
常用的docker的基本命令
docker images : 列出当前docker所有的镜像
docker ps -a : 列出当前docker正在运行中的容器 , 去掉-a , 则列出所有的容器
docker rmi {镜像ID} : 删除docker镜像 , 追加-f指令 , 则为强制删除镜像 (删除镜像后,关联此镜像的容器也会被删除)
docker rm {容器ID/容器名称} : 删除容器 , 追加-f指令 , 则为强制删除容器
docker run XXXX : 运行容器 , 本文后续会对run命令的相关指令做详细解释
docker stop {容器ID/容器名称} : 停止容器
docker start {容器ID/容器名称} : 启动容器
docker stats : 查看docker所有容器的运行状态
docker log {容器ID/容器名称} : 查看容器的运行日志
docker cp {容器ID/容器名称}:{容器路径} {宿主机路径} : 从容器中拷贝文件到宿主机
docker exec -it {容器ID/容器名称} /bin/bash : 进入指定容器进行操作 , 使用exit退出
docker的命令还有很多 , 大家可以在 :
https://docs.docker.com/reference/
站点中找到其他命令的文档
docker run 命令的主要参数
一般情况,我们使用run命令来创建一个容器 , 此命令的主要格式如下 :
docker run {指令/参数} {registry地址}/{组织名称}/{镜像名称}:{版本}
docker镜像的唯一标识
{registry地址}/{组织名称}/{镜像名称}:{版本} 这一串内容组成了一个docker镜像唯一的标识 , 具体值可能是这样的 :
wjrfy32i.mirror.aliyuncs.com/library/nginx:latest
以上字符串描述了阿里云的nginx镜像,然后是latest版本 (指的是最新版本)
docker run命令的常用指令
-d : 容器后台启动
-it : 容器交互式启动
-p {宿主机端口}:{容器端口} : 指定宿主机和容器端口的映射关系 , 可以多个
--name {容器名称} : 指定容器的名字
-v {宿主机目录}:{容器目录} : 将宿主机文件目录映射到容器的文件目录中 , 可以多个
--restart=always : 指定容器永远随docker服务启动
--hostname {容器hostname} : 指定容器的hostname
--link={容器名称}:{hostname} : 将其他容器加入当前容器的hosts文件中,并且指定其访问的hostname , 可以多个
**其他指令
创建mysql容器
准备
$ sudo mkdir /var/lib/mysql && chown -R 200 /var/lib/mysql
以上命令创建了一个目录,用于存放mysql数据库文件
创建
$ sudo docker run \
-d \
--restart=always \
-p 3306:3306 \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/mysql:/var/lib/mysql \
--name mysql \
-e MYSQL_ROOT_PASSWORD=XXX \
wjrfy32i.mirror.aliyuncs.com/library/mysql:latest
其中-e MYSQL_ROOT_PASSWORD=XXX指定了mysql数据库的root密码
创建rabbitmq容器
准备
$ sudo mkdir /var/lib/rabbitmq && chown -R 200 /var/lib/rabbitmq
$ sudo mkdir /var/log/rabbitmq && chown -R 200 /var/log/rabbitmq
以上命令创建了用于存放rabbitmq数据文件和日志文件的路径
创建
$ sudo docker run \
-d \
--restart=always \
--hostname rabbitmq \
--name rabbitmq \
-p 15672:15672 \
-p 5672:5672 \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/rabbitmq:/var/lib/rabbitmq \
-v /var/log/rabbitmq:/var/log/rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=xxx \
wjrfy32i.mirror.aliyuncs.com/library/rabbitmq:3.6.10-management-alpine
其中-e RABBITMQ_DEFAULT_USER和-e RABBITMQ_DEFAULT_PASS用于指定rabbitmq控制台管理员的账户和密码