声明: 本章只作为记录 前端时间跑项目,发现每次都需要启动大量的中间件、在Windows 上启动特别麻烦 就想着写篇文章总结一下,把所有的 中间件全放服务器上启动 ,下次 直接复制黏贴命令就好了。
例如:
Redis
、MongoDB
、RabbitMQ
Consul
nginx
、Tomcat
下面是 命令
搜索
docker search mysql
查看所有镜像
docker images -a
docker run -p 3306:3306 --name mysql -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.7.19
-p 3306:3306
:将容器的 3306 端口映射到主机的 3306 端口。-v $PWD/conf:/etc/mysql/conf.d
:将主机当前目录下的conf/my.cnf
挂载到容器的/etc/mysql/my.cnf
。-v $PWD/data:/var/lib/mysql
:将主机当前目录下的data目录挂载到容器的 /var/lib/mysql
。-e MYSQL_ROOT_PASSWORD=root
:初始化 root 用户的密码。查看运行容器
docker ps
进入容器内容
docker run -it mysql /bin/bash
登录
mysql -u root -p
修改权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
这句话是很关键的一句话 ,清除缓存
flush privileges;
拉取 版本来源https://www.docker.elastic.co/#
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
ElasticSearch的默认端口是9200
,我们把宿主环境9200
端口映射到Docker容器中的9200
端口,就可以访问到Docker容器中的ElasticSearch服务了,同时我们把这个容器命名为es。
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
由于要进行配置,因此需要进入容器当中修改相应的配置信息。
docker exec -it es /bin/bash
进入操作
# 显示文件
ls
结果如下:
LICENSE.txt README.textile config lib modules
NOTICE.txt bin data logs plugins
# 进入配置文件夹
cd config
# 显示文件
ls
结果如下:
elasticsearch.keystore ingest-geoip log4j2.properties roles.yml users_roles
elasticsearch.yml jvm.options role_mapping.yml users
# 修改配置文件
vi elasticsearch.yml
# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
重新启动
由于修改了配置,因此需要重启ElasticSearch容器。
docker restart es
官网 : https://github.com/mobz/elasticsearch-head
ddocker pull mobz/elasticsearch-head:5
运行容器
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5
docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf
解释
> docker run redis # 从redis镜像运行容器
-p 6379:6379 # 映射本地6379端口到容器6379端口,前为本地端口
--name redis # 设置容器名称为redis,方便以后使用docker ps进行管理
-v /docker/redis/redis.conf:/etc/redis/redis.conf # 关联本地/docker/redis/redis.conf文件到容器中/etc/redis/redis.conf,同样,前为本地
-v /docker/redis/data:/data # 关联本地/docker/redis/data到容器内/data目录,此为存放redis数据的目录,为方便以后升级redis,而数据可以留存
-d # 后台启动,使用此方式启动,则redis.conf中daemonize必须设置为no,否则会无法启动
redis-server /etc/redis/redis.conf # 在容器内启动redis-server的命令,主要是为了加载配置
docker run --name redis_zl -p 6379:6379 -d redis --requirepass "密码"
docker pull rabbitmq:management
运行
docker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
–hostname:指定容器主机名称
–name:指定容器名称
-p:将mq端口号映射到本地
备选启动同时设置用户和密码
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management
15672:控制台端口号
5672:应用访问端口号
提醒,如果关闭计算机时未停止这个启动的容器,再次启动docker时会出现无法访问15672的情况,此时只需停止并移除这个容器,然后重启一次docker,重新执行启动rabbitmq容器的命令即可。
docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
启动zookeeper
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
docker run -d --name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=172.16.65.243:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.65.243:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
docker pull nginx
docker images | grep nginx
docker run --name nginx -p 80:80 -d nginx
docker exec -it nginx bash
sudo docker pull mongo
sudo docker run --name some-mongo -p 27017:27017 -d mongo --auth
docker exec -it some-mongo bash
mongo
use admin
添加用户和权限
db.createUser({ user: "root", pwd: "root", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
docker images #查看所有镜像
docker image tomcat:7 #查看REPOSITORY为tomcat:7的镜像
docker run -d --name tomcat -p 8081:8080 tomcat:7