Docker实战

一、Docker安装

以下均以CentOS 7为例

1、安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

2、启动和校验

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

3、配置镜像加速

以阿里云为例,进入阿里云控制台->产品->容器->容器镜像服务ACR->镜像加速器->找到命令,按照示例程序来,例:

# 创建目录
mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF

# 重新加载配置
systemctl daemon-reload

# 重启Docker
systemctl restart docker

二、Docker常用软件安装

2.1、MySQL

1、建三个文件夹data、conf、init,这里我建在了/root/mysql目录下,大家可根据自己情况

2、run,没有镜像的话会自动安装

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  mysql

2.2、Redis

1、创建文件夹data、conf、log,这里我创建到/root/redis目录下

2、去官网下载配置文件 Redis官网  和自己版本对应好就行

Docker实战_第1张图片

然后修改一下配置文件,例如:

bind 127.0.0.1 #注释掉这部分,使redis可以外部访问

daemonize no#用守护线程的方式启动

requirepass 你的密码#给redis设置密码

appendonly yes#redis持久化  默认是no

tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300

下载下来的redis.conf放置在conf目录下,再在log目录下新建redis.log文件夹,赋予777权限。

3、 安装Redis

docker pull redis # 安装最新版本

docker pull redis:5.0.7 # 指定版本

4、运行

docker run -d \
  --name redis \
  -p 6379:6379 \
  -v /root/redis/data:/data \
  -v /root/redis/conf/redis.conf:/etc/redis/redis.conf \
  -v /root/redis/log/redis.log:/var/log/redis.log \
  -d redis:5.0.7 \
  redis-server /etc/redis/redis.conf

对上面命令进行一个解释:

docker run -d \
  --name redis \
  -p 6379:6379 \ # 把容器6379端口映射到宿主6379
  -v /root/redis/data:/data \ # 将主机上的 /root/redis/data 目录挂载到容器内部的 /data 目录,以便可以将 Redis 数据持久化到主机
  -v /root/redis/conf/redis.conf:/etc/redis/redis.conf \ # 将主机上的 /root/redis/conf/redis.conf 文件挂载到容器内部的 /etc/redis/redis.conf 文件,以便可以使用自定义的 Redis 配置文件
  -v /root/redis/log/redis.log:/var/log/redis.log \ # redis日志
  -d redis:5.0.7 \ # 指定要使用的 Redis 镜像及版本号,并在后台运行容器
  redis-server /etc/redis/redis.conf # # 在容器内部执行的命令,启动 Redis 服务,并使用 /etc/redis/redis.conf 配置文件

2.3、RocketMQ

1、创建文件夹rocketmq,其下broker、nameserver,broker下面创建conf、logs、store,nameserver下面创建logs、store

Docker实战_第2张图片

2、在/root/rocketmq/broker/conf下创建broker.conf,并配置如下:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

namesrvAddr=IP:9876
brokerIP1=IP
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911

namesrvAddr和brokerIP1必须是具体的IP地址

3、拉取rocketmq

docker pull apache/rocketmq  # 拉最新

docker pull apache/rocketmq:4.9.4  # 拉取指定版本

4、启动nameserver

docker run -d \
  --name mqnameserver \
  -p 9876:9876 \
  -v /root/rocketmq/nameserver/logs:/root/logs \
  -v /root/rocketmq/nameserver/store:/root/store \
  -d apache/rocketmq:4.9.4 \
  sh mqnamesrv

解释

 -name mqnameserver | 把容器的名字设置为mqnameserver
-p 9876:9876| 把容器内的端口9876挂载到宿主机9876上面
-v /root/rocketmq/nameserver/logs:/root/logs | 把容器内的/root/logs日志目录挂载到宿主机的 
/root/rocketmq/nameserver/store:/root/store | 把容器内的/root/store数据存储目录挂载到宿主机
-e “MAX_POSSIBLE_HEAP=100000000” | 设置容器的最大堆内存为100000000
apache/rocketmq:4.9.4 | 使用的镜像名称
sh mqnamesrv | 启动namesrv服务

5、启动broker

docker run -d \
  --name mqbroker \
  --link mqnameserver:namesrv \
  -p 10911:10911 \
  -p 10909:10909 \
  -v /root/rocketmq/broker/logs:/root/logs \
  -v /root/rocketmq/broker/store:/root/store \
  -v /root/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.9.4/conf/broker.conf \
  -e "NAMESRV_ADDR=namesrv:9876" \
  -d apache/rocketmq:4.9.4 \
  sh mqbroker -c /opt/rocketmq-4.9.4/conf/broker.conf 

解释

–link mqnameserver:namesrv | 和rmqnamesrv容器通信
-p 10911:10911 | 把容器的非vip通道端口挂载到宿主机
-p 10909:10909 | 把容器的vip通道端口挂载到宿主机
-e “NAMESRV_ADDR=namesrv:9876” | 指定namesrv的地址为本机namesrv的ip地址:9876
-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker | 指定broker服务的最大堆内存
 apache/rocketmq:4.9.4 | 使用的镜像名称
sh mqbroker -c /opt/rocketmq-4.9.4/conf/broker.conf | 指定配置文件启动broker节点 

6、创建rocketmq-console服务

拉取rocketmq-console

docker pull pangliang/rocketmq-console-ng

启动rocketmq-console

docker run -d \
  --name mqconsole \
  -p 9999:8080 \
  -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.164.100:9876 \
  -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
  pangliang/rocketmq-console-ng

解释上面语句

-name rmqadmin | 把容器的名字设置为rmqadmin
-e “JAVA_OPTS=-Drocketmq.namesrv.addr=IP:9876 | 设置namesrv服务的ip地址
-Dcom.rocketmq.sendMessageWithVIPChannel=false” | 不使用vip通道发送消息
–p 9999:8080 | 把容器内的端口8080挂载到宿主机上的9999端口

你可能感兴趣的:(Linux,docker,容器,运维)