docker 安装镜像及使用命令

目录

  • 1. Mysql
  • 2. Redis
  • 3. Nginx
  • 4. Elasticsearch
    • 官网指导

docker pull 容器名:版本号 拉取容器, 不指定版本号默认最新的
run 运行
-d 后台运行
-p 3306:3306 -p是port 对外端口:对内端口
–name xyy_mysql 容器名称
-e MYSQL_ROOT_PASSWORD=123456 环境变量
-v 系统地址:docker地址 docker 地址映射系统地址

docker exec -it 容器名称 bash 可以进入该容器,进行操作

最后指定启动那个镜像:版本

1. Mysql

# 拉去mysql
docker pull mysql:version
# 启动mysql
docker run -p 3306:3306 --name xyy_mysql -e MYSQL_ROOT_PASSWORD=123456 -v D:/docker/mysql/data:/var/lib/mysql -d mysql:版本 --character-set-server=utf8mb4

后续不需要重复这么启动, 只需要以下方式即可启动, 其他同理

docker start xyy_mysql

2. Redis

docker pull redis:version
  1. 创建网络 里面有个IPAM.Config.Gateway 的值记下来, 是网络ip
    # 删除网络信息
    docker network rm redis_network
    # 重新创建子网指定subnet, 172.21这个很重要
    docker network create --subnet 172.21.0.0/16 redis_network
    # 查看网络信息 `IPAM.Config.Subnet`的值
    docker network inspect redis_network
    
    
  2. 创建本地磁盘和容器映射
    vim conf\node-1\redis.conf
    vim conf\node-2\redis.conf
    vim conf\node-3\redis.conf
    
    `vim redis.conf`
    # 分别写入以下配置
    port 6379 #端口
    bind 0.0.0.0 #开其他设备访问权限
    cluster-enabled yes #集群支持
    cluster-config-file nodes.conf # 节点配置文件
    cluster-node-timeout 5000 # 节点超时
    cluster-announce-ip 172.21.0.11 ##node2 node3 分别+1
    cluster-announce-port 6379
    cluster-announce-bus-port 16379
    appendonly yes #持久化
    requirepass 123456 # 密码
    
  3. 启动redis
    docker run -p 6371:6379 -p 16371:16379 --name redis-1 -v D:\docker\redis\data\node-1:/data -v D:\docker\redis\conf\node-1\redis.conf:/etc/redis/redis.conf --net redis_network --ip 172.21.0.11 -d redis redis-server /etc/redis/redis.conf
    docker run -p 6372:6379 -p 16372:16379 --name redis-2 -v D:\docker\redis\data\node-2:/data -v D:\docker\redis\conf\node-2\redis.conf:/etc/redis/redis.conf --net redis_network --ip 172.21.0.12 -d redis redis-server /etc/redis/redis.conf
    docker run -p 6373:6379 -p 16373:16379 --name redis-3 -v D:\docker\redis\data\node-3:/data -v D:\docker\redis\conf\node-3\redis.conf:/etc/redis/redis.conf --net redis_network --ip 172.21.0.13 -d redis redis-server /etc/redis/redis.conf
    
  4. 集群配置
    –cluster-replicas 1 表示每台主节点至少需要一个从节点
    	# 进入redis-1 控制台
    	docker exec -it redis-1 bash
    	# 集群配置
    	redis-cli –cluster [-replicas 1] create 172.21.0.11:6379 172.21.0.12:6379 172.21.0.13:6379
    
  5. 检查集群信息
    # 登录
    redis-cli -c 
    # 认证密码
    auth "123456"
    # 集群信息
    cluster info
    # 节点信息
    cluster nodes
    

3. Nginx

  1. 拉取nginx

    docker pull nginx:version
    
  2. 启动 nginx 并查看容器id

    docker run -p 9998:80 --name nginx -d nginx:版本
    docker ps # 查看容器id
    
  3. 将nginx中的conf文件复制出来

    docker下nginx的目录就是这里

    	docker cp 容器ID:/etc/nginx/nginx.conf /server/nginx/conf
    
  4. 创建几个文件夹

    mkdir -p /server/nginx/logs #日志
    mkdir -p /server/nginx/conf #配置
    
  5. 停止之前的镜像并删除

    docker stop nginx
    docker rm nginx
    
  6. 重新启动nginx镜像配置

    docker run -d -p 9999:80 --name nginx -v /server/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /server/nginx/logs:/var/log/nginx --privileged=true nginx:1.17.8
    

