zoukankan      html  css  js  c++  java
  • docker镜像处理命令格式化工具 docker-command-format.html

    使用本工具填入docker镜像的名称,一键生成docker tag、docker push和docker pull命令,适用于单个或者批量的docker指令处理

    预览图如下:

    docker-command-format.html源代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>docker镜像处理命令格式化工具</title>
        <style>
    
            .source-div, .format-div {
                width: 50%;
                float: left;
            }
    
            .source-div textarea, .format-div textarea {
                width: 80%;
                height: 150px;
                padding: 5px;
            }
    
            #target-registry-input {
                width: 80%;
                height: 24px;
            }
    
            input[type=radio], .radio-label {
                cursor: pointer;
            }
    
            button {
                padding: 5px 15px;
                cursor: pointer;
            }
    
        </style>
    </head>
    <body>
    <h1>docker镜像处理命令格式化工具</h1>
    <div class="source-div">
        <h4>镜像名称:一行一个docker镜像名称,多个镜像请换行填写</h4>
        <textarea id="docker-image-text"></textarea>
        <br/>
        <h4>
            <span>镜像来源:</span>
            <input type="radio" name="image-source" id="image-source-docker-hub" value="docker-hub"><label class="radio-label" for="image-source-docker-hub">docker hub</label>
            <input type="radio" name="image-source" id="image-source-other" value="other" checked><label class="radio-label" for="image-source-other">其他</label>
        </h4>
        <h4>目标registry:例如 develop-harbor.geostar.com.cn或192.168.100.150:5000,不包含“http://“及”https://“</h4>
        <input id="target-registry-input" value="develop-harbor.geostar.com.cn"/>
        <br/>
        <br/>
        <h4>
            <button onclick="cleanup();">清理</button>
            <button onclick="format();">格式化</button>
        </h4>
        <br/>
        <h4>常用命令技巧:</h4>
        <p>
            <span>获取镜像名称及标签:docker images --format "{{.Repository}}:{{.Tag}}"</span>
        </p>
    </div>
    <div class="format-div">
        <h4>docker tag:</h4>
        <textarea id="docker-image-tag-command"></textarea>
        <h4>docker push:</h4>
        <textarea id="docker-image-push-command"></textarea>
        <h4>docker pull:</h4>
        <textarea id="docker-image-pull-command"></textarea>
    </div>
    </body>
    <script>
    
        /**
         * 格式化
         */
        function format() {
            let dockerTagTextarea = getById("docker-image-tag-command");
            let dockerPushTextarea = getById("docker-image-push-command");
            let dockerPullTextarea = getById("docker-image-pull-command");
            dockerTagTextarea.value = "";
            dockerPushTextarea.value = "";
            dockerPullTextarea.value = "";
    
            let input = getById("target-registry-input")
            let registryUrl = input.value.trim().toLowerCase();
            if (registryUrl.startsWith("http://")) {
                registryUrl = registryUrl.substring("http://".length);
            } else if (registryUrl.startsWith("https://")) {
                registryUrl = registryUrl.substring("https://".length);
            }
            input.value = registryUrl;
            registryUrl = formatUrl(registryUrl);
    
            let imageSource;
            /**
             * 镜像名称是否包含registry地址
             */
            let radioList = getByName("image-source");
            for (let i = 0; i < radioList.length; i++) {
                let radioDom = radioList[i];
                if (radioDom.checked) {
                    imageSource = radioDom.value;
                }
            }
    
            let existImage = false;
            let textarea = getById("docker-image-text");
            let array = textarea.value.trim().split("
    ");
            for (let i = 0; i < array.length; i++) {
                let image = array[i].trim();
                if (image != "") {
                    let simpleImage = getSimpleImageName(image, imageSource);
                    let newImage = registryUrl + "/" + simpleImage;
                    let tagCommand = "docker tag " + image + " " + newImage;
                    dockerTagTextarea.value = dockerTagTextarea.value + "
    " + tagCommand;
                    let pushCommand = "docker push " + newImage;
                    dockerPushTextarea.value = dockerPushTextarea.value + "
    " + pushCommand;
                    let pullCommand = "docker pull " + newImage;
                    dockerPullTextarea.value = dockerPullTextarea.value + "
    " + pullCommand;
                    existImage = true;
                }
            }
            if (existImage) {
                dockerTagTextarea.value = dockerTagTextarea.value.trim() + "
    ";
                dockerPushTextarea.value = dockerPushTextarea.value.trim() + "
    ";
                dockerPullTextarea.value = dockerPullTextarea.value.trim() + "
    ";
            } else {
                alert("请填写镜像名称");
                textarea.focus();
            }
        }
    
        /**
         * 获取简单的镜像名称
         */
        function getSimpleImageName(image, imageSource) {
            if (imageSource == "other") {
                image = image.substring(image.indexOf("/") + 1);
            }
            return image;
        }
    
        /**
         * 递归处理目标registry
         */
        function formatUrl(url) {
            if (url.endsWith("/")) {
                url = url.substring(0, url.length - 1);
                return formatUrl(url);
            } else {
                return url;
            }
        }
    
        /**
         * 清理内容
         */
        function cleanup() {
            let dockerImageTextarea = getById("docker-image-text");
            let dockerTagTextarea = getById("docker-image-tag-command");
            let dockerPushTextarea = getById("docker-image-push-command");
            let dockerPullTextarea = getById("docker-image-pull-command");
            dockerImageTextarea.value = "";
            dockerTagTextarea.value = "";
            dockerPushTextarea.value = "";
            dockerPullTextarea.value = "";
        }
    
        /**
         * 根据name获取dom
         */
        function getByName(name) {
            return document.getElementsByName(name);
        }
    
        /**
         * 根据id获取dom
         * @param id
         * @returns {HTMLElement}
         */
        function getById(id) {
            return document.getElementById(id);
        }
    
    </script>
    </html>

    纯原生html,不依赖任何第三方库及js文件,保存为html文件,使用浏览器直接打开使用

  • 相关阅读:
    poj3264
    codevs4373 窗口==poj2823 Sliding Window
    BZOJ 3831
    1107 等价表达式
    codevs4600 [NOI2015]程序自动分析==洛谷P1955 程序自动分析
    BZOJ 1050
    1294 全排列[多种]
    BZOJ 2456
    BZOJ 3725
    BZOJ 3043
  • 原文地址:https://www.cnblogs.com/nihaorz/p/13491661.html
Copyright © 2011-2022 走看看