• Linux常用环境Docker安装


    一、mysql安装

    简单安装

    1. docker run -d \
    2. --name mysql \
    3. -p 3306:3306 \
    4. -e TZ=Asia/Shanghai \
    5. -e MYSQL_ROOT_PASSWORD=123 \
    6. mysql

     mysql容器本地挂载

    1. cd /usr
    2. mkdir mysql
    3. cd mysql/
    4. mkdir data
    5. mkdir conf
    6. mkdir init

     

    可以手动导入自己的数据库信息

    1. docker run -d \
    2. --name mysql \
    3. -p 3306:3306 \
    4. -e TZ=Asia/Shanghai \
    5. -e MYSQL_ROOT_PASSWORD=123 \
    6. -v /usr/mysql/data:/var/lib/mysql \
    7. -v /usr/mysql/conf:/etc/mysql/conf.d \
    8. -v /usr/mysql/init:/docker-entrypoint-initdb.d \
    9. mysql

    然后就可以连接了

    常见操作指令

    1. # 4.查看root目录,可以发现~/mysql/data目录已经自动创建好了
    2. ls -l mysql
    3. # 结果:
    4. 总用量 4
    5. drwxr-xr-x. 2 root root 20 519 15:11 conf
    6. drwxr-xr-x. 7 polkitd root 4096 519 15:11 data
    7. drwxr-xr-x. 2 root root 23 519 15:11 init
    8. # 查看data目录,会发现里面有大量数据库数据,说明数据库完成了初始化
    9. ls -l data
    10. # 5.查看MySQL容器内数据
    11. # 5.1.进入MySQL
    12. docker exec -it mysql mysql -uroot -p123
    13. # 5.2.查看编码表
    14. show variables like "%char%";
    15. # 5.3.结果,发现编码是utf8mb4没有问题
    16. +--------------------------+--------------------------------+
    17. | Variable_name | Value |
    18. +--------------------------+--------------------------------+
    19. | character_set_client | utf8mb4 |
    20. | character_set_connection | utf8mb4 |
    21. | character_set_database | utf8mb4 |
    22. | character_set_filesystem | binary |
    23. | character_set_results | utf8mb4 |
    24. | character_set_server | utf8mb4 |
    25. | character_set_system | utf8mb3 |
    26. | character_sets_dir | /usr/share/mysql-8.0/charsets/ |
    27. +--------------------------+--------------------------------+
    28. # 6.查看数据
    29. # 6.1.查看数据库
    30. show databases;
    31. # 结果,hmall是黑马商城数据库
    32. +--------------------+
    33. | Database |
    34. +--------------------+
    35. | hmall |
    36. | information_schema |
    37. | mysql |
    38. | performance_schema |
    39. | sys |
    40. +--------------------+
    41. 5 rows in set (0.00 sec)
    42. # 6.2.切换到hmall数据库
    43. use hmall;
    44. # 6.3.查看表
    45. show tables;
    46. # 结果:
    47. +-----------------+
    48. | Tables_in_hmall |
    49. +-----------------+
    50. | address |
    51. | cart |
    52. | item |
    53. | order |
    54. | order_detail |
    55. | order_logistics |
    56. | pay_order |
    57. | user |
    58. +-----------------+
    59. # 6.4.查看address表数据
    60. +----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
    61. | id | user_id | province | city | town | mobile | street | contact | is_default | notes |
    62. +----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
    63. | 59 | 1 | 北京 | 北京 | 朝阳区 | 13900112222 | 金燕龙办公楼 | 李佳诚 | 0 | NULL |
    64. | 60 | 1 | 北京 | 北京 | 朝阳区 | 13700221122 | 修正大厦 | 李佳红 | 0 | NULL |
    65. | 61 | 1 | 上海 | 上海 | 浦东新区 | 13301212233 | 航头镇航头路 | 李佳星 | 1 | NULL |
    66. | 63 | 1 | 广东 | 佛山 | 永春 | 13301212233 | 永春武馆 | 李晓龙 | 0 | NULL |
    67. +----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
    68. 4 rows in set (0.00 sec)

    可以自己试试

    exit退出

    可以创建一个网络

    docker network create network1

    # 2.然后查看网络

    docker network ls

    # 3.让dd和mysql都加入该网络,注意,在加入网络时可以通过--alias给容器起别名 # 这样该网络内的其它容器可以用别名互相访问!

    # 3.1.mysql容器,指定别名为db,另外每一个容器都有一个别名是容器名

    docker network connect network1 mysql --alias db

    我这里就不用了

    docker network connect network1 mysql

     docker network inspect network1

    可以进入容器

    docker exec -it 容器名称 bash

    二、安装elasticsearch

    1、直接安装

    docker network create hm-net
    1. docker run -d \
    2. --name es \
    3. -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    4. -e "discovery.type=single-node" \
    5. -v es-data:/usr/share/elasticsearch/data \
    6. -v es-plugins:/usr/share/elasticsearch/plugins \
    7. --privileged \
    8. --network hm-net \
    9. -p 9200:9200 \
    10. -p 9300:9300 \
    11. elasticsearch:7.12.1

    2、分步安装(如果下载不了)

    2.1 创建网络(单点部署)

    因为我们还需要部署 kibana 容器,因此需要让 es 和 kibana 容器互联,所有先创建一个网络:

    docker network create es-net

    2.2加载镜像

    采用的版本为 7.12.1 的 elasticsearch;自己 pull 是非常大的有 1G 左右 

    百度网盘

    链接: https://pan.baidu.com/s/1Xa2nhYn3yX4i1e9Rt8mE_w

    提取码: ri83 

    docker load -i es.tar

    2.3 运行
    1. docker run -d \
    2. --name es \
    3. -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    4. -e "discovery.type=single-node" \
    5. -v es-data:/usr/share/elasticsearch/data \
    6. -v es-plugins:/usr/share/elasticsearch/plugins \
    7. --privileged \
    8. --network es-net \
    9. -p 9200:9200 \
    10. -p 9300:9300 \
    11. elasticsearch:7.12.1

    命令解释:

    -e "cluster.name=es-docker-cluster":设置集群名称
    -e "http.host=0.0.0.0":监听的地址,可以外网访问
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
    -e "discovery.type=single-node":非集群模式
    -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
    -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
    -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
    --privileged:授予逻辑卷访问权
    --network es-net :加入一个名为es-net的网络中
    -p 9200:9200:端口映射配置
    浏览路径为:9200 端口

     

     三、安装Kibana

    1、直接安装

    1. docker run -d \
    2. --name kibana \
    3. -e ELASTICSEARCH_HOSTS=http://es:9200 \
    4. --network=hm-net \
    5. -p 5601:5601 \
    6. kibana:7.12.1

     2、分布安装(网络下载不了就用)

    2.1下载

    链接: https://pan.baidu.com/s/1K1Eu50epB7FsXo_unHwwCA 提取码: jwqq 


    2.2解压
    docker load -i kibana.tar

     

     2.3运行 docker 命令,部署 kibana
    1. docker run -d \
    2. --name kibana \
    3. -e ELASTICSEARCH_HOSTS=http://es:9200 \
    4. --network=es-net \
    5. -p 5601:5601 \
    6. kibana:7.12.1

    --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
    -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
    -p 5601:5601:端口映射配置

     kibana启动一般比较慢,需要多等待一会,可以通过命令:

    docker logs -f kibana

    如果有下面,说明成功了

     

    浏览路径为:5601 端口 

    3.安装 IK 分词器

    3.1.在线安装 ik 插件(方法一)
    1. # 进入容器内部
    2. docker exec -it elasticsearch /bin/bash
    3. # 在线下载并安装
    4. ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
    5. #退出
    6. exit
    7. #重启容器
    8. docker restart elasticsearch

     3.2.离线安装 ik 插件(方法二)
    3.2.1.查询数据卷目录
    docker volume inspect es-plugins

    显示结果:

    1. [
    2. {
    3. "CreatedAt": "2024-07-09T10:39:55+08:00",
    4. "Driver": "local",
    5. "Labels": null,
    6. "Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
    7. "Name": "es-plugins",
    8. "Options": null,
    9. "Scope": "local"
    10. }
    11. ]
     3.2.2百度网盘下载

     链接: https://pan.baidu.com/s/18e5I1V8uibD5NTxFJI7IFg 提取码: 2bk7 

    cd /var/lib/docker/volumes/es-plugins/_data
    3.2.3解压分词器安装包

    3.2.4. 重启容器
    docker restart es

    查看启动日志

    docker logs -f es

    测试

    IK分词器包含两种模式:

    • ik_smart:最少切分
    • ik_max_word:最细切分

    4. 扩展词词典

    在IKAnalyzer.cfg.xml配置文件内容添加:

    1. "1.0" encoding="UTF-8"?>
    2. properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    3. <properties>
    4. <comment>IK Analyzer 扩展配置comment>
    5. <entry key="ext_dict">ext.dicentry>
    6. properties>
    新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改
    重启elasticsearch

    1. docker restart es
    2. # 查看 日志
    3. docker logs -f elasticsearch

    日志中已经成功加载ext.dic配置文件

    5)测试效果:

    注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑

    5. 停用词词典


    在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。

    IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。

    IKAnalyzer.cfg.xml配置文件内容添加:
    在 stopword.dic 添加停用词
    重启elasticsearch

    1. # 重启服务
    2. docker restart elasticsearch
    3. docker restart kibana
    4. # 查看 日志
    5. docker logs -f elasticsearch

    日志中已经成功加载stopword.dic配置文件

    测试效果:

    注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑

    6.部署es集群

    部署es集群可以直接使用docker-compose来完成,不过要求你的Linux虚拟机至少有4G的内存空间

    1. version: '2.2'
    2. services:
    3. es01:
    4. image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
    5. container_name: es01
    6. environment:
    7. - node.name=es01
    8. - cluster.name=es-docker-cluster
    9. - discovery.seed_hosts=es02,es03
    10. - cluster.initial_master_nodes=es01,es02,es03
    11. - bootstrap.memory_lock=true
    12. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    13. ulimits:
    14. memlock:
    15. soft: -1
    16. hard: -1
    17. volumes:
    18. - data01:/usr/share/elasticsearch/data
    19. ports:
    20. - 9200:9200
    21. networks:
    22. - elastic
    23. es02:
    24. image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
    25. container_name: es02
    26. environment:
    27. - node.name=es02
    28. - cluster.name=es-docker-cluster
    29. - discovery.seed_hosts=es01,es03
    30. - cluster.initial_master_nodes=es01,es02,es03
    31. - bootstrap.memory_lock=true
    32. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    33. ulimits:
    34. memlock:
    35. soft: -1
    36. hard: -1
    37. volumes:
    38. - data02:/usr/share/elasticsearch/data
    39. networks:
    40. - elastic
    41. es03:
    42. image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
    43. container_name: es03
    44. environment:
    45. - node.name=es03
    46. - cluster.name=es-docker-cluster
    47. - discovery.seed_hosts=es01,es02
    48. - cluster.initial_master_nodes=es01,es02,es03
    49. - bootstrap.memory_lock=true
    50. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    51. ulimits:
    52. memlock:
    53. soft: -1
    54. hard: -1
    55. volumes:
    56. - data03:/usr/share/elasticsearch/data
    57. networks:
    58. - elastic
    59. volumes:
    60. data01:
    61. driver: local
    62. data02:
    63. driver: local
    64. data03:
    65. driver: local
    66. networks:
    67. elastic:
    68. driver: bridge
    docker-compose up

     具体操作参考:Elasticsearch-CSDN博客文章浏览阅读879次,点赞15次,收藏21次。ES是⼀个使⽤Java语⾔并且基于Lucene编写的搜索引擎框架,他提供了分布式的全⽂搜索功能,提供了⼀个统⼀的基于RESTful⻛格的WEB接⼝,官⽅客户端也对多种语⾔都提供了相应的API。LuceneLucene本身就是⼀个搜索引擎的底层。分布式:ES主要是为了突出他的横向扩展能⼒。全⽂检索:将⼀段词语进⾏分词,并且将分出的单个词语统⼀的放到⼀个分词库中,在搜索时,根据关键字去分词库中检索,找到匹配的内容。(倒排索引)RESTful⻛格的WEB。https://blog.csdn.net/qq_67832732/article/details/139054444

    四、安装MongoDB

    1.docker 拉取mysql镜像

    docker pull mongo:latest

    2.运行容器

    创建外部挂载的文件并进行授权

    1. mkdir -p /mydata/mongo/config
    2. mkdir -p /mydata/mongo/data
    3. mkdir -p /mydata/mongo/logs
    4. touch /mydata/mongo/config/mongod.conf
    5. chmod 777 /mydata/mongo

    然后,使用编辑器打开mongod.conf文件,

    1. cd /mydata/mongo/config
    2. vim mongod.conf

    并添加以下内容: 

    1. # 数据库存储路径
    2. dbpath=/mydata/mongo/data
    3. # 日志文件路径
    4. logpath=/mydata/mongo/logs/mongod.log
    5. # 监听的端口
    6. port=27017
    7. # 允许所有的 IP 地址连接
    8. bind_ip=0.0.0.0
    9. # 启用日志记录
    10. journal=true
    11. # 是否后台运行
    12. fork=true
    13. # 启用身份验证
    14. #auth=true

    运行MongoDB容器

    1. docker run -dit --name mongo \
    2. -p 27017:27017 \
    3. -v /mydata/mongo/config/mongod.conf:/etc/mongod.conf \
    4. -v /mydata/mongo/data:/data/db \
    5. -v /mydata/mongo/logs:/var/log/mongodb \
    6. -e MONGO_INITDB_ROOT_USERNAME=admin \
    7. -e MONGO_INITDB_ROOT_PASSWORD=123456 \
    8. --restart=always \
    9. mongo

    参数说明

    1. -i:表示运行容器
    2. -t:表示容器启动后进入其命令行
    3. -d:守护式方式创建容器在后台运行
    4. -name:容器名称
    5.  -p 27017:27017     端口映射    前面是外部访问端口:后面内部开发的端口,mongoDB默认是27017端口
    6.  -v /mydata/mongo/data:/data/db  给容器内部的数据文件指向mongodbdata ,即删除了容器,容器数据也不会丢失,下次创建容器继续挂载到/mydata/mongo/data即可看到删除容器之前的数据
    7. -e MONGO_INITDB_ROOT_USERNAME=admin
    8. -e MONGO_INITDB_ROOT_PASSWORD=123456  指定容器内的环境变量 初始化容器账号、密码
    9. --restart=always   容器挂掉后自动重启

    进入容器内部

    1. docker exec -it mongo /bin/mongosh
    2. //
    3. docker exec -it mongo bash
    4.  
    5. //登录容器
    6. mongo admin -u admin -p 123456     -u 后面的是创建容器指定的账号   -p 后面跟的是创建容器指定的密码


    说明:
    如果MongoDB6.0及以上使用:
    docker exec -it mongo /bin/mongosh
    如果是6.0以下的版本使用:
    docker exec -it mongo /bin/mongo

    mongo中各个角色对应的权限


    权限    说明
    read    允许用户读取指定数据库
    readWrite    允许用户读写指定数据库
    dbAdmin    允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin    允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
    clusterAdmin    只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
    readAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
    root    只在admin数据库中可用。超级账号,超级权限

    进入mongodb

    docker exec -it 容器名称 mongo

    五、安装redis

    docker run --restart=always -p 6379:6379 --name myredis -d redis:6.2.1  --requirepass ningzaichun

     或

    1. docker run --restart=always \
    2. -p 6379:6379 \
    3. --name myredis \
    4. -v /home/dj/redis/redis.conf:/etc/redis/redis.conf \
    5. -v /home/dj/redis/data:/data \
    6. -d redis:7.0.12 redis-server /etc/redis/redis.conf

    docker使用 参考地址CentOS Docker 安装 | 菜鸟教程 (runoob.com)

    安装redis参考

    https://www.runoob.com/docker/docker-install-redis.html

    5.2.1 redis镜像拉取 

    查看可用的redis版本,执行命令:docker search redis

    拉取Redis镜像:从Docker Hub上获取Redis官方镜像,执行命令:docker pull <镜像名称>:<版本号>

    docker pull redis

    如果拉取失败就换源

    yum install -y yum-utils
    
    1. yum-config-manager \
    2. --add-repo \
    3. https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

     1. 挂载redis的配置文件:redis.conf
    (1) 建立配置文件放置目录,执行命令:mkdir 目录/redis/conf/
    (2) 生成配置文件,执行命令:touch redis.conf
    (3) 写入内容:redis.conf的标准文件在redis官网也可以找到

    1. # bind 192.168.1.100 10.0.0.1
    2. # bind 127.0.0.1 ::1
    3. #bind 127.0.0.1
    4. protected-mode no
    5. port 6379
    6. tcp-backlog 511
    7. requirepass 000415
    8. timeout 0
    9. tcp-keepalive 300
    10. daemonize no
    11. supervised no
    12. pidfile /var/run/redis_6379.pid
    13. loglevel notice
    14. logfile ""
    15. databases 30
    16. always-show-logo yes
    17. save 900 1
    18. save 300 10
    19. save 60 10000
    20. stop-writes-on-bgsave-error yes
    21. rdbcompression yes
    22. rdbchecksum yes
    23. dbfilename dump.rdb
    24. dir ./
    25. replica-serve-stale-data yes
    26. replica-read-only yes
    27. repl-diskless-sync no
    28. repl-disable-tcp-nodelay no
    29. replica-priority 100
    30. lazyfree-lazy-eviction no
    31. lazyfree-lazy-expire no
    32. lazyfree-lazy-server-del no
    33. replica-lazy-flush no
    34. appendonly yes
    35. appendfilename "appendonly.aof"
    36. no-appendfsync-on-rewrite no
    37. auto-aof-rewrite-percentage 100
    38. auto-aof-rewrite-min-size 64mb
    39. aof-load-truncated yes
    40. aof-use-rdb-preamble yes
    41. lua-time-limit 5000
    42. slowlog-max-len 128
    43. notify-keyspace-events ""
    44. hash-max-ziplist-entries 512
    45. hash-max-ziplist-value 64
    46. list-max-ziplist-size -2
    47. list-compress-depth 0
    48. set-max-intset-entries 512
    49. zset-max-ziplist-entries 128
    50. zset-max-ziplist-value 64
    51. hll-sparse-max-bytes 3000
    52. stream-node-max-bytes 4096
    53. stream-node-max-entries 100
    54. activerehashing yes
    55. hz 10
    56. dynamic-hz yes
    57. aof-rewrite-incremental-fsync yes
    58. rdb-save-incremental-fsync yes

     2. 挂载redis的持久化文件
    建立数据文件放置目录,执行命令:mkdir 目录/redis/data/

    3.3 启动redis容器

    1. docker run -p 6379:6379 --restart=always \
    2. --log-opt max-size=100m \
    3. --log-opt max-file=2 \
    4. --name myredis \
    5. -v /root/redis/conf/redis.conf:/etc/redis/redis.conf \
    6. -v /root/redis/data:/data \
    7. -d redis redis-server /etc/redis/redis.conf \
    8. --appendonly yes --requirepass 123456

    参数说明:
    1.-restart=always 总是开机启动
    2.-log 记录日志
    3.-p 端口映射
    4.-name 容器名
    5.-v 数据卷挂载
    6.-d redis 后台启动redis
    7.redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf,也就是linux下的 /home/redis/myredis/myredis.conf
    8.-appendonly yes 开启持久化
    9.-requirepass 123456 设置密码

     简单的启动命令示例:docker run --name myredis -p 6379:6379 -d redis

    查看本地redis镜像,执行命令: 

    docker images 

     关闭容器命令:docker stop <容器名>
    示例:docker stop myredis

    3.4 验证Redis容器是否正常运行

    1. 查看容器的运行信息,验证Redis容器是否正常运行:docker ps
    2. 查看指定容器状态:docker ps -a | grep myredis
    3. 查看容器运行日志:docker logs --since 30m <容器名>此处 --since 30m 为查看此容器30分钟之内的日志情况
    4. 容器内部连接测试:docker exec -it <容器名> /bin/bash
    5. 查看所有在运行的容器:docker ps -a

    6. 关闭容器:docker stop <容器名>
      删除容器:docker rm <容器名>
      查看全部镜像 命令:docker images
      删除镜像 命令 :docker rmi <容器 id>

    六、安装nginx

    docker pull nginx:1.24.0
    
    docker run -p 80:80 -d --name nginx nginx:1.24.0
    

    拷贝 Nginx 主配置文件/etc/nginx/nginx.conf

    1. # nginx容器名、/etc/nginx/nginx.conf 配置文件容器内的地址
    2. # D:\Programing\Docker\volumns\nginx\conf 宿主机上拷贝的目标地址
    3. docker cp nginx:/etc/nginx/nginx.conf D:\Programing\Docker\volumns\nginx\conf

    Nginx 主配置文件包含了影响 Nginx 全局行为的命令,包括事件处理、HTTP 服务器的基本配置(如监听端口、文件路径等)、日志文件位置以及其他重要配置。

     拷贝 html 目录:/usr/share/nginx/html

    docker cp nginx:/usr/share/nginx/html D:\Programing\Docker\volumns\nginx
    

    这是 Nginx 的默认文档根目录。当您使用 Nginx 来提供静态网页服务时,放置在此目录下的文件和目录将可以通过 web 访问。(注:可以在配置文件 server 块中,使用 root 指令指定根目录)

    正式运行镜像

    拷贝文件完成后,删除第一次试运行的 nginx 容器:

     正式运行 nginx,将宿主机上的配置文件和文档根目录挂载到容器上:

    1. # 多行便于展示()
    2. docker run -p 81:80 \
    3. --network api-my_net \
    4. -d --name nginx \
    5. -v D:\Programing\Docker\volumns\nginx\conf\nginx.conf:/etc/nginx/nginx.conf \
    6. -v D:\Programing\Docker\volumns\nginx\conf\conf.d:/etc/nginx/conf.d \
    7. -v D:\Programing\Docker\volumns\nginx\html:nginx:/usr/share/nginx/html \
    8. nginx:1.24.0
    9. # 可直接复制该行命令运行
    10. docker run -p 81:80 --network my_net -d --name nginx -v D:\Programing\Docker\volumns\nginx\conf\nginx.conf:/etc/nginx/nginx.conf -v D:\Programing\Docker\volumns\nginx\conf\conf.d:/etc/nginx/conf.d -v D:\Programing\Docker\volumns\nginx\html:/usr/share/nginx/html nginx:1.24.0

    参数解释:

    --network:将容器加入到名为 my_net 的网络。注:如果该网络不存在,docker 会报错。若网络不存在,需要执行docker network create my_net创建。
    -p:端口映射,冒号前为宿主机端口,冒号后为容器内的端口,即宿主机上访问 81 端口的 HTTP 请求会被交给 nginx 容器的 80 端口。
    -d:后台运行容器;
    --name:指定容器名称,本例中名称为 nginx。
    -v:挂载配置文件、html 目录到宿主机;冒号前为宿主机文件路径,冒号后为挂载到容器中的路径。可以看到宿主机被挂载的三个目录/文件是第一次运行时从容器内拷贝出来的,

    七、安装nacos

    docker pull nacos/nacos-server:v2.1.0-slim
    2.2.1.创建日志文件夹、配置文件
    mkdir -p /root/apply/docker/apply/nacos/logs/
    
    mkdir -p /root/apply/docker/apply/nacos/init.d/

    3.2.2.配置文件运行nacos

    1. docker run -d \
    2. --name nacos \
    3. -p 8848:8848 \
    4. -p 9848:9848 \
    5. -p 9849:9849 \
    6. --privileged=true \
    7. --restart=always \
    8. -e JVM_XMS=256m \
    9. -e JVM_XMX=256m \
    10. -e MODE=standalone \
    11. -e PREFER_HOST_MODE=hostname \
    12. -e SPRING_DATASOURCE_PLATFORM=mysql \
    13. -e MYSQL_SERVICE_HOST=192.168.42.129 \
    14. -e MYSQL_SERVICE_PORT=3306 \
    15. -e MYSQL_SERVICE_DB_NAME=nacos210 \
    16. -e MYSQL_SERVICE_USER=root \
    17. -e MYSQL_SERVICE_PASSWORD=123 \
    18. -v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \
    19. -v /root/apply/docker/apply/nacos/init.d/custom.properties:/etc/nacos/init.d/custom.properties \
    20. -v /root/apply/docker/apply/nacos/data:/home/nacos/data \
    21. nacos/nacos-server:v2.1.0-slim

    1. -e MYSQL_SERVICE_HOST=192.168.42.129 //此处是数据库地址 (数据库也在这个docker中)
    2. -e MYSQL_SERVICE_PORT=3306 // 数据库端口
    3. -e MYSQL_SERVICE_DB_NAME=nacos210//数据库名
    4. -e MYSQL_SERVICE_USER=root // 数据库账号
    5. -e MYSQL_SERVICE_PASSWORD=123 //数据库密码

    5.解读
     

    1. docker 启动容器
    2. docker 启动容器
    3. docker run \
    4. 容器名称叫nacos -d后台运行
    5. --name nacos -d \
    6. nacos默认端口8848 映射到外部端口8848
    7. -p 8848:8848 \
    8. naocs 应该是2.0版本以后就需要一下的两个端口 所以也需要开放
    9. -p 9848:9848 
    10. -p 9849:9849 
    11. --privileged=true \
    12. docker重启时 nacos也一并重启
    13. --restart=always \
    14. -e 配置 启动参数
    15. 配置 jvm
    16. -e JVM_XMS=256
    17. -e JVM_XMX=256m \
    18. 单机模式
    19. -e MODE=standalone 
    20. -e PREFER_HOST_MODE=hostname \
    21. 数据库是mysql 配置持久化 不使用nacos自带的数据库
    22. -e SPRING_DATASOURCE_PLATFORM=mysql \
    23. 写自己的数据库地址
    24. -e MYSQL_SERVICE_HOST=###### \
    25. 数据库端口号
    26. -e MYSQL_SERVICE_PORT=3306 \
    27. mysql的数据库名称
    28. -e MYSQL_SERVICE_DB_NAME=nacos \
    29. mysql的账号密码
    30. -e MYSQL_SERVICE_USER=root 
    31. -e MYSQL_SERVICE_PASSWORD=root \
    32. 配置mysql时区
    33. -e MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai \
    34. -v 映射docker内部的文件到docker外部 我这里将nacos的日志 数据 以及配置文件 映射出来
    35. 映射日志
    36. -v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \
    37. 映射配置文件 (应该没用了 因为前面已经配置参数了)
    38. -v /root/apply/docker/apply/nacos/init.d/custom.properties:/etc/nacos/init.d/custom.properties \
    39. 映射nacos的本地数据 也没啥用因为使用了mysql
    40. -v /root/apply/docker/apply/nacos/data:/home/nacos/data \
    41. 启动镜像名称(指定了v2.1.0-slim这个版本)
    42. nacos/nacos-server:v2.1.0-slim

    八、安装rabbitmq

    链接: https://pan.baidu.com/s/1JZccwhuxvJHticF7LWg8yw 提取码: hw7w 

    上传mq.tar

    加载镜像

    docker load -i mq.tar

    运行

    1. docker run \
    2. -e RABBITMQ_DEFAULT_USER=cqh \
    3. -e RABBITMQ_DEFAULT_PASS=cqh \
    4. -v mq-plugins:/plugins \
    5. --name mq \
    6. --hostname mq \
    7. -p 15672:15672 \
    8. -p 5672:5672 \
    9. --network es-net\
    10. -d \
    11. rabbitmq:3.8-management

    九、安装禅道

    拉取镜像

    sudo docker pull hub.zentao.net/app/zentao:18.5

     

    其他镜像版本参

    https://hub.docker.com/r/easysoft/zentao/tags

     

    创建docker网络驱动

    sudo docker network create --subnet=[ip范围] [网络驱动名] 
    • ip范围:例如172.172.172.0/24的意思是,IP可以指定范围为172.172.172.1到172.172.172.254;
    • 网络驱动名:创建的网络驱动名,可随意指定;

    例如

    sudo docker network create --subnet=172.172.172.0/24 zentaonet 

     启动禅道容器

    1. sudo docker run \
    2. --name [容器名] \
    3. -p [主机端口]:80 \
    4. --network=[网络驱动名] \
    5. --ip [容器IP] \
    6. --mac-address [mac地址] \
    7. -v [主机禅道目录]:/data \
    8. -e MYSQL_INTERNAL=true \
    9. -d hub.zentao.net/app/zentao:[镜像标签]

    参数说明:

    • 容器名:启动的容器名字,可随意指定;
    • 主机端口:主机端口为web访问端口;
    • 网络驱动名:上文创建的网络驱动名 zentaonet
    • 容器IP:在网络驱动范围内选择一个作为该容器的固定ip;
    • mac地址:指定固定的mac地址,建议范围为02:42:ac:11:00:00 到 02:42:ac:11:ff:ff;
    • 主机禅道目录:必须指定,方便附件等数据的持久化;
    • MYSQL_INTERNAL=true:启用容器内置MySQL,默认用户名为 root,密码是 123456
    • 镜像标签:禅道版本

    例如:在主机上创建空目录 /data/zentao,执行如下命令

    1. sudo docker run \
    2. --name zentao \
    3. -p 80:80 \
    4. --network=zentaonet \
    5. --ip 172.172.172.172 \
    6. --mac-address 02:42:ac:11:00:00 \
    7. -v /data/zentao:/data \
    8. -e MYSQL_INTERNAL=true \
    9. -d hub.zentao.net/app/zentao:18.5
    1. sudo docker run \
    2. --name zentao \
    3. -p 80:80 \
    4. --network=es-net \
    5. --mac-address 02:42:ac:11:00:00 \
    6. -v /data/zentao:/data \
    7. -e MYSQL_INTERNAL=true \
    8. -d hub.zentao.net/app/zentao:18.5

    注意:

    • 如果需要远程连接数据库,可以增加一个端口映射 -p [主机端口]:3306
    • 如果在单个主机上部署多个禅道系统,只需要指定不同的 [容器名]、[主机端口]、[容器IP]、[mac地址]、[禅道目录]即可部署多个禅道系统,例如:
    1. sudo docker run \
    2. --name zentao2 \
    3. -p 8080:80 \
    4. -p 3306:3306 \
    5. --network=zentaonet \
    6. --ip 172.172.172.173 \
    7. --mac-address 02:42:ac:11:00:01 \
    8. -e MYSQL_INTERNAL=true \
    9. -v /data/zentao2:/data \
    10. -d hub.zentao.net/app/zentao:18.5

     查看容器是否启动成功

    执行如下命令查看容器是否启动成功,如果没有则启动失败,去掉-d选项进行前台运行调试容器,如有任何问题请咨询禅道商务同事。

    1. # 查看禅道容器
    2. docker ps | grep zentao
    3. # 查看禅道容器日志
    4. docker logs -f zentao

    开始安装

     

     

    后面都是无脑操作

    最后 浏览器直接访问 http://宿主机ip:宿主机映射端口

    升级禅道

     推荐用按照此文档升级

    https://www.zentao.net/book/zentaopms/586.html
    1 先停止禅道容器,为备份数据做准备
    1. # 停止禅道容器
    2. docker stop zentao
    3. # 删除容器
    4. docker rm zentao
    2 备份禅道数据

    为安全起见,将上文所述的 [主机禅道目录] 进行备份,例如将 /data/zentao 进行拷贝至主机其他目录。

    cp -rp /data/zentao /data/zentao_bak_`date +%Y%m%d` 
    3 拉取新版本禅道镜像
    1. docker pull hub.zentao.net/app/zentao:[新版本]
    2. # 如
    3. docker pull hub.zentao.net/app/zentao:18.7
    4 启禅道容器
    1. sudo docker run \
    2. --name zentao \
    3. -p 80:80 \
    4. --network=zentaonet \
    5. --ip 172.172.172.172 \
    6. --mac-address 02:42:ac:11:00:00 \
    7. -v /data/zentao:/data \
    8. -e MYSQL_INTERNAL=true \
    9. -d hub.zentao.net/app/zentao:18.7

    访问 http://你的ip:端口/ 按照提示完成升级

    安装参

    https://www.zentao.net/book/zentaopmshelp/405.html

    十、docker安装

    1. 首先要安装一个yum工具
    2. yum install -y yum-utils
    3. # Step 2: 添加软件源信息
    4. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    5. # Step 3: 更新并安装 Docker-CE
    6. sudo yum makecache fast
    7. sudo yum -y install docker-ce
    8. # Step 4: 开启Docker服务
    9. sudo service docker start

     其他具体操作参考

    https://blog.csdn.net/qq_67832732/article/details/138058768

  • 相关阅读:
    jvm VisualVM工具的使用:使用jvisualvm监控远程tomcat jvm进程
    集成elastic-job分布式调度定时任务
    前端npm详解
    OpenCV(三十七):拟合直线、三角形和圆形
    突发奇想把云服务器刷成了黑群晖 ...
    做过启动盘的U盘怎么复原?三种方法教你
    【云原生 | Kubernetes 系列】K8s 实战 如何给应用注入数据
    Docker--提高下载速度的方法
    docker——入门介绍、组件介绍、安装与启动、镜像相关命令、容器相关命令、应用部署
    快速搭建云原生开发环境(k8s+pv+prometheus+grafana)
  • 原文地址:https://blog.csdn.net/qq_67832732/article/details/139299216