当前位置:   article > 正文

docker&docker-compose 离线部署_docker-compose 离线安装

docker-compose 离线安装

一 安装docker

这里提供在线(yum)安装docker的方式。
需要离线安装docker可参考:Centos7.6离线安装docker
离线安装docker,一定注意docker对依赖所需版本是否对应。
我碰到的问题就是由于版本不对应导致
这里提供离线安装docker18.09.8 及相关依赖包网盘地址
提取码:izxb

1.1 卸载(可选)

如果之前安装过docker,可以用下面的命令卸载docker

yum remove 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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1.2 安装docker

1.2.1 安装yum工具
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
  • 1
  • 2
  • 3
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
  • 4
  • 5
  • 6
  • 7
  • 8
1.2.3 安装docker社区版
yum install -y docker-ce
  • 1
1.2.4 查看docker 版本
docker --version
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

二 centos安装docker-compose

1.下载

2.把下载的安装包上传到服务器的/usr/local/bin/目录下

3.增加执行权限

chmod a+x docker-compose
  • 1

4. 测试

docker-compose --version
  • 1

三 离线安装包获取

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
1.1.2.redis 镜像
#拉取最新的redis(需要网络)
docker search redis
docker pull redis
#查看已安装的redis镜像
docker images
#导出redis镜像的安装包
docker save redis -o redis.tar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
1.1.3 nginx 镜像
#拉取最新的nginx(需要网络)
docker search nginx
docker pull nginx
#查看已安装的nginx镜像
docker images
#导出nginx镜像的安装包
docker save nginx -o nginx.tar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
1.1.4 mysql 镜像
#拉取最新的mysql(需要网络)
docker search mysql
docker pull mysql
#查看已安装的mysql镜像
docker images
#导出mysql镜像的安装包
docker save mysql -o mysql.tar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
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;
    }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
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
  
  • 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
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# 在docker-compose.yml的目录下执行命令 启动镜像
docker-compose up -d
  • 1
  • 2

四 参考

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
  • 2
  • 3

在这里插入图片描述
网上针对此问题也有提出的解决方法:
(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版本所依赖的版本
yum指定安装docker18.09.8
docker18.09.8及对应依赖版本
然后下载对应版本(docker18.09.8)的依赖离线包
在这里插入图片描述
然后再rpm安装docker18.09.8及其对应依赖包,再用docker-compose部署MySQL成功启动没有问题!
所以我本地出现问题的原因是由于依赖版本不一致。

2.拉取镜像时报错

执行 docker-compose up -d 报错
在这里插入图片描述
报错信息

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
  • 1

解决方法

# 编辑镜像仓库文件
sudo vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com","https://s3d6l2fh.mirror.aliyuncs.com"]
}
# 重启docker
sudo systemctl restart docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3. 修改docker-compose.yml配置文件的MYSQL_ROOT_PASSWORD 后 没有生效

解决方法:
docker-compose修改Mysql密码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/970526?site
推荐阅读
相关标签
  

闽ICP备14008679号