1、准备docker环境:
# yum -y install docker
# docker ps
@如果有输出
CONTAINER ID IMAGE COMMAND CREATED PORTS
证明已经安装完毕。
2、部署外网环境
2.1、搜索rabbitmq镜像:
#docker search rabbitmq
2.2、下载rabbitmq镜像,选择一个有web管理和MQTT镜像
#docker pull letsxo/rabbitmq
2.3、查看镜像文件
#docker images
2.4、创建容器
#docker run -d -p 5671:5671 -p 5672:5672 -p 15672:15672 -p 15671:15671 -p 25672:25672 -v /data/rabbitmq-data/:/var/rabbitmq/lib --name rabbitmq letsxo/rabbitmq
命令注释:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
-net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
-v 文件卷映射(主机(宿主)文件夹路径:容器文件夹路径)
2.5、查看已经运行的容器
#docker ps
2.6、web管理:通过访问本机的15672端口访问web管理端:http://本机ip:15672
3、部署内网机器
3.1、首先需要下载,rabbitmq的镜像,一是在网上直接下载(太慢了);二是直接找一台能上外网带docker环境的机器,使用docker pull下载。
# docker search rabbitmq
# docker pull letsxo/rabbitmq
# docker images
letsxo/rabbitmq latest 93a7eefb0865 2 weeks ago 38.6MB
# docker save 93a7eefb0865 > rabbitmq.tar
3.2、将rabbitmq.tar拷贝到内网服务器:
# scp –P port rabbitmq.tar user@ip:path
如果是默认的22端口,-P就不用了。
在内网服务器上将拷贝来的rabbitmq.tar文件导入为镜像:
# docker load < rabbitmq.tar
3.3、打标签:
# docker tag 93a7eefb0865 rabbitmq:cuishuai
3.4、创建并运行容器:
# docker run -d -p 5671:5671 -p 5672:5672 -p 15672:15672 -p 15671:15671 -p 25672:25672 -v /data/rabbitmq-data/:/var/rabbitmq/lib --name rabbitmq 93a7eefb0865
4、 Web端配置rabbitmq:
4.1、rabbitmq默认创建了guest/guest用户,使用此用户不安全。需要修改密码,及创建新的用户。
1)登陆后你如图所示的步骤进行操作来添加新用户:
2)修改密码:
修改密码和权限按1->2->3来完成;4是用来删除用户的。
3)创建vhost,按如图1->2->3->4来完成:
将创建的vhost应用到用户,在首页的用户名上单击用户名进入如图所示的界面:
4)创建policy
注:
rabbitmq的数据库名称规则是,NODENAME@hostname,Docker每次从Docker image启动容器的时候会自动生成hostname,这样一来,你保存在主机上的数据库就会没用了,包括之前创建的用户也会没有了。所以在创建容器的时候必须指定--hostname=rabbitmqhostone,这样docker环境启动后rabbitmq就会一直读取固定目录中的数据了
1、搜索redis镜像
#docker search redis
2、下载redis镜像
#docker pull redis
3、创建redis容器
原有命令
#docker run -d -p 6379:6379 -v $PWD/data:/data --name myredis redis redis-server --appendonly yes
修改后命令
#docker run -d -p 6379:6379 -v E:/mywork/docker/redis_data:/data --name myredis -h redis1 redis redis-server --appendonly yes
命令说明:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
4、查看容器启动情况
#docker ps
5、连接、查看容器
三、docker安装mysql
1、查看镜像
#docker search mysql
2、下载镜像
#docker pull mysql:5.6.35
3、创建mysql容器
原有命令
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.35
修改后命令
docker run -d -p 3306:3306 --name mymysql -v E:/mywork/docker/mysql_data/conf:/etc/mysql/conf.d -v E:/mywork/docker/mysql_data/logs:/logs -v E:/mywork/docker/mysql_data/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.35 -h mysql1
命令说明:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
4、查看容器启动情况
#docker ps
1、搜索nginx
#docker search nginx
2、下载nginx镜像
#docker pull nginx
3、创建nginx容器
#docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
命令说明:
-p 80:80:将容器的80端口映射到主机的80端口
--name mynginx:将容器命名为mynginx
-v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf
-v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs
4、查看容器启动情况
#docker ps
五、docker不能使用vim怎么破
这很简单,两条命令,
1.apt-get update
2.apt-get install vim
只不过,在执行第一条命令的时候,会失败,因为默认的下载的地址是海外的,会网速慢或者下载失败,所以我们移步国内镜像源(以下代码复制到你的命令行下):
mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo “deb http://mirrors.163.com/debian/ jessie main non-free contrib” >> /etc/apt/sources.list
echo “deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib” >>/etc/apt/sources.list
echo “deb-src http://mirrors.163.com/debian/ jessie main non-free contrib” >>/etc/apt/sources.list
echo “deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib” >>/etc/apt/sources.list
#更新安装源
apt-get update
然后在执行第二条命令就可以了QAQ!