部署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
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM