zoukankan      html  css  js  c++  java
  • 部署docker-registry +ui , 使用ansible部署docker实例

    #部署docker-registry +ui , 使用ansible部署docker实例

    docker registry 配置域名证书, 用户密码认证, 轻量UI
    shell部署docker-registry+ui https://www.cnblogs.com/elvi/p/13394449.html


    #运行
    ansible-playbook docker-registry.yml
    
    #删除
    ansible-playbook docker-registry.yml -t remove
    

    #浏览器登录查看


    registry非本机,设置hosts解析 ip hub.elvin.vip
    实例使用域名证书hub.elvin.vip
    ansible-docker模块参考官网
    https://docs.ansible.com/ansible/2.7/modules/docker_container_module.html

    #playbook如下

    # docker-registry.yml
    
    - name: registry
    
      hosts: localhost
      #变量
      vars:
        username: admin
        password: docker
        net_name: "registry-net"
        data_dir: "/data/docker/docker-registry"
        domain_name: "hub.elvin.vip"
        download_url: "http://files.elvin.vip/docker"
    
      tasks:
    
    ##########ansible运行docker需安装docker-py 
      - name: "install python-pip "
        package:
          name:
            - "python-pip"
          state: present
        tags: py
    
      - name: pip install docker-py 
        pip:
          name:
            - docker-py>=1.10.6
            - PyYAML>=5.3.0
          extra_args: -i https://mirrors.aliyun.com/pypi/simple
        tags: py
    
    ##########
      - name: Create user file
        shell: |
          mkdir -p {{ data_dir }}
          docker run --rm alivv/htpasswd {{ username }} {{ password }} >{{ data_dir }}/htpasswd
        changed_when: false
    
      - name: Download https certificate
        get_url:
          url: "{{ download_url }}/{{ item }}"
          dest: "{{ data_dir }}/{{ item }}"
          mode: 0644
          force: yes
        with_items:
          - "{{ domain_name }}_private.key"
          - "{{ domain_name }}_full_chain.pem"
    
      - name: Create network -> {{ net_name }}
        docker_network:
          name: "{{ net_name }}"
          driver_options:
            com.docker.network.bridge.name: "{{ net_name }}"
          ipam_options:
            subnet: '10.20.20.0/24'
            gateway: 10.20.20.1
            iprange: '10.20.20.0/24'
    
    ##########container
      - name: Create container registry-srv
        docker_container: 
          name: registry-srv
          image: registry
          state: started
          restart: yes
          restart_policy: "unless-stopped"
          memory: 512M
          privileged: yes
          networks:
            - name: "{{ net_name }}"
              ipv4_address: 10.20.20.11
              aliases: 
                - registry
          ports:
            - "443:443"
          volumes:
            - "/etc/localtime:/etc/localtime:ro"
            - "{{ data_dir }}:/var/lib/registry"
          env:
            REGISTRY_AUTH: "htpasswd"
            REGISTRY_AUTH_HTPASSWD_REALM: "Registry Realm" 
            REGISTRY_AUTH_HTPASSWD_PATH: "/var/lib/registry/htpasswd"
            REGISTRY_HTTP_ADDR: "0.0.0.0:443"
            REGISTRY_STORAGE_DELETE_ENABLED: "true"
            REGISTRY_HTTP_TLS_KEY: "/var/lib/registry/{{ domain_name }}_private.key"
            REGISTRY_HTTP_TLS_CERTIFICATE: "/var/lib/registry/{{ domain_name }}_full_chain.pem"
    
      - name: Create container registry-ui
        docker_container: 
          name: registry-ui
          image: joxit/docker-registry-ui:1.3-static
          state: started
          restart: yes
          restart_policy: unless-stopped
          memory: 64M
          networks:
            - name: "{{ net_name }}"
              ipv4_address: 10.20.20.12
          ports:
            - "80:80"
          volumes:
            - "/etc/localtime:/etc/localtime:ro"
          env:
            REGISTRY_URL: "https://registry:443"
            PULL_URL: "{{ domain_name }}"
            DELETE_IMAGES: "true"
            REGISTRY_TITLE: "Docker registry"
    
    ##########remove
      - name: Delete container
        docker_container:
          name: "{{ item }}"
          state: absent
          force_kill: yes
        with_items:
          - "registry-ui"
          - "registry-srv"
        tags: never,remove
    
      - name: Delete network -> {{ net_name }}
        docker_network:
          name: "{{ net_name }}"
          state: absent
          force: yes
        tags: never,remove
     
    
  • 相关阅读:
    226. 翻转二叉树-leetcode
    2的幂-leetcode
    使用 orgmode 写博客园博客
    这是一个通过Emacs Orgmode的cnblogs插件发布的博客
    测试设计的初探
    项目微管理29
    2018091-2 博客作业
    软件工程项目课题和小组成员介绍
    (项目)在线教育平台(三)
    svn 迁移至git操作手册
  • 原文地址:https://www.cnblogs.com/elvi/p/13394492.html
Copyright © 2011-2022 走看看