4. Elasticsearch

  1. 拉取es

    docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.3
    
  2. 创建网络

    docker network create es_network
    
  3. 创建映射文件夹

    mkdir -p D:/docker/es/conf
    mkdir -p D:/docker/es/data
    mkdir -p D:/docker/es/plugins
    echo "http.host : 0.0.0.0" >> D:/docker/es/conf/elasticsearch.yml
    
  4. 启动
    discovery.type=single-node 单节点启动

    docker run --name es -p 9200:9200 -p 9300:9300 \
    -e "discovery.type=single-node"\
    -e ES_JAVA_OPTS="-Xms64m -Xmx128m"
    -v D:/docker/es/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml\
    -v D:/docker/es/data:/usr/share/elasticsearch/data\
    -v D:/docker/es/plugins:/usr/share/elasticsearch/plugins\
    -d elasticsearch:8.13.3
    
    docker run --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -v D:/docker/es/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:/docker/es/data:/usr/share/elasticsearch/data -v D:/docker/es/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:8.13.3
    
  5. 下载ik分词器
    下载地址: https://github.com/infinilabs/analysis-ik/releases/tag/v8.13.3
    将对应下载好的zip安装包解压到 D:/docker/es/plugins 因为之前做了映射. (ps: 不要将压缩包放到目录下, 这个目录只放插件)

  6. 将ik分词器作为默认分词器
    ES的默认分词是standard, 会在分割中文时将每个汉字都拆分开,
    IK分词器有两种设置, 一种是 ik_smart 最少分片, 会将 “清华大学” 分为 “清华大学” , 另一种是 ik_max_word 最细分片 会将"清华大学" 分为 “清华”,“大学”

    PUT /school_index
    {
    	"setting":{
    		"index":{
    			"analysis.analyzer.default.type":"ik_max_word"
    		}	
    	}
    }
    

官网指导

官方指导链接: https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

