Docker 安装

1. 卸载旧版本

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

2. 安装基础依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

3. 配置 docker yum 源

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4. 安装并启动 docker

yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io
systemctl enable docker
systemctl start docker

5. 查看 docker 版本

docker --version

6. 配置 docker 加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://t1gbabbr.mirror.aliyuncs.com"]
}
EOF

7. 设置开机自启动

sudo systemctl daemon-reload
sudo systemctl restart docker

Docker-Compose 安装

1. 安装

sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. 查看版本

docker-compose --version

Docker 部署 Nginx

1. 拉取镜像

docker pull nginx:1.20

2. 运行容器

docker run --name nginx -d -p 80:80 nginx:1.20

3. 进入容器内部

docker exec -it nginx bash

4. 拷贝配置文件

docker cp nginx:/etc/nginx /data/software/docker/nginx/

5. 配置文件

nginx.conf

user  nginx;
worker_processes auto; error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid; events {
worker_connections 1024;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;
}

6. 数据卷挂载

docker run --name nginx -v /data/software/docker/nginx/conf:/etc/nginx -v /data/software/docker/nginx/data:/usr/share/nginx -v /data/software/docker/nginx/log:/var/log/nginx -p 80:80 -d nginx:1.20

命令说明:

  • 挂载配置文件

    -v /data/software/docker/nginx/conf:/etc/nginx
  • 挂载数据

    -v /data/software/docker/nginx/data:/usr/share/nginx
  • 挂载日志文件

    -v /data/software/docker/nginx/log:/var/log/nginx

Docker 部署 MySQL

1. 拉取镜像

docker pull mysql:5.7

2. 运行容器

docker run --name mysql -d -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

3. 进入容器内部

docker exec -it mysql bash

4. 拷贝配置文件

docker cp mysql:/etc/mysql/mysql.conf.d /data/software/docker/mysql/conf/

5. 配置文件

mysqld.cnf

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
bind-address = 0.0.0.0
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

6. 数据卷挂载

docker run --name mysql -d -v /data/software/docker/mysql/conf:/etc/mysql/conf.d -v /data/software/docker/mysql/data:/var/lib/mysql -v /data/software/docker/mysql/log:/var/log/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

命令说明:

  • 挂载配置文件

    -v /data/software/docker/mysql/conf:/etc/mysql/conf.d
  • 挂载数据

    -v /data/software/docker/mysql/data:/var/lib/mysql
  • 挂载日志文件

    -v /data/software/docker/mysql/log:/var/log/mysql

    注意:

    /data/software/docker/mysql/log需要有777权限

    chmod 777 /data/software/docker/mysql/log/
  • 指定root用户命令

    -e MYSQL_ROOT_PASSWORD=123456

Docker 部署 Redis

1. 拉取镜像

docker pull redis:6.2.6

2. 运行容器

docker run --name redis -d -p 6379:6379  redis:6.2.6

3. 进入容器内部

docker exec -it redis bash

4. 配置文件

redis.conf

port 6379
bind 0.0.0.0
requirepass 123456
daemonize no
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis.log"
dbfilename dump.rdb
dir /data/
databases 16
appendonly yes
appendfilename "appendonly.aof"
# appendfsync always
appendfsync everysec
# appendfsync no

5. 数据卷挂载

docker run --name redis -d -p 6379:6379 -v /data/software/docker/redis/conf:/usr/local/etc/redis -v /data/software/docker/redis/data:/data -v /data/software/docker/redis/log:/var/log redis:6.2.6 redis-server /usr/local/etc/redis/redis.conf

命令说明:

  • 挂载配置文件

    -v /data/software/docker/redis/conf:/usr/local/etc/redis
  • 挂载数据

    -v /data/software/docker/redis/data:/data
  • 挂载日志文件

     -v /data/software/docker/redis/log:/var/log/redis.log

    注意:

    /data/software/docker/redis/log需要有777权限

    chmod 777 /data/software/docker/redis/log/
  • 指定配置文件

    redis-server /usr/local/etc/redis/redis.conf

6. Redis 客户端

  1. 进入客户端

    docker exec -it redis redis-cli
  2. 登录

    auth 123456

Docker 部署 MongoDB

1. 拉取镜像

docker pull mongo:5.0.8

2. 运行容器

docker run --name mongo -d -p 27017:27017 mongo:5.0.8

3. 进入容器内部

docker exec -it mongo bash

4. 拷贝配置文件

docker cp mongo:/etc/mongod.conf.orig /data/software/docker/mongo/conf/

5. 配置文件

mongod.conf

# mongod.conf

# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/ # Where and how to store data.
storage:
dbPath: /data/db
journal:
enabled: true
# engine:
# wiredTiger: # where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log # network interfaces
net:
port: 27017
bindIp: 0.0.0.0 # how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo #security: #operationProfiling: #replication: #sharding: ## Enterprise-Only Options: #auditLog: #snmp:

