docker run指令
# docker run 指令
# mysql
# 创建并运行新 mysql 容器,挂载本地目录
docker run -d \
--name mysql \
-p 4417:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-v ~/software/mysql/data:/var/lib/mysql \
-v ~/software/mysql/conf:/etc/mysql/conf.d \
-v ~/software/mysql/init:/docker-entrypoint-initdb.d \
--restart=always \
mysql
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# dm
官方文档:Docker安装 | 达梦技术文档 (dameng.com) (opens new window)
# 先从官方文档中下载镜像
docker run -d -p 30236:5236 --restart=always --name=dm8_test --privileged=true -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e PAGE_SIZE=16 -e EXTENT_SIZE=32 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e INSTANCE_NAME=dm8_test -v /opt/data:/opt/dmdbms/data dm8_single:dm8_20240715_rev232765_x86_rh6_64
1
2
2
用户信息
# 账户
SYSDBA
# 密码
SYSDBA001
1
2
3
4
2
3
4
# minio
# 官方文档示例:https://min.io/docs/minio/container/index.html
mkdir -p ~/software/minio/data
docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-v ~/software/minio/data:/data \
-e "MINIO_ROOT_USER=ROOTNAME" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
--restart=always \
quay.io/minio/minio server /data --console-address ":9001"
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# nacos
# 1、基础版
docker run -d \
--name nacos \
-p 8848:8848 \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-v ~/software/nacos/logs:/home/nacos/logs \
-v ~/software/nacos/conf:/home/nacos/conf \
--restart=always \
nacos/nacos-server:v2.3.0
# 2、配置 mysql 版,[MYSQL_SERVICE_HOST]选项根据自己的 ip 配置
docker run -d \
--name nacos \
-p 8849:8848 \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.2.129 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_PORT=4417 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai" \
-v ~/software/nacos/logs:/home/nacos/logs \
-v ~/software/nacos/conf:/home/nacos/conf \
--restart=always \
nacos/nacos-server:v2.3.0
# nacos 控制台
docker run --name nacos-quick -e MODE=standalone -p 8849:8848 --restart=always -d nacos/nacos-server:v2.3.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# redis
学习参考:
- Docker 安装 Redis 容器 (完整详细版) - 鹏星 - 博客园 (cnblogs.com) (opens new window)
- docker 安装Redis (全网最详细:附带配置文件)_docker pull redis-CSDN博客 (opens new window)
# 1、拉取镜像
docker pull redis:6.2.6
1
# 2、创建配置文件
mkdir -p ~/software/redis/conf
cd ~/software/redis/conf
touch redis.config
1
2
3
2
3
# 3、运行容器
docker run \
-p 6379:6379 \
--name redis \
--restart=always \
--log-opt max-size=100m \
--log-opt max-file=2 \
-v ~/software/redis/conf/redis.config:/etc/redis/redis.conf \
-v ~/software/redis/data:/var/lib/redis \
-v ~/software/redis/logs:/logs \
-d redis:6.2.6 redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass 123456
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 4、修改配置文件
可以先写入配置文件,再运行容器。
如果先运行容器,再修改配置文件,需要重启容器。
# Redis服务器配置
# 绑定IP地址
#解除本地限制 注释bind 127.0.0.1
#bind 127.0.0.1
#设置所有IP都可以访问 (docker貌似自动开启了)
#bind 0.0.0.0
# 服务器端口号
port 6379
#配置密码,不要可以删掉
requirepass 123456
#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no
#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定(自定义)
#pidfile /data/dockerData/redis/run/redis6379.pid
#默认为no,redis持久化,可以改为yes
appendonly yes
#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 60
# 服务器系统默认配置参数影响 Redis 的应用
maxclients 10000
tcp-keepalive 300
#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合(分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改)
save 900 1
save 300 10
save 60 10000
# 按需求调整 Redis 线程数
tcp-backlog 511
# 设置数据库数量,这里设置为16个数据库
databases 16
# 启用 AOF, AOF常规配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 慢查询阈值
slowlog-log-slower-than 10000
slowlog-max-len 128
# 是否记录系统日志,默认为yes
syslog-enabled yes
#指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel notice
# 日志输出文件,默认为stdout,也可以指定文件路径
logfile stdout
# 日志文件
#logfile /var/log/redis/redis-server.log
# 系统内存调优参数
# 按需求设置
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 5、重启容器
# 重启 redis 服务
docker restart redis
1
2
2
# rocketmq
参考
- 基于Docker安装RockerMQ【保姆级教程、内含图解】_docker安装rocket mq-CSDN博客 (opens new window)
- Docker部署RocketMQ5.x (单机部署+配置参数详解+不使用docker-compose直接部署)_rocketmq不推荐用docker部署-CSDN博客 (opens new window)
# 拉取镜像并配置
# 拉取最新镜像
docker pull apache/rocketmq
# 创建挂载目录
## 日志目录
mkdir ~/software/rocketmq/data/namesrv/logs -p
## 脚本目录
mkdir ~/software/rocketmq/data/namesrv/bin -p
# 设置权限:如果不设置,会导致 NameServer 容器内部无法写日志文件
## 777 文件所属者、文件所属组和其他人有读取 & 写入 & 执行全部权限。rwxrwxrwx
chmod 777 -R /software/rocketmq/namesrv/*
# 构建 namesrver 容器
docker run -d \
--restart=always \
--name rmqnamesrv \
--privileged=true \
-p 9876:9876 \
-v ~/software/rocketmq/data/namesrv/logs:/root/logs \
-v ~/software/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \
apache/rocketmq \
sh mqnamesrv
# 创建 broker 节点
## 创建 broker 数据数据卷
mkdir -p ~/software/rocketmq/data/broker/logs ~/software/rocketmq/data/broker/store /usr/local/rocketmq/conf
## 创建配置文件
### 进入编辑模式
vi ~/software/rocketmq/conf/broker.conf
### 配置文件代码(这里是对应自己的 IP),最后按 Esc,:wq,保存退出,即可
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 192.168.239.128
diskMaxUsedSpaceRatio=95
## 构建 broker 容器
docker run -d \
--restart=always \
--name rmqbroker \
--link rmqnamesrv:namesrv \
--privileged=true \
-p 10911:10911 \
-p 10912:10912 \
-p 10909:10909 \
-v /software/rocketmq/data/broker/logs:/root/logs \
-v /software/rocketmq/data/broker/store:/root/store \
-v /software/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \
-e "MAX_POSSIBLE_HEAP=200000000" \
apache/rocketmq \
sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf
# 拉取可视化控制台镜像
docker pull styletang/rocketmq-console-ng
# 构建 rockermq-console 容器
docker run -d \
--restart=always \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.239.128:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8080:8080 \
--ulimit nofile=1024 \
styletang/rocketmq-console-ng:latest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# 启动
# 启动 rmqnamesrv
docker start rmqnamesrv
# 启动 rmqbroker
docker start rmqbroker
1
2
3
4
5
2
3
4
5
# 参数解析
--privileged=true
:- 这是一个 Docker 容器的运行参数,用于给予容器内的进程几乎相同于宿主机的权限。这意味着容器内的进程可以访问宿主机的设备,并且可以执行一些通常需要特权权限的操作。
- 通常,出于安全考虑,Docker 容器默认运行在非特权模式下,限制了容器对宿主机资源的访问。使用
--privileged
参数可以绕过这些限制,但这也增加了安全风险,因为它允许容器内的进程执行可能影响宿主机的操作。
sh mqnamesrv
:- 这是 Docker 容器启动时执行的命令。在这种情况下,它指定了容器应该运行的脚本或命令。
sh
是一个 shell 程序,用于执行脚本或命令行指令。 mqnamesrv
是一个启动 RocketMQ NameServer 的脚本文件。这个脚本可能包含了启动 NameServer 服务所需的命令和参数。
- 这是 Docker 容器启动时执行的命令。在这种情况下,它指定了容器应该运行的脚本或命令。
mkdir
的-p
选项:- 这个选项告诉
mkdir
命令在创建目标目录的同时,也创建所有必需的父目录。如果这些父目录已经存在,mkdir
命令不会报错,而是继续执行。 - 确保了即使目标目录的上级目录不存在,
mkdir
命令也能成功创建整个目录路径。 - 使用
mkdir -p
后面跟多个路径时,它会为每个路径创建目录,如果路径中的任何中间目录不存在,mkdir -p
也会创建它们。
- 这个选项告诉
# kafka
在安装
kafka
之前需要先安装zookeeper
,因为kafka
启动会将元数据保存在zookeeper
中,zookeeper
是一种分布式协调服务,可以在分布式系统
中共享配置,协调锁资源,提供命名服务。
学习参考:
- Docker部署Kafka 2.8.1(保姆级图文教程)_docker安装kafka2.8版本-CSDN博客 (opens new window)
- kafka实战-docker 中安装kafka_docker kafka-CSDN博客 (opens new window)
# 1、安装并启动 zookeeper
# 查找 Docker Hub 上的 zookeeper 镜像
docker search wurstmeister/zookeeper
# 拉取 zookeeper 镜像
docker pull wurstmeister/zookeeper
# 启动zookeeper镜像
docker run --restart=always \
--log-driver json-file \
--log-opt max-size=100m \
--log-opt max-file=2 \
--name zookeeper -p 2181:2181 \
-v /etc/localtime:/etc/localtime \
-d wurstmeister/zookeeper
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 2、安装并启动 kafka
# 查找 Docker Hub 上的 kafka 镜像
docker search wurstmeister/kafka
# 拉取 kafka 镜像
docker pull wurstmeister/kafka
# 启动 kafka 镜像
docker run --privileged=true \
--log-driver json-file \
--log-opt max-size=100m \
--log-opt max-file=2 \
--name kafka -p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=IP:2181/kafka \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://IP:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_HEAP_OPTS='-Xms512M -Xmx4G' \
-v ~/software/kafka/data:/wurstmeister/kafka/data \
-v ~/software/kafka/config:/wurstmeister/kafka/config \
-v /etc/localtime:/etc/localtime \
-d wurstmeister/kafka
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
上次更新: 2024/9/25 11:16:13