zoukankan      html  css  js  c++  java
  • Docker--03 Docker私有仓库及监控docker

    Docker私有仓库

    1. 普通的docker registry

    2. 带认证的docker registry

    3. 企业级的docker-harbor

    3.1 部署思路

    第一步:安装docker和docker-compose
    第二步:下载harbor-offline-installer-v1.9.0-rc1.tgz
    第三步:上传到/opt,并解压
    第四步:修改harbor.yml配置文件 hostname = 10.0.0.11 harbor_admin_password = 123456
    第五步:执行install.sh
    

    3.2 安装私有仓库

    1.下载软件包
    cd /opt
    wget https://github.com/goharbor/harbor/releases/download/v1.9.3/harbor-offline-
    
    installer-v1.9.3.tgz
    上传包
    tar xf harbor-offline-installer-v1.9.0-rc1.tgz
    
    2.修改配置
    vim harbor.yml 
    hostname: 10.0.0.51
    harbor_admin_password: 123456
    
    3.下载docker-compose,编排工具
    yum install docker-compose -y 
    
    4.安装harbor
    停止80端口执行
    ./install.sh
    
    查看编排状态
    cd /opt/harbor
    docker-compose ps
    
    登录:web 10.0.0.51 创建linux项目
    
    5.修改镜像名称(镜像的ID)
    docker tag ae21150e3af8 10.0.0.51/linux/my_kod:v2
    docker images
    
    6.修改docker配置添加信任仓库
    cat >/etc/docker/daemon.json<<EOF 
    {
      "registry-mirrors": ["https://ig2l319y.mirror.aliyuncs.com"],
      "insecure-registries": ["http://10.0.0.51"] 
    }
    EOF
    
    #重启docker
    systemctl restart docker
    docker-compose ps
    docker-compose stop
    docker-compose up -d
    
    7.docker登录到harbor
    docker login 10.0.0.51
    
    8.上传镜像到私有仓库
    docker push 10.0.0.51/linux/my_kod:v2
    
    9.客户端使用仓库下载镜像
    删除已有的:注意.先停容器,在删除容器,镜像 
    docker pull 10.0.0.51/linux/my_kod:v2
    

    3.3 其他主机上下载镜像

    [root@docker02 ~]# cat /etc/docker/daemon.json 
    {
          "registry-mirrors": ["http://hub-mirror.c.163.com"],
          "insecure-registries": ["http://10.0.1.11"],
          "insecure-registries": ["https://10.0.1.11"] 
    }
    [root@docker02 ~]# docker pull 10.0.1.11/linux/centos_kod:v1
    

    4. 容器的基本架构图

    5. 项目实战:制作kvm管理工具容器

    前提:新起一个容器,容器内操作
    
    1.初始化
    rm -rf /etc/yum.repos.d/*
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    2.安装python依赖
    yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor gcc python-devel
    python -m pip install --upgrade --force pip -i https://pypi.tuna.tsinghua.edu.cn/simple
    pip install setuptools==33.1.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    
    3.安装python的Django环境
    cd /opt/
    git clone git://github.com/retspen/webvirtmgr.git
    cd webvirtmgr
    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    [root@402aca4eaa81 webvirtmgr]# chmod +x manage.py 
    
    ./manage.py syncdb
    ./manage.py collectstatic
    
    4.安装Nginx
    cat>/etc/yum.repos.d/nginx.repo<<EOF
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    EOF
    yum makecache fast
    yum install nginx -y
    yum clean all 
    
    5.配置Nginx和代码
    mkdir /code
    mv /opt/webvirtmgr /code/
    chown -R nginx:nginx /code
    rm -rf /etc/nginx/conf.d/default.conf
    cat >/etc/nginx/conf.d/webvirtmgr.conf<<EOF
    server {
        listen 80 default_server;
    
        server_name localhost;
        access_log /var/log/nginx/webvirtmgr_access_log; 
    
        location /static/ {
            root /code/webvirtmgr;        
            expires max;
        }
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_connect_timeout 600;
            proxy_read_timeout 600;
            proxy_send_timeout 600;
            client_max_body_size 1024M; 
        }
    }
    EOF
    nginx -t
    nginx
    ss -lntup
    
    
    6.配置Supervisor
    cat >/etc/supervisord.d/webvirtmgr.ini<<EOF
    [program:webvirtmgr]
    command=/usr/bin/python /code/webvirtmgr/manage.py run_gunicorn -c /code/webvirtmgr/conf/gunicorn.conf.py
    directory=/code/webvirtmgr
    autostart=true
    autorestart=true
    logfile=/var/log/supervisor/webvirtmgr.log
    log_stderr=true
    user=nginx
    
    [program:webvirtmgr-console]
    command=/usr/bin/python /code/webvirtmgr/console/webvirtmgr-console
    directory=/code/webvirtmgr
    autostart=true
    autorestart=true
    stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
    redirect_stderr=true
    user=nginx
    
    [program:nginx]
    command=nginx -g 'daemon off;'
    autostart=true
    autorestart=true
    stdout_logfile=/var/log/supervisor/nginx.log
    redirect_stderr=true
    EOF
    sed -i "s#nodaemon=false#nodaemon=true#g" /etc/supervisord.conf
    supervisord -c /etc/supervisord.conf
    supervisorctl status
    
    7.创建用户
    mkdir /var/cache/nginx/.ssh/ -p
    chown -R nginx:nginx /var/cache/nginx/
    su - nginx -s /bin/bash
    ssh-keygen
    touch ~/.ssh/config && echo -e "StrictHostKeyChecking=no
    UserKnownHostsFile=/dev/null" >> ~/.ssh/config
    chmod 0600 ~/.ssh/config
    ssh-copy-id root@10.0.0.12
    
    8.提交新镜像
    docker commit 402aca4eaa81 mykvm:v1
    
    9.运行新容器,注意:其他端口有时会跳转,
    
    docker run --name mykvm3 -p 80:80  -it -d  mykvm:v1 supervisord -c /etc/supervisord.conf
    

    6. docker监控

    1.docker自带的监控命令
    docker container ps    :查看正在运行的容器
    docker container top  +容器的id :知道某个容器运行了哪些进程
    docker container stats +容器的id :显示每个容器各种资源使用情况 
    
    2.cAdvisor+ prometheus+ grafana组件介绍
    组件介绍: 在不同页面之间跳转,并且只能监控一个host,这不免让人质疑他的实用性,但cAdvisor有一个亮点是可以将监控到的数据导出给第三方工具,有这些工具进一步加工处理。
    所以我们可以把cAdvisor定位为一个监控数据收集器,收集和导出数据是他的强项,而非展示数据。
    cAdvisor支持很多第三方工具,其中就包含prometheus
    
    #prometheus
    Prometheus是一个非常优秀的监控工具。提供了监控数据搜集,存储,处理,可视化和告警一系列完整的解决方案。包含组件
    Node Exporter :负责收集host硬件和操作系统数据,以容器的形式运行在所有host上
    cAdvisor      :负责收集容器数据,以容器的形式运行在所有host上
    
    #grafana
    grafana是一款支持多种数据源的图形展示工具
    
    3.部署
    #地址规划:
    10.0.0.51   cAdvisor+ Node Exporter +prometheus+ grafana
    10.0.0.52   cAdvisor+ Node Exporter
    
    #docker01的配置文件:
    mkdir prometheus
    cd prometheus
    #上传压缩包
    docker load < 压缩包
    cat >docker-compose.yml<<EOF
    version: '3.2'
    services:
      prometheus:
        image: prom/prometheus:latest
        container_name: prometheus
        ports:
        - 9090:9090
        command:
        - --config.file=/etc/prometheus/prometheus.yml
        volumes:
        - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
        depends_on:
        - cadvisor
    
      node-exporter:
        image: prom/node-exporter:latest
        container_name: node_exporter
        ports:
        - 9100:9100
    
      cadvisor:
        image: google/cadvisor:latest
        container_name: cadvisor
        ports:
        - 8080:8080
        volumes:
        - /:/rootfs:ro
        - /var/run:/var/run:rw
        - /sys:/sys:ro
        - /var/lib/docker/:/var/lib/docker:ro
    
      grafana:
        image: grafana/grafana:latest
        container_name: grafana
        ports:
        - 3000:3000
    EOF
    
    #prometheus配置文件
    cat >prometheus.yml <<EOF
    scrape_configs:
    - job_name: cadvisor
      scrape_interval: 5s
      static_configs:
      - targets:
        - 10.0.0.51:8080
        - 10.0.0.52:8080
    
    - job_name: prometheus
      scrape_interval: 5s
      static_configs:
      - targets: 
        - 10.0.0.51:9090
    
    - job_name: node_exporter
      scrape_interval: 5s
      static_configs:
      - targets: 
        - 10.0.0.51:9100
        - 10.0.0.52:9100
    EOF
    
    #docker02配置文件:
    cat >docker-compose.yml<<EOF
    version: '3.2'
    services:
      node-exporter:
        image: prom/node-exporter:latest
        container_name: node_exporter
        ports:
        - 9100:9100
    
      cadvisor:
        image: google/cadvisor:latest
        container_name: cadvisor
        ports:
        - 8080:8080
        volumes:
        - /:/rootfs:ro
        - /var/run:/var/run:rw
        - /sys:/sys:ro
        - /var/lib/docker/:/var/lib/docker:ro
    EOF
    
    4.运行
    ntpdate time1.aliyun.com
    docker-compose up -d
    
    5.检查
    http://10.0.0.51:8080/metrics
    http://10.0.0.51:9100/metrics
    http://10.0.0.51:9090
    http://10.0.0.51:3000
    

    登录:10.0.0.51:3000

    账号:admin 密码;admin

    配置源地址

    下载



  • 相关阅读:
    微服务架构的设计原则
    分布式锁
    银行卡Bin和Logo
    Docker部署Jenkins
    云服务器配置 docker java mysql mongodb redis nginx jenkins 环境
    Mybatis使用心德
    CTO 技能图谱
    React 面试问题
    Dart语法学习
    第一篇博客
  • 原文地址:https://www.cnblogs.com/gongjingyun123--/p/12547781.html
Copyright © 2011-2022 走看看