6. 数据卷挂载

docker run --name mongo -d -v /data/software/docker/mongo/conf:/data/configdb -v /data/software/docker/mongo/data:/data/db -v /data/software/docker/mongo/log:/var/log/mongodb -p 27017:27017 mongo:5.0.8 --config /data/configdb/mongod.conf --auth

命令说明:

  • 挂载配置文件

    -v /data/software/docker/mongo/conf:/data/configdb
  • 挂载数据

    -v /data/software/docker/mongo/data:/data/db
  • 挂载日志文件

    -v /data/software/docker/mongo/log:/var/log/mongodb

    注意:

    /data/software/docker/mongo/log需要有777权限

    chmod 777 /data/software/docker/mongo/log/
  • 指定配置文件

    --config /data/configdb/mongod.conf
  • Mongo带验证

    --auth

7. MongoDB 操作

  1. 进入mongo客户端

    docker exec -it mongo mongo
  2. 进入admin数据库

    use admin
  3. 创建系统用户

    db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
  4. 用户登录命令

    db.auth('root','123456');
  5. 创建指定数据库用户命令

    db.createUser({user:"test",pwd:"123456",roles:[{role:'dbOwner',db:'test'}]})

Docker 部署 Zookeeper

1. 拉取镜像

docker pull zookeeper:3.6.3

2. 运行容器

docker run --name zookeeper -d -p 2181:2181 -p 2888:2888 -p 3888:3888 zookeeper:3.6.3

3. 进入容器内部

docker exec -it zookeeper bash

4. 拷贝配置文件

docker cp zookeeper:/conf/zoo.cfg /data/software/docker/zookeeper/conf/

5. 配置文件

zoo.cfg

dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=false
admin.enableServer=false
server.1=localhost:2888:3888;2181

6. 数据卷挂载

docker run --name zookeeper -d -v /data/software/docker/zookeeper/conf:/conf -v /data/software/docker/zookeeper/data:/data -v /data/software/docker/zookeeper/log:/datalog -p 2181:2181 -p 2888:2888 -p 3888:3888 zookeeper:3.6.3

命令说明:

  • 挂载配置文件

    -v /data/software/docker/zookeeper/conf:/conf
  • 挂载数据

    -v /data/software/docker/zookeeper/data:/data
  • 挂载日志文件

    -v /data/software/docker/zookeeper/log:/datalog

7. 客户端操作

  1. 进入Zookeeper客户端

    docker exec -it zookeeper ./bin/zkCli.sh

Docker 部署 Kafka

1. 拉取镜像

docker pull bitnami/kafka:2.8.1

2. 运行容器

docker run --name kafka -d -e ALLOW_PLAINTEXT_LISTENER=yes  bitnami/kafka:2.8.1

3. 进入容器内部

docker exec -it kafka bash

4. 拷贝配置文件

docker cp kafka:/opt/bitnami/kafka/config /data/software/docker/kafka/conf/

5. 配置文件

server.properties

############################# Server Basics #############################

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0 ############################# Socket Server Settings #############################
listeners=PLAINTEXT://0.0.0.0:9092 # Hostname and port the broker will advertise to producers and consumers. If not set,
# it uses the value for "listeners" if configured. Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
advertised.listeners=PLAINTEXT://ip:9092 # Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details
#listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL # The number of threads that the server uses for receiving requests from the network and sending responses to the network
num.network.threads=3 # The number of threads that the server uses for processing requests, which may include disk I/O
num.io.threads=8 # The send buffer (SO_SNDBUF) used by the socket server
socket.send.buffer.bytes=102400 # The receive buffer (SO_RCVBUF) used by the socket server
socket.receive.buffer.bytes=102400 # The maximum size of a request that the socket server will accept (protection against OOM)
socket.request.max.bytes=104857600 ############################# Log Basics ############################# # A comma separated list of directories under which to store log files
log.dirs=/bitnami/kafka/data # The default number of log partitions per topic. More partitions allow greater
# parallelism for consumption, but this will also result in more files across
# the brokers.
num.partitions=1 # The number of threads per data directory to be used for log recovery at startup and flushing at shutdown.
# This value is recommended to be increased for installations with data dirs located in RAID array.
num.recovery.threads.per.data.dir=1 ############################# Internal Topic Settings #############################
# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state"
# For anything other than development testing, a value greater than 1 is recommended to ensure availability such as 3.
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1 ############################# Log Retention Policy #############################
# The minimum age of a log file to be eligible for deletion due to age
log.retention.hours=168 # A size-based retention policy for logs. Segments are pruned from the log unless the remaining
# segments drop below log.retention.bytes. Functions independently of log.retention.hours.
#log.retention.bytes=1073741824 # The maximum size of a log segment file. When this size is reached a new log segment will be created.
log.segment.bytes=1073741824 # The interval at which log segments are checked to see if they can be deleted according
# to the retention policies
log.retention.check.interval.ms=300000 ############################# Zookeeper #############################
zookeeper.connect=ip:2181/kafka
# Timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=18000 group.initial.rebalance.delay.ms=0 auto.create.topics.enable=true max.partition.fetch.bytes=1048576
max.request.size=1048576
sasl.enabled.mechanisms=PLAIN,SCRAM-SHA-256,SCRAM-SHA-512
sasl.mechanism.inter.broker.protocol=

