其他分享
首页 > 其他分享> > docker镜像处理命令格式化工具 docker-command-format.html

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("\n");
        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 + "\n" + tagCommand;
                let pushCommand = "docker push " + newImage;
                dockerPushTextarea.value = dockerPushTextarea.value + "\n" + pushCommand;
                let pullCommand = "docker pull " + newImage;
                dockerPullTextarea.value = dockerPullTextarea.value + "\n" + pullCommand;
                existImage = true;
            }
        }
        if (existImage) {
            dockerTagTextarea.value = dockerTagTextarea.value.trim() + "\n";
            dockerPushTextarea.value = dockerPushTextarea.value.trim() + "\n";
            dockerPullTextarea.value = dockerPullTextarea.value.trim() + "\n";
        } 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文件,使用浏览器直接打开使用

标签:format,image,value,html,let,docker,registryUrl,getById
来源: https://www.cnblogs.com/nihaorz/p/13491661.html