集群模式下其中两个文件进行了修改:

  1. .env 文件
    # es 密码, 6位数起
    ELASTIC_PASSWORD=123456
    
    # kabana 密码, 6位数起
    KIBANA_PASSWORD=123456
    
    # es安装版本
    STACK_VERSION=8.13.3
    
    # 集群名称
    CLUSTER_NAME=docker-es-cluster
    
    # 简单模式或者试用模式(30)
    LICENSE=basic
    #LICENSE=trial
    
    # 映射ip, 如果指定端口则只有指定机器可以访问
    ES_PORT=9200
    #ES_PORT=127.0.0.1:9200
    
    # kabana端口
    KIBANA_PORT=5601
    #KIBANA_PORT=80
    
    # 内存大小(in bytes)
    MEM_LIMIT=1073741824
    
    # 名称前缀
    #COMPOSE_PROJECT_NAME=es
    
  2. docker-compose.yml 文件
    version: "2.2"
    
    services:
      setup:
        image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
        volumes:
          - D:/docker/es/config/certs:/usr/share/elasticsearch/config/certs
        user: "0"
        command: >
          bash -c '
            if [ x${ELASTIC_PASSWORD} == x ]; then
              echo "Set the ELASTIC_PASSWORD environment variable in the .env file";
              exit 1;
            elif [ x${KIBANA_PASSWORD} == x ]; then
              echo "Set the KIBANA_PASSWORD environment variable in the .env file";
              exit 1;
            fi;
            if [ ! -f config/certs/ca.zip ]; then
              echo "Creating CA";
              bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip;
              unzip config/certs/ca.zip -d config/certs;
            fi;
            if [ ! -f config/certs/certs.zip ]; then
              echo "Creating certs";
              echo -ne \
              "instances:\n"\
              "  - name: es01\n"\
              "    dns:\n"\
              "      - es01\n"\
              "      - localhost\n"\
              "    ip:\n"\
              "      - 127.0.0.1\n"\
              "  - name: es02\n"\
              "    dns:\n"\
              "      - es02\n"\
              "      - localhost\n"\
              "    ip:\n"\
              "      - 127.0.0.1\n"\
              "  - name: es03\n"\
              "    dns:\n"\
              "      - es03\n"\
              "      - localhost\n"\
              "    ip:\n"\
              "      - 127.0.0.1\n"\
              > config/certs/instances.yml;
              bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key;
              unzip config/certs/certs.zip -d config/certs;
            fi;
            echo "Setting file permissions"
            chown -R root:root config/certs;
            find . -type d -exec chmod 750 \{\} \;;
            find . -type f -exec chmod 640 \{\} \;;
            echo "Waiting for Elasticsearch availability";
            until curl -s --cacert config/certs/ca/ca.crt https://es01:9200 | grep -q "missing authentication credentials"; do sleep 30; done;
            echo "Setting kibana_system password";
            until curl -s -X POST --cacert config/certs/ca/ca.crt -u "elastic:${ELASTIC_PASSWORD}" -H "Content-Type: application/json" https://es01:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_PASSWORD}\"}" | grep -q "^{}"; do sleep 10; done;
            echo "All done!";
          '
        healthcheck:
          test: ["CMD-SHELL", "[ -f config/certs/es01/es01.crt ]"]
          interval: 1s
          timeout: 5s
          retries: 120
    
      es01:
        depends_on:
          setup:
            condition: service_healthy
        image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
        volumes:
          - D:/docker/es/config/certs:/usr/share/elasticsearch/config/certs
          - D:/docker/es/data/note01:/usr/share/elasticsearch/data
        ports:
          - ${ES_PORT}:9200
        environment:
          - node.name=es01
          - cluster.name=${CLUSTER_NAME}
          - cluster.initial_master_nodes=es01,es02,es03
          - discovery.seed_hosts=es02,es03
          - ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
          - bootstrap.memory_lock=true
          - xpack.security.enabled=true
          - xpack.security.http.ssl.enabled=true
          - xpack.security.http.ssl.key=certs/es01/es01.key
          - xpack.security.http.ssl.certificate=certs/es01/es01.crt
          - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.transport.ssl.enabled=true
          - xpack.security.transport.ssl.key=certs/es01/es01.key
          - xpack.security.transport.ssl.certificate=certs/es01/es01.crt
          - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.transport.ssl.verification_mode=certificate
          - xpack.license.self_generated.type=${LICENSE}
        mem_limit: ${MEM_LIMIT}
        ulimits:
          memlock:
            soft: -1
            hard: -1
        healthcheck:
          test:
            [
              "CMD-SHELL",
              "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
            ]
          interval: 10s
          timeout: 10s
          retries: 120
    
      es02:
        depends_on:
          - es01
        image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
        volumes:
          - D:/docker/es/config/certs:/usr/share/elasticsearch/config/certs
          - D:/docker/es/data/note02:/usr/share/elasticsearch/data
        environment:
          - node.name=es02
          - cluster.name=${CLUSTER_NAME}
          - cluster.initial_master_nodes=es01,es02,es03
          - discovery.seed_hosts=es01,es03
          - bootstrap.memory_lock=true
          - xpack.security.enabled=true
          - xpack.security.http.ssl.enabled=true
          - xpack.security.http.ssl.key=certs/es02/es02.key
          - xpack.security.http.ssl.certificate=certs/es02/es02.crt
          - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.transport.ssl.enabled=true
          - xpack.security.transport.ssl.key=certs/es02/es02.key
          - xpack.security.transport.ssl.certificate=certs/es02/es02.crt
          - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.transport.ssl.verification_mode=certificate
          - xpack.license.self_generated.type=${LICENSE}
        mem_limit: ${MEM_LIMIT}
        ulimits:
          memlock:
            soft: -1
            hard: -1
        healthcheck:
          test:
            [
              "CMD-SHELL",
              "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
            ]
          interval: 10s
          timeout: 10s
          retries: 120
    
      es03:
        depends_on:
          - es02
        image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
        volumes:
          - D:/docker/es/config/certs:/usr/share/elasticsearch/config/certs
          - D:/docker/es/data/note03:/usr/share/elasticsearch/data
        environment:
          - node.name=es03
          - cluster.name=${CLUSTER_NAME}
          - cluster.initial_master_nodes=es01,es02,es03
          - discovery.seed_hosts=es01,es02
          - bootstrap.memory_lock=true
          - xpack.security.enabled=true
          - xpack.security.http.ssl.enabled=true
          - xpack.security.http.ssl.key=certs/es03/es03.key
          - xpack.security.http.ssl.certificate=certs/es03/es03.crt
          - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.transport.ssl.enabled=true
          - xpack.security.transport.ssl.key=certs/es03/es03.key
          - xpack.security.transport.ssl.certificate=certs/es03/es03.crt
          - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.transport.ssl.verification_mode=certificate
          - xpack.license.self_generated.type=${LICENSE}
        mem_limit: ${MEM_LIMIT}
        ulimits:
          memlock:
            soft: -1
            hard: -1
        healthcheck:
          test:
            [
              "CMD-SHELL",
              "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
            ]
          interval: 10s
          timeout: 10s
          retries: 120
    
      kibana:
        depends_on:
          es01:
            condition: service_healthy
          es02:
            condition: service_healthy
          es03:
            condition: service_healthy
        image: docker.elastic.co/kibana/kibana:${STACK_VERSION}
        volumes:
          - D:/docker/es/config/certs:/usr/share/kibana/config/certs
          - D:/docker/es/data/kabana:/usr/share/kibana/data
        ports:
          - ${KIBANA_PORT}:5601
        environment:
          - SERVERNAME=kibana
          - ELASTICSEARCH_HOSTS=https://es01:9200
          - ELASTICSEARCH_USERNAME=kibana_system
          - ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
          - ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
        mem_limit: ${MEM_LIMIT}
        healthcheck:
          test:
            [
              "CMD-SHELL",
              "curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'",
            ]
          interval: 10s
          timeout: 10s
          retries: 120
    
    volumes:
      certs:
        driver: local
      esdata01:
        driver: local
      esdata02:
        driver: local
      esdata03:
        driver: local
      kibanadata:
        driver: local
    
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/594505.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT 4.0 直接用 !!!Code Copilot编程大模型、DALL-E AI绘图、绘制流程图、上传文件