6. 数据卷挂载

docker run --name kafka -d -v /data/software/docker/kafka/conf:/bitnami/kafka/config -v /data/software/docker/kafka/data:/bitnami/kafka/data -p 9092:9092 -e ALLOW_PLAINTEXT_LISTENER=yes bitnami/kafka:2.8.1

命令说明:

  • 挂载配置文件

    -v /data/software/docker/kafka/conf:/bitnami/kafka/config
  • 挂载数据

    -v /data/software/docker/kafka/data:/bitnami/kafka/data -p 9092:9092

    注意:

    /data/software/docker/kafka/data需要有777权限

    chmod 777 /data/software/docker/kafka/data/

Docker 部署 RabbitMQ

1. 拉取镜像

docker pull rabbitmq:3.8-management

说明:镜像带management表示已经安装RabbitMQ后台管理插件。

2. 运行容器

docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 rabbitmq:3.8-management

3. 进入容器内部

docker exec -it rabbitmq bash

4. 拷贝配置文件

docker cp rabbitmq:/etc/rabbitmq /data/software/docker/rabbitmq/conf/

5. 配置文件

rabbitmq.conf

loopback_users.guest = false
listeners.tcp.default = 5672
management.tcp.port = 15672

6. 数据卷挂载

docker run --name rabbitmq -p 5672:5672 -p 15672:15672 -v /data/software/docker/rabbitmq/conf:/etc/rabbitmq -v /data/software/docker/rabbitmq/data:/var/lib/rabbitmq/mnesia -v /data/software/docker/rabbitmq/log:/var/log/rabbitmq/log -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456  -d rabbitmq:3.8-management

命令说明:

  • 挂载配置文件

    -v /data/software/docker/rabbitmq/conf:/etc/rabbitmq
  • 挂载数据

    -v /data/software/docker/rabbitmq/data:/var/lib/rabbitmq/mnesia
  • 挂载日志文件

    -v /data/software/docker/rabbitmq/log:/var/log/rabbitmq/log
  • 指定后台管理界面的登录用户名、密码

    -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456

Docker 部署 Elastic Search

安装Elastic Search

1. 拉取镜像

docker pull elasticsearch:6.8.22

2. 运行容器

docker run --name elasticsearch -d elasticsearch:6.8.22

启动报错:

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法:

  1. 在centos虚拟机中,修改配置sysctl.conf

    vim /etc/sysctl.conf
  2. 加入如下配置

    vm.max_map_count=262144
  3. 启用配置

    sysctl -p

3. 进入容器内部

docker exec -it elasticsearch bash

4. 拷贝配置文件

docker cp elasticsearch:/usr/share/elasticsearch/config/ /data/software/docker/elasticsearch/conf/

5. 配置文件

elasticsearch.yml

cluster.name: "docker-cluster"
network.host: 0.0.0.0

说明:

注意指定jvm.options中的-Xms512m -Xmx512m参数,分配内存应与服务器环境适配,设置内存过大,会导致系统崩溃。

6. 数据卷挂载

docker run --name elasticsearch -d -p 9200:9200 -p 9300:9300 -v /data/software/docker/elasticsearch/conf:/usr/share/elasticsearch/config -v /data/software/docker/elasticsearch/data:/usr/share/elasticsearch/data -v /data/software/docker/elasticsearch/log:/usr/share/elasticsearch/logs  elasticsearch:6.8.22

命令说明:

  • 挂载配置文件

    -v /data/software/docker/elasticsearch/conf:/usr/share/elasticsearch/config
  • 挂载数据

    -v /data/software/docker/elasticsearch/data:/usr/share/elasticsearch/data
  • 挂载日志文件

    -v /data/software/docker/elasticsearch/log:/usr/share/elasticsearch/logs

    注意:

    /data/software/docker/elasticsearch/data需要有777权限

    chmod 777 /data/software/docker/elasticsearch/data/

    /data/software/docker/elasticsearch/log需要有777权限

    chmod 777 /data/software/docker/elasticsearch/log/

安装 Kibana

1. 拉取镜像

docker pull kibana:6.8.22

2. 运行容器

docker run -d --name kibana -e ELASTICSEARCH_URL=http://ip:9200 -p 5601:5601 kibana:6.8.22

