zoukankan      html  css  js  c++  java
  • Linux 系统 Docker 安装与使用

    下载、安装 Docker

    centos 安装 docker 官方网址:https://docs.docker.com/engine/install/centos/

    1、卸载已经安装的docker旧版本

    如果机器之前已经安装过 docker,需要先执行命令,清除旧 docker

    sudo yum remove docker 
        docker-client 
        docker-client-latest 
        docker-common 
        docker-latest 
        docker-latest-logrotate 
        docker-logrotate 
        docker-engine
    

    2、设置 docker 镜像(阿里云镜像)

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

    3、安装 docker

    sudo yum install docker-ce docker-ce-cli containerd.io
    

    4、启动 docker

    sudo systemctl start docker
    

    5、配置 docker 自启动

    sudo systemctl enable docker
    

    6、验证 docker 是否安装成功

    image-20201129225348847

    配置 Docker 阿里云镜像

    这里使用的是 阿里云提供的镜像加速 ,登录并且设置密码之后在左侧的 Docker Hub 镜像站点 可以找到专属加速器地址,复制下来。

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://xedj96w5.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    Docker 常用命令

    docker 服务相关命令

    # 重启 docker 服务
    service docker restart
    # 关闭 docker 服务
    service docker stop
    # 启动 docker 服务
    service dockers start
    

    docker 镜像相关命令

    # 拉取镜像
    docker pull <镜像名:tag>
    # 查看镜像
    docker images
    # 删除镜像
    docker rmi 镜像ID
    # 强制删除镜像
    docker rmi -f 镜像ID
    docker rm <容器名 或者 容器ID>
    

    docker 容器相关命令

    # 查看当前运行的容器
    docker ps
    # 查看所有存在的容器
    docker ps -a
    # 启动容器
    docker start 容器名称/容器ID
    # 停止容器
    docker stop 容器名称/容器ID
    # 删除容器
    docker rm 容器名称/容器ID
    # 强制删除容器
    docker rm -f 容器名称/容器ID
    # 删除所有容器(谨慎操作)
    docker rm $(docker ps -a -q)
    # 查看容器日志
    docker logs -f 容器名称/容器ID
    # 进入容器
    docker exec -it 容器名称/容器ID /bin/bash
    

    docker 运行相关命令

    docker run -p 3306:3306 --name mysql 
    -v /mydata/mysql/log:/var/log/mysql 
    -v /mydata/mysql/data:/var/lib/mysql 
    -v /mydata/mysql/conf:/etc/mysql 
    -e MYSQL_ROOT_PASSWORD=root 
    -d mysql:5.7
    

    上面给出了一段 docker 容器运行命令,我们对其中一些关键参数进行分析:

    • 端口映射 -p:-p 3306:3306 表示将服务器 3306 端口映射到容器3306端口
    • 指定容器名称 --name
    • 数据卷映射 -v:例如,-v /mydata/mysql/log:/var/log/mysql 则表示将服务器上 /mydata/mysql/log 文件夹下的内容与容器中 /var/log/mysql 进行映射,这样改变容器外文件内容就会同步到容器中,更方便的对容器进行操作,是常用参数
    • 后台启动 -d

    Docker 安装 Mysql

    1、下载 mysql 镜像

    docker pull mysql:5.7
    

    2、启动 mysql 容器

    docker run -p 3306:3306 --name mysql 
    -v /mydata/mysql/log:/var/log/mysql 
    -v /mydata/mysql/data:/var/lib/mysql 
    -v /mydata/mysql/conf:/etc/mysql 
    -e MYSQL_ROOT_PASSWORD=root 
    -d mysql:5.7
    

    3、创建mysql配置文件

    vi /mydata/mysql/conf/my.cnf
    
    # 添加如下内容
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    

    4、重启 mysql

    docker restart mysql
    

    5、设置 mysql 自启动

    docker update mysql --restart=always
    

    Docker 安装 Redis

    1、下载 redis 镜像

    docker pull redis
    

    2、创建配置文件

    # 创建文件夹,与容器内部文件进行映射
    mkdir -p /mydata/redis/conf
    touch /mydata/redis/conf/redis.conf
    

    3、启动容器

    docker run -p 6379:6379 --name redis 
    -v /mydata/redis/data:/data 
    -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf 
    -d redis redis-server /etc/redis/redis.conf
    

    4、运行 redis 客户端

    docker exec -it redis redis-cli
    

    5、开启 aof 持久化

    vi /mydata/redis/conf/redis.conf
    # 添加如下内容
    appendonly yes
    

    6、重启 redis

    docker restart redis
    

    7、设置 redis 自启动

    docker update redis --restart=always
    

    Docker 安装 ELK

    1、下载 elasticsearch 和 kibana

    docker pull elasticsearch:7.4.2
    docker pull kibana:7.4.2
    

    2、配置

    # 创建文件夹,与容器内部文件夹映射
    mkdir -p /mydata/elasticsearch/config
    mkdir -p /mydata/elasticsearch/data
    mkdir -p /mydata/elasticsearch/data
    
    # 允许任意客户端连接es
    echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
    
    # 修改 /mydata/elasticsearch 文件夹下所有内容读写权限
    chmod -R 777 /mydata/elasticsearch/
    

    3、启动 elasticsearch 容器

    docker run --name elasticsearch -p 9200:9200 -p 9300:9300 
    -e  "discovery.type=single-node" 
    -e ES_JAVA_OPTS="-Xms64m -Xmx562m" 
    -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
    -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data 
    -v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins 
    -d elasticsearch:7.4.2 
    

    4、设置开机启动 elasticsearch

    docker update elasticsearch --restart=always
    

    5、启动 kibana 容器

    docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 -d kibana:7.4.2
    

    6、设置开机启动 kibana

    docker update kibana --restart=always
    

    Docker 安装 nginx

    1、随便启动一个 nginx 实例,只是为了复制出配置

    sudo docker run -p 80:80 --name nginx -d nginx:1.10
    

    2、将容器内的配置文件拷贝到 /mydata/nginx/conf/ 下

    sudo mkdir -p /mydata/nginx/html
    sudo mkdir -p /mydata/nginx/logs
    sudo mkdir -p /mydata/nginx/conf
    sudo docker container cp nginx:/etc/nginx/   /mydata/nginx/conf/ 
    #由于拷贝完成后会在config中存在一个nginx文件夹,所以需要将它的内容移动到conf中
    sudo mv /mydata/nginx/conf/nginx/* /mydata/nginx/conf/
    sudo rm -rf /mydata/nginx/conf/nginx
    # 修改 /mydata/nginx 文件夹读写权限
    sudo chmod -R 777 /mydata/nginx
    

    3、终止原容器

    sudo docker stop nginx
    

    4、删除原容器

    sudo docker rm nginx
    

    5、创建新的 nginx 容器

    sudo docker run -p 80:80 --name nginx 
     -v /mydata/nginx/html:/usr/share/nginx/html 
     -v /mydata/nginx/logs:/var/log/nginx 
     -v /mydata/nginx/conf/:/etc/nginx 
     -d nginx:1.10
    

    6、设置开机启动 nginx

    sudo docker update nginx --restart=always
    

    7、创建/mydata/nginx/html/index.html文件,测试是否能够正常访问

    #添加文件 index.html
    sudo echo '<h2>hello nginx!</h2>' >> /mydata/nginx/html/index.html
    
    #访问 http://nginx所在主机的IP:80/index.html
    

    Docker 安装 nacos

    1、拉取nacos镜像

    docker pull nacos/nacos-server
    
    1. 创建数据库

    MySQL创建数据库名为 nacos_config 并导入官方脚本
    nacos-db.sql

    3、配置

    mkdir -p /mydata/nacos/logs                
    mkdir -p /mydata/nacos/init.d
    touch /mydata/nacos/init.d/custom.properties
    chmod -R 777 /mydata/nacos
    

    4、启动 nacos 容器

    docker run -d --name nacos --network=host 
    -e MODE=standalone 
    -e JVM_XMS=256m 
    -e JVM_XMX=256m 
    -e SPRING_DATASOURCE_PLATFORM=mysql 
    -e MYSQL_SERVICE_HOST=localhost 
    -e MYSQL_SERVICE_PORT=3306 
    -e MYSQL_SERVICE_DB_NAME=nacos_config 
    -e MYSQL_SERVICE_USER=root 
    -e MYSQL_SERVICE_PASSWORD=root 
    -e MYSQL_DATABASE_NUM=1 
    -v /mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties 
    -v /mydata/nacos/logs:/home/nacos/logs 
    -p 8848:8848 
    nacos/nacos-server
    

    Docker 安装 seata-server

    一、准备工作

    1、Nacos安装和配置

    进入Nacos控制台,创建seata命名空间

    image-20210109161626697

    记住命名空间ID自定义为seata_namespace_id,后面需要

    2、 Seata数据库创建

    创建数据库名为seata,执行Seata的Github官方源码中提供的的MySQL数据库脚本

    MySQL脚本地址: https://github.com/seata/seata/blob/1.4.1/script/server/db/mysql.sql

    二、 seata-server安装

    1、随便启动一个 seata-server实例,只是为了复制出配置

    docker run -d --name seata -p 8091:8091 seataio/seata-server
    

    2、将容器内的配置文件拷贝到 /mydata/seata/ 下

    sudo mkdir -p /mydata/seata
    sudo docker cp seata:/seata-server  /mydata/seata
    

    3、修改配置

    修改registry.conf配置,类型选择nacos,namesapce为上文中在nacos新建的命名空间id即seata_namespace_id,精简如下:

    vim /mydata/seata/seata-server/resources/registry.conf
    
    registry {
      type = "nacos"
      loadBalance = "RandomLoadBalance"
      loadBalanceVirtualNodes = 10
    
      nacos {
        application = "seata-server"
        serverAddr = "127.0.0.1:8848"
        namespace = "seata_namespace_id"
        cluster = "default"
      }
    }
    config {
      type = "nacos"
      
      nacos {
        serverAddr = "127.0.0.1:8848"
        namespace = "seata_namespace_id"
        group = "SEATA_GROUP"
      }
    }
    

    4、终止原容器

    sudo docker stop seata
    

    5、删除原容器

    sudo docker rm -f seata
    

    6、推送Seata依赖配置至Nacos

    从Seata的GitHub官方源码获取配置文件(config.txt)和推送脚本文件(nacos/nacos-config.sh),复制到服务器

    地址:https://github.com/seata/seata/blob/develop/script/config-center

    因为脚本的关系,文件存放目录如下

    /mydata/seata/script
    └── config-center
        ├── config.txt
        └── nacos
            └── nacos-config.sh
    

    修改配置文件 config.txt

    vi /mydata/seata/script/config-center/config.txt
    

    修改事务组MySQL连接信息,修改信息如下:

    # 修改默认事务组
    service.vgroupMapping.mall_tx_group=default
    
    #修改mysql连接信息
    store.db.driverClassName=com.mysql.cj.jdbc.Driver
    store.db.url=jdbc:mysql://lcoalhost/seata?useUnicode=true&rewriteBatchedStatements=true
    store.db.user=root
    store.db.password=root
    

    执行推送命令

    sh /mydata/seata/script/config-center/nacos/nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t seata_namespace_id -u nacos -w nacos
    
    • -t seata_namespace_id 指定Nacos配置命名空间ID
    • -g SEATA_GROUP 指定Nacos配置组名称

    如果有 init nacos config fail. 报错信息,请检查修改信息,如果有属性修改提示failure,请修改config.txt中属性。

    如果出现类似 cat: /tmp/tmp.rRGz1B7MUP: No such file or directory 的错误不用慌,重新执行推送命令直至成功。

    推送执行完毕,到Nacos控制台查看配置是否已添加成功

    image-20210109170320475

    7、启动Seata容器

    docker run -d --name seata --restart=always -p 8091:8091  
    -e SEATA_IP=localhost 
    -e SEATA_CONFIG_NAME=file:/seata-server/resources/registry.conf 
    -v /mydata/seata/seata-server/resources/registry.conf:/seata-server/resources/registry.conf 
    -v /mydata/seata/logs:/root/logs 
    seataio/seata-server
    
    • 如果云主机不支持tcp6监听的,使用 --network=host 替代 -p 8091:8091 指定Docker网络模式为Host模式

    Docker 安装 RabbitMQ

    1、拉取 RabbitMQ 镜像

    sudo docker pull rabbitmq:management
    

    2、启动 RabbitMQ 容器

    sudo mkdir -p /mydata/rabbitmq
    
    sudo docker run -d --name rabbitmq 
    -v /mydata/rabbitmq:/var/lib/rabbitmq 
    -p 5671:5671 
    -p 5672:5672 
    -p 4369:4369 
    -p 25672:25672 
    -p 15671:15671 
    -p 15672:15672 
    rabbitmq:management
    

    3、设置开机启动 RabbitMQ

    sudo docker update rabbitmq --restart=always
    
  • 相关阅读:
    Ansible
    Ansible
    MySQL
    JS计算时间差(天,时,分钟,秒)
    cookie,localStorage,sessionStorage的区别
    css布局 -双飞翼布局&圣杯布局
    Python批量爬取网站图片
    vue-cli3中引入图片的几种方式和注意事项
    git常用命令
    vue-cli3的打包并在本地查看
  • 原文地址:https://www.cnblogs.com/dtdx/p/14058876.html
Copyright © 2011-2022 走看看