1.MySQL单机容器部署
启动命令
docker run -d -p 3306:3306 --privileged=true \
-v /data/mysql57/log:/var/log/mysql \
-v /data/mysql57/data:/var/lib/mysql \
-v /data/mysql57/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
--name mysql57 mysql:5.7
准备my.cnf配置文件(UTF-8)【/data/mysql57/conf/my.cnf】
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
准备my.cnf配置文件(UTF-8mb4)
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
查看字符集 show variables like '%character%';
2.MySQL主从容器部署
启动主从数据库
docker run -p 3307:3306 --name mysql-master \
--privileged=true \
-v /data/mysql-master/log:/var/log/mysql \
-v /data/mysql-master/data:/var/lib/mysql \
-v /data/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
docker run -p 3308:3306 --name mysql-slave \
--privileged=true \
-v /data/mysql-slave/log:/var/log/mysql \
-v /data/mysql-slave/data:/var/lib/mysql \
-v /data/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
准备环境,主数据环境(/data/mysql-master/conf/my.cnf)
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
准备从数据库环境(/data/mysql-slave/conf/my.cnf)
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
重启数据库服务
docker restart mysql-master
docker restart mysql-slave
进入主数据库
docker exec -it mysql-master /bin/bash
mysql -uroot -proot
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
进入从数据库
docker exec -it mysql-slave /bin/bash
mysql -uroot -proot
change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
# 查看状态
show slave status \G;
# 开启同步
start slave;
# 查看状态
show slave status \G;
3.Redis单机容器部署
准备配置文件目录 mkdir -p /data/redis-01/conf && vim /data/redis-01/conf/redis.conf
配置redis.conf
appendonly yes
port 6379
bind 0.0.0.0
启动容器redis
docker run -d -p 6379:6379 --restart=always \
-v /data/redis-01/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis-01/data:/data \
--privileged=true \
--name redis-01 redis:6.2.5 \
redis-server /etc/redis/redis.conf
4.Redis主从容器部署
主节点准备配置文件目录
mkdir -p /data/redis/conf && vim /data/redis/conf/redis.conf
配置redis.conf
protected-mode no
daemonize no
requirepass 123
从节点准备配置文件目录
mkdir -p /data/redis/conf && vim /data/redis/conf/redis.conf
配置redis.conf
protected-mode no
daemonize no
requirepass 123
masterauth 123
replicaof 192.168.1.85 6379
启动主节点容器redis
docker run -d -p 6379:6379 -p 26379:26379 \
--restart=always \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-v /etc/localtime:/etc/localtime:ro \
--privileged=true \
--name redis-master redis:6.2.5 \
redis-server /etc/redis/redis.conf
启动从节点容器redis
docker run -d -p 6379:6379 -p 26379:26379 \
--restart=always \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-v /etc/localtime:/etc/localtime:ro \
--privileged=true \
--name redis-slave redis:6.2.5 \
redis-server /etc/redis/redis.conf
测试
docker exec -it redis-master bash
redis-cli
auth 123
info Replication
5.Ngxin容器部署
nginx.conf配置文件
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
nginx容器启动命令
docker run -d -p 8081:80 --restart=always \
-v /data/nginx-01/conf.d/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx-01/html:/etc/nginx/html:ro \
-v /data/nginx-01/log:/usr/log/nginx \
--privileged=true \
--name nginx-01 nginx:1.21
6.PortainerCE部署
docker run -d \
-p 9000:9000 \
-p 8000:8000 \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/portainer-ce:/data \
--name portainer-ce portainer/portainer-ce
7.nacos单机部署
docker run -d \
--name nacos -p 8848:8848 \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
--restart always \
nacos/nacos-server:2.0.3
8.MongoDB部署
mkdir -p /data/mongodb/data
# 不需要密码
docker run -itd \
--name mongo \
-v /data/mongodb/data:/data/db \
-p 27017:27017 \
mongo:4.4
# 需要密码
docker run -itd \
--name mongo -v \
--auth \
/data/mongodb/data:/data/db \
-p 27017:27017 \
mongo:4.4
进入admin数据库 docker exec -it mongo mongo admin
执行sql创建用户
db.createUser({
user:'root',
pwd:'123456',
roles:[{
role:'userAdminAnyDatabase',
db: 'admin'
},
'readWriteAnyDatabase'
]});
9.RabbitMQ部署
docker run -d \
--hostname my-rabbit \
--name rabbit \
-p 15672:15672 -p 5672:5672 \
192.168.1.111:8084/rabbitmq
docker run -d \
--hostname my-rabbit \
--name rabbit \
-p 15672:15672 -p 5672:5672 \
192.168.1.111:8084/rabbitmq:3-management