3. 进入容器内部

docker exec -it kibana bash

4. 拷贝配置文件

docker cp kibana:/usr/share/kibana/config/ /data/software/docker/kibana/conf/

5. 配置文件

kibana.yml

server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://ip:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

6. 数据卷挂载

docker run -d --name kibana -v /data/software/docker/kibana/conf:/usr/share/kibana/config -v /data/software/docker/kibana/data:/usr/share/kibana/data -p 5601:5601 kibana:6.8.22

命令说明:

  • 挂载配置文件

     -v /data/software/docker/kibana/conf:/usr/share/kibana/config
  • 挂载数据

     /data/software/docker/kibana/data:/usr/share/kibana/data

    注意:

    /data/software/docker/kibana/data需要有777权限

    chmod 777 /data/software/docker/kibana/data/

Docker部署中间件的更多相关文章

  1. docker部署angular和asp.net core组成的前后端分离项目

    最近使用docker对项目进行了改进,把步骤记录一下,顺便说明一下项目的结构. 项目是前后端分离的项目,后端使用asp.net core 2.2,采用ddd+cqrs架构的分层思想,前端使用的是ang ...

  2. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  3. Docker部署Hadoop集群

    Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...

  4. 程序开发使用docker部署

    我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...

  5. 我使用celery以及docker部署遇到的问题

    首先我本机测试时没有问题的,但是在线上docker中,任务一直显示 "Sending due task".超时的任务是 django orm update 操作,本地不会出现这样的 ...

  6. Docker部署SDN环境

    2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...

  7. 在生产环境使用Docker部署应用

    导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...

  8. Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈

    版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qclou ...

  9. NET Core Docker部署

    NET Core Docker部署 前言 在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行 ...

  10. 我使用 Docker 部署 Celery 遇到的问题

    问题1 - Sending due task 本机测试时没有问题的,但是在线上 docker 中,任务一直显示 "Sending due task".超时的任务是 Django O ...

随机推荐

  1. Python socket记录

    目录 网络编程 1.基本概念 Python中的网络编程 网络编程 1.基本概念 1.什么是客户端/服务器架构? 服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的"服务& ...

  2. 汇总低效的SQL语句

    背景 SQL专家云像"摄像头"一样,对环境.参数配置.服务器性能指标.活动会话.慢语句.磁盘空间.数据库文件.索引.作业.日志等几十个运行指标进行不同频率的实时采集,保存到SQL专 ...

  3. 【python爬虫实战】用python爬取爱奇艺电视剧十大榜单的全部数据!

    目录 一.爬取目标 二.讲解代码 三.查看结果 四.视频演示 五.附完整源码 一.爬取目标 本次爬取的目标是,爱奇艺电视剧类目下的10个榜单:电视剧风云榜-爱奇艺风云榜 ​ 可以看到,这10个榜单包含 ...

  4. To ChatGPT:让你更加随意地使用所有ChatGPT应用

    现在其实已经有很多在线的llm服务了,当然也存在许多开源部署方案,但是不知道大家有没有发现一个问题,目前基于ChatGPT开发的应用,都是使用的OpenAI的接口.换句话说,如果没有OpenAI账号, ...

  5. 一文掌握Python多线程与多进程

    Python的多线程和多进程 一.简介 并发是今天计算机编程中的一项重要能力,尤其是在面对需要大量计算或I/O操作的任务时.Python 提供了多种并发的处理方式,本篇文章将深入探讨其中的两种:多线程 ...

  6. 前端自定义弹框组件、自定义弹框内容alertView popup组件

    快速实现前端自定义弹框.自定义弹框内容alertView popup组件, 请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12491 效果图 ...

  7. 如何通过数据warehouse更好地支持企业数字化转型战略

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 <如何通过数据 warehouse 更好地支持企业数字化转型战略> 随着企业数 ...

  8. Jupyter Notebook运行中内核挂掉

    Jupyter Notebook运行中内核挂掉了 有人说可能是版本冲突,由于我的都是最新版本,因此更新版本并未解决该问题. 最后发现有人通过这行代码解决了 import os os.environ[& ...

  9. Dapr 发布模糊测试报告|Dapr 完成模糊测试审核

    Dapr 团队最近在博客上发布了 Dapr 完成模糊测试审核[1]的文章,该审计是 CNCF 通过模糊测试改善[2]开源云原生项目安全状况的计划的一部分.该审计由 Ada Logics[3] 于 20 ...

  10. 我坚定的认为,这个源码肯定是有 BUG 的!

    你好呀,我是歪歪. 上周我不是发了<我试图给你分享一种自适应的负载均衡.>这篇文章嘛,里面一种叫做"自适应负载均衡"的负载均衡策略,核心思路就是从多个服务提供者中随机选 ...