嗨,你好呀,我是哪吒。 这一年最让人揪心的热点,就是各种层出不穷的AI技术。 原以为它只是短暂霸屏,但现实却赤裸裸展示了,什么叫AI抢走你的饭碗,连招呼都不打一声! 什么策划方案、公众号文案、营销卖点、…

计算机网络4——网络层7 VPN 和NAT,MPLS

文章目录 一、虚拟专用网VPN1、介绍2、工作原理 二、网络地址转换1、介绍2、工作原理2、注意事项 三、多协议标签交换MPLS1、介绍2、MPLS 的工作原理1)基本工作过程2)转发等价类 FEC 3、MPLS首部的位置与格式4、新一代的 MPLS 一、虚拟专用网VPN 1、介绍…

【Linux系统化学习】网络套接字(编写简单的UDP服务端和客户端)

目录 理解源IP地址和目的IP地址 认识端口号 端口号和进程ID的区别 源端口号和目的端口号 认识TCP和UDP协议 TCP协议 UDP协议 网络字节序 socket编程接口 socket常见API sockaddr结构 简单的UDP网络程序 UDP服务端 创建套接字 填充本地网络信息 绑定 收取消息 …

selenium 4.x 之验证码处理(python)

验证码处理 一般情况公司如果涉及web自动化测试需要对验证码进行处理的方式一般有一下几种: 关闭验证码功能(开发处理)设置万能验证码(开发处理)使用智能识别库进行验证 通过第三方打码平台识别验证码 1. 跳过验证功…

Activity工作流基本知识点

1.概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的…

MySql#MySql数据库基础

目录 一、什么是数据库 二、主流数据库 三、基本使用 1.连接服务器 2.使用 1.查看你数据库 2.创建数据库 ​编辑 ​编辑 ​编辑​编辑 3.使用数据库 ​编辑 4.创建数据库表 5.表中插入数据 6.服务器,数据库,表之间的关系 四、MySQL架构…

AI图书推荐:AI在语言学习教育领域的应用和挑战

这本书《AI在语言学习教育领域的应用和挑战》(AI in Language Teaching, Learning, and Assessment)由Fang Pan编辑,出版于IGI Global,主要探讨了人工智能(AI)在语言教育领域的应用、挑战以及潜在的益处。 …

Vue踩坑,less与less-loader安装,版本不一致

