diff --git a/plugins/docker/index.py b/plugins/docker/index.py
index 236ae60eb..afb9f0386 100755
--- a/plugins/docker/index.py
+++ b/plugins/docker/index.py
@@ -226,6 +226,27 @@ def imageListData():
return mw.returnJson(True, 'ok', ilist)
+def dockerRemoveImage():
+ args = getArgs()
+ data = checkArgs(args, ['imageId', 'repoTags'])
+ if not data[0]:
+ return data[1]
+
+ repoTags = args['repoTags']
+ imageId = args['imageId']
+
+ c = getDClient()
+ try:
+ c.images.remove(repoTags)
+ return mw.returnJson(True, '成功删除')
+ except:
+ try:
+ c.images.remove(imageId)
+ return mw.returnJson(True, '成功删除!')
+ except docker.errors.APIError as ex:
+ return mw.returnJson(False, '删除失败, 当前镜像正在使用!')
+
+
def dockerLoginCheck(user_name, user_pass, registry):
# 登陆验证
cmd = 'docker login -u=%s -p %s %s' % (user_name, user_pass, registry)
@@ -359,6 +380,8 @@ if __name__ == "__main__":
print(conListData())
elif func == 'image_list':
print(imageListData())
+ elif func == 'docker_remove_image':
+ print(dockerRemoveImage())
elif func == 'docker_login':
print(dockerLogin())
elif func == 'docker_logout':
diff --git a/plugins/docker/info.json b/plugins/docker/info.json
index 9ba8ca0fd..26949af08 100755
--- a/plugins/docker/info.json
+++ b/plugins/docker/info.json
@@ -13,6 +13,7 @@
"author": "Zend",
"date": "2017-04-01",
"home": "https://docker.io",
+ "doc1":"https://docker-py.readthedocs.io/",
"type": 0,
"pid": "2"
}
\ No newline at end of file
diff --git a/plugins/docker/js/docker.js b/plugins/docker/js/docker.js
index 461c00742..d60fb3a31 100755
--- a/plugins/docker/js/docker.js
+++ b/plugins/docker/js/docker.js
@@ -97,13 +97,18 @@ function dockerConList(){
status = '';
}
+ var op = '';
+ op += '终端 | ';
+ op += '日志 | ';
+ op += '删除';
+
list += '
';
list += ''+rlist[i]['Name'].substring(1)+' | ';
list += ''+rlist[i]['Config']['Image']+' | ';
- list += ''+rlist[i]['Created']+' | ';
+ list += ''+getFormatTime(rlist[i]['Created'])+' | ';
list += ''+status+' | ';
- list += ''+'操作'+' | ';
+ list += ''+op+' | ';
list += '
';
}
@@ -112,29 +117,25 @@ function dockerConList(){
}
-function dockerImageList(){
-
- var con = '';
+function deleteImages(tag, id){
+ safeMessage('删除镜像','删除镜像['+tag+'],确定?',function(){
+ dPost('docker_remove_image','', {imageId:id,repoTags:tag},function(rdata){
+ var rdata = $.parseJSON(rdata.data);
+ showMsg(rdata.msg,function(){
+ if(rdata.status) {
+ dockerImageListRender();
+ }
+ },{ icon: rdata.status ? 1 : 2 });
+ });
+ });
+}
- $(".soft-man-con").html(con);
+function pullImages(tag, id){
+ console.log(tag, id);
+ layer.msg('开发中!',{ icon: 2 });
+}
+function dockerImageListRender(){
dPost('image_list', '', {}, function(rdata){
var rdata = $.parseJSON(rdata.data);
console.log(rdata);
@@ -152,24 +153,51 @@ function dockerImageList(){
var license = 'null';
var desc = 'null';
-
- if (typeof(rlist[i]['Labels']) == 'null'){
+ if (rlist[i]['Labels'] == null){
license = 'free';
}
+ var op = '';
+ op += '拉取 | ';
+ op += '删除';
+
list += '';
list += ''+rlist[i]['RepoTags']+' | ';
list += ''+tag+' | ';
list += ''+toSize(rlist[i]['Size'])+' | ';
list += ''+license+' | ';
list += ''+desc+' | ';
- list += ''+'操作'+' | ';
+ list += ''+op+' | ';
list += '
';
}
$('#con_list tbody').html(list);
});
-
+}
+
+function dockerImageList(){
+
+ var con = '';
+
+ $(".soft-man-con").html(con);
+
+ dockerImageListRender();
}
// login
@@ -281,7 +309,7 @@ function repoListRender(){
list += ''+rlist[i]['repository_name']+' | ';
list += ''+rlist[i]['namespace']+' | ';
list += ''+rlist[i]['registry']+' | ';
- list += '删除 | ';
+ list += '删除 | ';
list += '';
}
diff --git a/plugins/mysql/js/mysql.js b/plugins/mysql/js/mysql.js
index 89bc6e796..3db0fb818 100755
--- a/plugins/mysql/js/mysql.js
+++ b/plugins/mysql/js/mysql.js
@@ -181,7 +181,7 @@ function changeMySQLDataPath(act) {
$.post('/database?action=GetMySQLInfo', '', function(rdata) {
var LimitCon = '\
\
- \
+ \
';
$(".soft-man-con").html(LimitCon);
});