docker&docker-compose 离线部署
一直游到海水变蓝丿 2024-09-13 09:37:01 阅读 71
一 安装docker
这里提供在线(yum)安装docker的方式。
需要离线安装docker可参考:Centos7.6离线安装docker
离线安装docker,一定注意docker对依赖所需版本是否对应。
我碰到的问题就是由于版本不对应导致
这里提供离线安装docker18.09.8 及相关依赖包网盘地址
提取码:izxb
1.1 卸载(可选)
如果之前安装过docker,可以用下面的命令卸载docker
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
1.2 安装docker
1.2.1 安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
1.2.2 更新本地镜像源
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
1.2.3 安装docker社区版
yum install -y docker-ce
1.2.4 查看docker 版本
docker --version
1.3 docker 常用命令
# 启动docker
systemctl start docker
# 重启docker
systemctl restart docker
# 关闭docker
systemctl stop docker
# 开机启动docker
systemctl enable docker
# 查看docker状态
systemctl status docker
# 查看docker 版本
docker version
二 centos安装docker-compose
1.下载
2.把下载的安装包上传到服务器的/usr/local/bin/目录下
3.增加执行权限
chmod a+x docker-compose
4. 测试
docker-compose --version
三 离线安装包获取
1. 先在有网络的机器环境下安装并导出minio、redis、nginx、mysql镜像
1.1.1 minio 镜像
#拉取最新的minio(需要网络)
docker search minio
docker pull minio/minio
#查看已安装的minio镜像
docker images
#导出minio镜像的安装包
docker save minio/minio -o minio.tar
1.1.2.redis 镜像
#拉取最新的redis(需要网络)
docker search redis
docker pull redis
#查看已安装的redis镜像
docker images
#导出redis镜像的安装包
docker save redis -o redis.tar
1.1.3 nginx 镜像
#拉取最新的nginx(需要网络)
docker search nginx
docker pull nginx
#查看已安装的nginx镜像
docker images
#导出nginx镜像的安装包
docker save nginx -o nginx.tar
1.1.4 mysql 镜像
#拉取最新的mysql(需要网络)
docker search mysql
docker pull mysql
#查看已安装的mysql镜像
docker images
#导出mysql镜像的安装包
docker save mysql -o mysql.tar
1.1.5 apache/rocketmq 镜像
#拉取最新的apache/rocketmq(需要网络)
docker search apache/rocketmq
docker pull apache/rocketmq
docker images
#导出apache/rocketmq镜像的安装包
docker save apache/rocketmq -o rocketmq.tar
2.在无网络的机器上导入minio、redis、nginx、mysql镜像包
2.1.1 上传绝对路径:/root/minio.tar
2.1.2 上传绝对路径:/root/redis.tar
2.1.3 上传绝对路径:/root/nginx.tar
2.1.4 上传绝对路径:/root/mysql.tar
2.1.5 上传绝对路径:/root/rocketmq.tar
3.新建data文件夹
3.1.1 在/data/redis/conf目录下创建配置文件redis.conf
# 关闭保护模式,允许远程连接
protected-mode no
# 开启AOF持久化
appendonly yes
# 密码
requirepass 123456
3.1.2 在/data/nginx/conf目录下创建配置文件nginx.conf
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
gzip on;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
listen 81;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
3.1.3 在/usr/local/rocketmq/broker/conf目录下创建配置文件broker.conf
注意 brokerIP1 值为你宿主机的 IP
# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0
brokerId = 0
# Broker服务地址String内部使用填内网ip,如果是需要给外部使用填公网ip
# 修改为你宿主机的 IP
brokerIP1 = 192.182.2.217
# Broker角色
brokerRole = ASYNC_MASTER
# 刷盘方式
flushDiskType = ASYNC_FLUSH
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen = 04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime = 72
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
3.1.4 在/root目录下创建配置文件docker-compose.yml
绝对路径:/root/docker-compose.yml
version: '3'
services:
minio:
image: minio/minio
container_name: minio
ports:
- 9000:9000
- 9011:9011
environment:
TZ: Asia/Shanghai
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
volumes:
# 宿主机目录 /data/minio 映射到容器内目录/data ,作为minio的数据文件目录
- /data/minio/data:/data
- /data/minio/config:/root/.minio/ #映射配置目录
command: server --console-address ':9011' /data
redis:
image: redis
container_name: redis
ports:
- 6379:6379
volumes:
- /data/redis/conf/redis.conf:/etc/redis/redis.conf
- /data/redis/data:/data
restart: always
privileged: true
command: ["redis-server","/etc/redis/redis.conf"]
nginx:
restart: always
image: nginx
ports:
- 81:81
- 444:444
volumes:
- /data/nginx/data/conf.d:/etc/nginx/conf.d
- /data/nginx/log:/var/log/nginx
- /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /data/nginx/html:/usr/share/nginx/html
mysql:
image: mysql
container_name: mysql
environment:
- MYSQL_ROOT_PASSWORD=12345678
volumes:
- /data/mysql/data:/var/lib/mysql
ports:
- 3306:3306
restart: always
rmqnamesrv:
image: apache/rocketmq
container_name: rmqnamesrv
ports:
- 9876:9876
restart: always
privileged: true
volumes:
- /usr/local/rocketmq/nameserver/logs:/home/rocketmq/logs
- /usr/local/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh
environment:
- MAX_HEAP_SIZE=256M
- HEAP_NEWSIZE=128M
command: ["sh","mqnamesrv"]
broker:
image: apache/rocketmq
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
restart: always
privileged: true
volumes:
- /usr/local/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf
depends_on:
- 'rmqnamesrv'
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
- MAX_HEAP_SIZE=512M
- HEAP_NEWSIZE=256M
command: ["sh","mqbroker","-c","/home/rocketmq/broker.conf"]
rmqdashboard:
image: apacherocketmq/rocketmq-dashboard:latest
container_name: rocketmq-dashboard
ports:
- 8080:8080
restart: always
privileged: true
depends_on:
- 'rmqnamesrv'
environment:
- JAVA_OPTS= -Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
3.1.4
加载minio、redis、nginx、mysql镜像
#在 镜像目录下执行命令 加载镜像
docker load -i minio.tar
docker load -i redis.tar
docker load -i nginx.tar
docker load -i mysql.tar
docker load -i rocketmq.tar
# 在docker-compose.yml的目录下执行命令 启动镜像
docker-compose up -d
四 参考
docker&docker-compose 离线部署各种组件
Centos安装Docker
五 遇到问题
1.通过下载离线安装包来安装docker,安装好docker-compose后,再通过docker-compose 离线部署MySQL时报错
报错内容如下:
[ERROR] [MY-010457] --initialize specified but the data directory has files in it. Aborting.
[ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
[ERROR] [MY-010119] [Server] Aborting
网上针对此问题也有提出的解决方法:
(1)docker 安装 mysql
(2)docker Mysql 报错 The designated data directory /var/lib/mysql/ is unusable. You can remove all files
(3)使用 Docker Compose 安装 MySQL 以及所遇到的问题解决
上面的解决方法对我本地出现的问题不适用,所以换个思路。
我先是在线指定安装(yum安装)docker18.09.8版本,查看该docker版本所依赖的版本
然后下载对应版本(docker18.09.8)的依赖离线包
然后再rpm安装docker18.09.8及其对应依赖包,再用docker-compose部署MySQL成功启动没有问题!
所以我本地出现问题的原因是由于依赖版本不一致。
2.拉取镜像时报错
执行 docker-compose up -d 报错
报错信息
<code>error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/ea/eae6c5db5d119ed594f0bcfe73829e4a8df128bc3ca874d8f11b4ff2cde48769/data?verify=1718074820-WwX%2BvPxNQ9DVRKwrAh7NjgQKCdw%3D: dial tcp 108.160.165.62:443: i/o timeout
解决方法
# 编辑镜像仓库文件
sudo vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com","https://s3d6l2fh.mirror.aliyuncs.com"]
}
# 重启docker
sudo systemctl restart docker
3. 修改docker-compose.yml配置文件的MYSQL_ROOT_PASSWORD 后 没有生效
解决方法:
docker-compose修改Mysql密码
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。