无脑通过npm i less -D安装less之后,继续无脑通过npm i less-loader -D安装less-loader出现如下错误: 解决方法: 1) npm uninstall less与 npm uninstall less-loader 2) 直接对其版本: npm i less3.0.4 -D npm i less-loader…

Jackson 中使用 Optional

介绍 在本文中,我们会对 Optional 类进行一些说明,并且会解释下如果在使用 Optional 类的时候可能在 Jackson 中进行序列化和反序列化的过程中出现的问题。 针对上面的问题,本文会将会介绍在 Jackson 中如何处理 Optional 对象,…

vue2项目升级到vue3经历分享3

当初花了1个半月将十几个微服务从mybatis升级为mybatis-plus,就很自信的认为前端vue2升级到vue3也不过so so,世界过程中却是折腾,写法乱七八糟,不兼容的问题一大堆。 1 操作dom元素 this.$refs.subject[index].$children[0].$chil…

「 网络安全常用术语解读 」通用配置枚举CCE详解

1. 背景介绍 NIST提供了安全内容自动化协议(Security Content Automation Protocol,SCAP)为漏洞描述和评估提供一种通用语言。SCAP组件包括: 通用漏洞披露(Common Vulnerabilities and Exposures, CVE):提供一个描述…

wordpress子比主题给文章内容加上密码查看

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤1.引入库2.读入数据第三步:文章内添加代码前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,…

乳制品粘性测试:操作流程详解

乳制品粘性测试:操作流程详解 在乳制品生产中,粘性测试是确保产品质量和口感的重要步骤。通过详细的操作流程,我们可以准确评估乳制品的粘性,为产品优化和品质控制提供有力支持。本文将详细介绍乳制品粘性测试的操作流程。 一、准…

应用层协议——http协议和https协议

目录 一、HTTP协议 1、概念 2、URL 二、HTTP协议格式 1、请求协议格式 2、响应协议格式 三、HTTP的请求方法 四、HTTP的状态码 五、HTTP常见的报头 六、HTTP和HTTPS 1、HTTPS协议 2、HTTPS的加密原理 1、基本概念 2、加密原理 通常我们程序员在网络编程的时候&am…

CSDN如何转载他人文章(超简单)

经常遇到一篇很好的文章&#xff0c;但是CSDN没有转载功能&#xff0c;所以需要我们自己处理一下。以谷歌浏览器打开某篇文章为例 一、按F12打开开发者工具 二、复制转载文章内容 按Ctrlf查找content_views&#xff0c;找到这一行<div id"content_views" class&…

2024项目拆解日均引流100+精准创业粉,全程干货

详情介绍 2024年项目拆解引流高质量创业粉&#xff0c;全程干货单日轻松引流100&#xff0c;项目拆解类视频本身引流效果就非常不错&#xff0c;视频内容针对性强直击创业粉内心&#xff0c;获客非常有效。做好视频钩子&#xff0c;和后端承接&#xff0c;赚钱没那么难。 课程…

没有精益管理内容的数字化,会是成功的数字化吗?

精益管理与数字化的结合被认为是制造业和企业管理中的一种重要转型策略。精益管理注重消除浪费、提升效率和质量&#xff0c;而数字化则通过技术手段来实现这一目标&#xff0c;两者的结合能够带来更高效、更智能的生产和管理方式。 首先&#xff0c;精益管理的核心理念是价值…

什么是HTTPS证书?怎么免费申请?——值得收藏

SSL证书的核心功能在于保障互联网数据传输的安全性和网站身份的可靠性。它通过加密通信防止信息被窃取或篡改&#xff0c;同时验证网站的真实身份&#xff0c;有效抵御钓鱼攻击&#xff0c;增强用户信任。此外&#xff0c;使用SSL证书还有助于提升网站在搜索引擎中的排名&#…

Docker 入门篇(六)-- idea 打包 docker 镜像流程

环境准备&#xff1a; idea 环境&#xff1a;IntelliJ IDEA 2021.3.1 (Ultimate Edition)docker 版本&#xff1a;v. 26.1.0准备 springboot jar 文件 &#xff1a;target/DockerDemo-0.0.1-SNAPSHOT.jardocker 可视化管理工具 portainer &#xff1a;v2.6.0 一. 配置docker远…
最新文章