Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-WIC-Cnf
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
3
Issues
3
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
CommunityXG
OpenXG-WIC-Cnf
Commits
42744627
Commit
42744627
authored
Jun 15, 2020
by
ymwangya
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改代码,启动docker容器时,将docker端口暴露出来
parent
ac45a6f4
Pipeline
#100
failed with stages
Changes
10
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
300 additions
and
9 deletions
+300
-9
bishe-client-starter/src/main/java/top/ninwoo/bishe/starter/config/ClientProperties.java
...ava/top/ninwoo/bishe/starter/config/ClientProperties.java
+1
-0
bishe-cloud-center/src/main/resources/application.yml
bishe-cloud-center/src/main/resources/application.yml
+2
-2
bishe-common-api/src/main/java/top/ninwoo/common/entity/ContainerDescription.java
...n/java/top/ninwoo/common/entity/ContainerDescription.java
+1
-0
bishe-edge-center/src/main/resources/application.yaml
bishe-edge-center/src/main/resources/application.yaml
+5
-3
bishe-test/src/main/resources/application.properties
bishe-test/src/main/resources/application.properties
+1
-1
bishe-test/src/test/java/top/ninwoo/BisheMultiNodeTests.java
bishe-test/src/test/java/top/ninwoo/BisheMultiNodeTests.java
+2
-1
bishe-test/src/test/java/top/ninwoo/YmwangDbcTests.java
bishe-test/src/test/java/top/ninwoo/YmwangDbcTests.java
+139
-0
bishe-test/src/test/java/top/ninwoo/YmwangDfsTests.java
bishe-test/src/test/java/top/ninwoo/YmwangDfsTests.java
+141
-0
bishe-utils/src/main/java/top/ninwoo/utils/service/impl/DockerServiceImpl.java
...java/top/ninwoo/utils/service/impl/DockerServiceImpl.java
+1
-1
bishe-utils/src/main/java/top/ninwoo/utils/util/impl/DockerUtilsImpl.java
...main/java/top/ninwoo/utils/util/impl/DockerUtilsImpl.java
+7
-1
No files found.
bishe-client-starter/src/main/java/top/ninwoo/bishe/starter/config/ClientProperties.java
View file @
42744627
...
@@ -9,5 +9,6 @@ public class ClientProperties {
...
@@ -9,5 +9,6 @@ public class ClientProperties {
private
String
zookeeperUrl
=
"zookeeper://127.0.0.1:2181"
;
private
String
zookeeperUrl
=
"zookeeper://127.0.0.1:2181"
;
private
String
cloudUrl
=
"127.0.0.1:9300"
;
private
String
cloudUrl
=
"127.0.0.1:9300"
;
private
String
appName
=
"default"
;
private
String
appName
=
"default"
;
}
}
bishe-cloud-center/src/main/resources/application.yml
View file @
42744627
...
@@ -2,10 +2,10 @@ server:
...
@@ -2,10 +2,10 @@ server:
port
:
9090
port
:
9090
zookeeper
:
zookeeper
:
url
:
1
27.0.0.1
:2181
url
:
1
92.168.31.156
:2181
bs
:
bs
:
cloudcenter
:
cloudcenter
:
name
:
my-bs-cloud-center
name
:
my-bs-cloud-center
ipservice
:
ipservice
:
url
:
127.0.0.1:23333
url
:
192.168.31.156:23333
\ No newline at end of file
\ No newline at end of file
bishe-common-api/src/main/java/top/ninwoo/common/entity/ContainerDescription.java
View file @
42744627
...
@@ -11,6 +11,7 @@ import lombok.Data;
...
@@ -11,6 +11,7 @@ import lombok.Data;
public
class
ContainerDescription
{
public
class
ContainerDescription
{
private
String
mode
;
private
String
mode
;
private
int
replicas
;
private
int
replicas
;
// dockerContainer模板
// dockerContainer模板
private
DockerContainer
dockerContainer
;
private
DockerContainer
dockerContainer
;
...
...
bishe-edge-center/src/main/resources/application.yaml
View file @
42744627
...
@@ -14,6 +14,8 @@ mybatis:
...
@@ -14,6 +14,8 @@ mybatis:
map-underscore-to-camel-case
:
true
map-underscore-to-camel-case
:
true
mapper-locations
:
classpath:mapping/*.xml
mapper-locations
:
classpath:mapping/*.xml
debug
:
false
debug
:
false
#边缘节点的端口
server
:
server
:
port
:
8081
port
:
8081
...
@@ -22,11 +24,11 @@ bs:
...
@@ -22,11 +24,11 @@ bs:
name
:
my-bs-cloud-center
name
:
my-bs-cloud-center
edgenode
:
edgenode
:
name
:
random
name
:
random
ip-prefix
:
192
ip-prefix
:
192
.168.31
ipservice
:
ipservice
:
ip
:
1
27.0.0.1
:23333
ip
:
1
92.168.31.156
:23333
sdn-controller
:
sdn-controller
:
host
:
127.0.0.1
host
:
127.0.0.1
port
:
6653
port
:
6653
zookeeper
:
zookeeper
:
url
:
1
27.0.0.1
:2181
url
:
1
92.168.31.156
:2181
bishe-test/src/main/resources/application.properties
View file @
42744627
bishe.app.app-name
=
joliu
bishe.app.app-name
=
joliu
bishe.app.cloud-url
=
1
27.0.0.1:9091
bishe.app.cloud-url
=
1
92.168.31.156:9090
spring.influx.url
=
http://192.168.0.108:8086
spring.influx.url
=
http://192.168.0.108:8086
spring.influx.user
=
admin
spring.influx.user
=
admin
...
...
bishe-test/src/test/java/top/ninwoo/BisheMultiNodeTests.java
View file @
42744627
...
@@ -32,7 +32,7 @@ public class BisheMultiNodeTests {
...
@@ -32,7 +32,7 @@ public class BisheMultiNodeTests {
@Test
@Test
public
void
testInFluxDB
()
{
public
void
testInFluxDB
()
{
Point
.
Builder
builder
=
Point
.
measurement
(
"monitor"
);
Point
.
Builder
builder
=
Point
.
measurement
(
"monitor"
);
//这是检测功能
System
.
out
.
println
(
System
.
currentTimeMillis
());
System
.
out
.
println
(
System
.
currentTimeMillis
());
builder
builder
.
addField
(
"rate"
,
1221
f
)
.
addField
(
"rate"
,
1221
f
)
...
@@ -60,6 +60,7 @@ public class BisheMultiNodeTests {
...
@@ -60,6 +60,7 @@ public class BisheMultiNodeTests {
container
.
setName
(
"APP1"
);
container
.
setName
(
"APP1"
);
container
.
setCommand
(
"sh"
);
container
.
setCommand
(
"sh"
);
container
.
setImage
(
"joliu/networktest"
);
container
.
setImage
(
"joliu/networktest"
);
//container.setImage("dfs_transfer_client");
containerDescription
.
setDockerContainer
(
container
);
containerDescription
.
setDockerContainer
(
container
);
List
<
ContainerDescription
>
cds
=
new
ArrayList
<>();
List
<
ContainerDescription
>
cds
=
new
ArrayList
<>();
...
...
bishe-test/src/test/java/top/ninwoo/YmwangDbcTests.java
0 → 100644
View file @
42744627
package
top.ninwoo
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
top.ninwoo.bishe.starter.entity.ContainerMonitor
;
import
top.ninwoo.bishe.starter.service.ClusterService
;
import
top.ninwoo.bishe.starter.service.NetworkService
;
import
top.ninwoo.client.BisheTestMain
;
import
top.ninwoo.common.entity.*
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
BisheTestMain
.
class
)
public
class
YmwangDbcTests
{
/*分散计算业务的测试*/
@Autowired
private
ClusterService
clusterService
;
@Resource
private
NetworkService
networkService
;
@Test
public
void
testSendSeparateConfig
()
{
ArrayList
<
SeparatedClusterConfig
>
clusterConfigs
=
new
ArrayList
<>();
SeparatedClusterConfig
separatedClusterConfig
=
new
SeparatedClusterConfig
();
// TODO: 这个ID应该是从借口获取的
separatedClusterConfig
.
setEdgeNodeId
(
"192.168.31.198:8881"
);
//边缘节点IP+端口号
ClusterConfig
clusterConfigCom
=
new
ClusterConfig
();
clusterConfigCom
.
setId
(
11113
l
);
clusterConfigCom
.
setOwner
(
"joliu"
);
List
<
ContainerDescription
>
cds
=
new
ArrayList
<>();
/*通过镜像"ymwang/dfs_transfer_client"启动一个名为client的容器,来作为文件的收发端(图片的切割、合并)*/
ContainerDescription
containerDescriptionClient
=
new
ContainerDescription
();
containerDescriptionClient
.
setMode
(
"normal"
);
containerDescriptionClient
.
setReplicas
(
1
);
DockerContainer
container
=
new
DockerContainer
();
container
.
setName
(
"dbc_client"
);
//创建一个client容器
container
.
setCommand
(
"bash"
);
container
.
setImage
(
"dbc_client"
);
container
.
setPorts
(
"8999"
);
//指定容器端口
containerDescriptionClient
.
setDockerContainer
(
container
);
cds
.
add
(
containerDescriptionClient
);
//将client容器添加到list集合中
/*通过镜像"ymwang/dfs_transfer_server"启动一个名为server1的容器,用于存储图片切片*/
ContainerDescription
containerDescriptionServer1
=
new
ContainerDescription
();
containerDescriptionServer1
.
setMode
(
"normal"
);
containerDescriptionServer1
.
setReplicas
(
20
);
DockerContainer
containerServer1
=
new
DockerContainer
();
containerServer1
.
setName
(
"dbc_server"
);
//创建一个server1容器
containerServer1
.
setCommand
(
"sh"
);
containerServer1
.
setImage
(
"dbc_server"
);
containerDescriptionServer1
.
setDockerContainer
(
containerServer1
);
cds
.
add
(
containerDescriptionServer1
);
//将server1容器添加到list集合中
clusterConfigCom
.
setDockers
(
cds
);
NetworkTopology
topo
=
new
NetworkTopology
();
//topo.setAppNames(new String[]{"Run", "APP", "br:ovs1"});
topo
.
setAppNames
(
new
String
[]{
"dbc_client"
,
"dbc_server"
,
"br:ovs1"
});
// 这个参数好像没啥用
topo
.
setTopologyId
(
11
);
topo
.
setTopology
(
new
int
[][]{{
0
,
0
,
0
},{
0
,
0
,
0
},{
1
,
1
,
0
}});
clusterConfigCom
.
setTopology
(
topo
);
separatedClusterConfig
.
setClusterConfig
(
clusterConfigCom
);
clusterConfigs
.
add
(
separatedClusterConfig
);
clusterService
.
sendClusterConfigToEdgeNode
(
clusterConfigs
);
}
//测试容器ip
@Test
public
void
getIpListByAppNameTest
()
{
List
<
String
>
ipList
=
networkService
.
getIpListByAppName
(
11113L
,
"dbc_server"
);
System
.
out
.
println
(
ipList
);
}
@Test
public
void
getIpList
()
{
List
<
String
>
ipListS
=
networkService
.
getIpListByAppName
(
11113L
,
"dbc_server"
);
String
[]
ipList
=
new
String
[
ipListS
.
size
()];
for
(
int
i
=
0
;
i
<
ipListS
.
size
();
i
++)
{
if
(!
ipListS
.
isEmpty
()){
String
ip_tmp
=
ipListS
.
get
(
i
);
String
[]
split_list
=
ip_tmp
.
split
(
"/"
);
ipList
[
i
]
=
split_list
[
0
]+
":8082"
;
}
}
for
(
int
j
=
0
;
j
<
ipList
.
length
;
j
++)
{
System
.
out
.
println
(
ipList
[
j
]);
}
}
@Test
public
void
removeClusterFromEdgeNodeTest
()
{
clusterService
.
removeClusterFromEdgeNode
(
11113L
);
}
@Test
public
void
getLogicalNetworkTopologyTest
()
{
NetworkTopology
logicalNetworkTopology
=
networkService
.
getLogicalNetworkTopology
(
11113L
);
System
.
out
.
println
(
logicalNetworkTopology
);
}
@Test
public
void
enableNetworkMonitorTest
()
throws
InterruptedException
{
String
res
=
networkService
.
enableNetworkMonitor
(
11112L
,
"server"
);
System
.
out
.
println
(
res
);
}
@Test
public
void
cancelNetworkMonitorTest
()
{
String
run
=
networkService
.
cancelNetworkMonitor
(
11112L
,
"server"
);
System
.
out
.
println
(
run
);
}
@Test
public
void
getNetworkMonitorTest
()
throws
InterruptedException
{
List
<
ContainerMonitor
>
run
=
networkService
.
getContainerMonitors
(
11112L
,
"Run"
);
int
i
=
0
;
while
(
i
<
10
)
{
run
.
forEach
(
c
->
{
System
.
out
.
println
(
c
.
getContainerInfo
());
});
Thread
.
sleep
(
500
);
i
++;
}
}
}
bishe-test/src/test/java/top/ninwoo/YmwangDfsTests.java
0 → 100644
View file @
42744627
package
top.ninwoo
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
top.ninwoo.bishe.starter.entity.ContainerMonitor
;
import
top.ninwoo.bishe.starter.service.ClusterService
;
import
top.ninwoo.bishe.starter.service.NetworkService
;
import
top.ninwoo.client.BisheTestMain
;
import
top.ninwoo.common.entity.*
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
BisheTestMain
.
class
)
public
class
YmwangDfsTests
{
@Autowired
private
ClusterService
clusterService
;
@Resource
private
NetworkService
networkService
;
@Test
public
void
testSendSeparateConfig
()
{
ArrayList
<
SeparatedClusterConfig
>
clusterConfigs
=
new
ArrayList
<>();
SeparatedClusterConfig
separatedClusterConfig
=
new
SeparatedClusterConfig
();
// TODO: 这个ID应该是从借口获取的
separatedClusterConfig
.
setEdgeNodeId
(
"192.168.31.198:8881"
);
ClusterConfig
clusterConfigStore
=
new
ClusterConfig
();
clusterConfigStore
.
setId
(
11112
l
);
clusterConfigStore
.
setOwner
(
"joliu"
);
List
<
ContainerDescription
>
cds
=
new
ArrayList
<>();
/*通过镜像"ymwang/dfs_transfer_client"启动一个名为client的容器,来作为文件的收发端(图片的切割、合并)*/
ContainerDescription
containerDescriptionClient
=
new
ContainerDescription
();
containerDescriptionClient
.
setMode
(
"normal"
);
containerDescriptionClient
.
setReplicas
(
1
);
DockerContainer
container
=
new
DockerContainer
();
container
.
setName
(
"dfs_client"
);
//创建一个client容器
container
.
setCommand
(
"bash"
);
container
.
setImage
(
"dfs_client"
);
container
.
setPorts
(
"8099"
);
//指定容器端口
containerDescriptionClient
.
setDockerContainer
(
container
);
cds
.
add
(
containerDescriptionClient
);
//将client容器添加到list集合中
/*通过镜像"ymwang/dfs_transfer_server"启动一个名为server1的容器,用于存储图片切片*/
ContainerDescription
containerDescriptionServer1
=
new
ContainerDescription
();
containerDescriptionServer1
.
setMode
(
"normal"
);
containerDescriptionServer1
.
setReplicas
(
20
);
DockerContainer
containerServer1
=
new
DockerContainer
();
containerServer1
.
setName
(
"dfs_server"
);
//创建一个server1容器
containerServer1
.
setCommand
(
"sh"
);
containerServer1
.
setImage
(
"dfs_server"
);
containerDescriptionServer1
.
setDockerContainer
(
containerServer1
);
cds
.
add
(
containerDescriptionServer1
);
//将server1容器添加到list集合中
clusterConfigStore
.
setDockers
(
cds
);
NetworkTopology
topo
=
new
NetworkTopology
();
//topo.setAppNames(new String[]{"Run", "APP", "br:ovs1"});
topo
.
setAppNames
(
new
String
[]{
"dfs_client"
,
"dfs_server"
,
"br:ovs1"
});
// 这个参数好像没啥用
topo
.
setTopologyId
(
11
);
topo
.
setTopology
(
new
int
[][]{{
0
,
0
,
0
},{
0
,
0
,
0
},{
1
,
1
,
0
}});
clusterConfigStore
.
setTopology
(
topo
);
separatedClusterConfig
.
setClusterConfig
(
clusterConfigStore
);
clusterConfigs
.
add
(
separatedClusterConfig
);
clusterService
.
sendClusterConfigToEdgeNode
(
clusterConfigs
);
}
//测试容器ip
@Test
public
void
getIpListByAppNameTest
()
{
List
<
String
>
ipList
=
networkService
.
getIpListByAppName
(
11112L
,
"dfs_server"
);
System
.
out
.
println
(
ipList
);
}
@Test
public
void
getIpList
()
{
List
<
String
>
ipListS
=
networkService
.
getIpListByAppName
(
11112L
,
"dfs_server"
);
String
[]
ipList
=
new
String
[
ipListS
.
size
()];
for
(
int
i
=
0
;
i
<
ipListS
.
size
();
i
++)
{
if
(!
ipListS
.
isEmpty
()){
String
ip_tmp
=
ipListS
.
get
(
i
);
String
[]
split_list
=
ip_tmp
.
split
(
"/"
);
ipList
[
i
]
=
split_list
[
0
];
}
}
for
(
int
j
=
0
;
j
<
ipList
.
length
;
j
++)
{
System
.
out
.
println
(
ipList
[
j
]);
}
}
@Test
public
void
removeClusterFromEdgeNodeTest
()
{
clusterService
.
removeClusterFromEdgeNode
(
11112L
);
}
@Test
public
void
getLogicalNetworkTopologyTest
()
{
NetworkTopology
logicalNetworkTopology
=
networkService
.
getLogicalNetworkTopology
(
11112L
);
System
.
out
.
println
(
logicalNetworkTopology
);
}
@Test
public
void
enableNetworkMonitorTest
()
throws
InterruptedException
{
String
res
=
networkService
.
enableNetworkMonitor
(
11112L
,
"dfs_server"
);
System
.
out
.
println
(
res
);
}
@Test
public
void
cancelNetworkMonitorTest
()
{
String
run
=
networkService
.
cancelNetworkMonitor
(
11112L
,
"dfs_server"
);
System
.
out
.
println
(
run
);
}
@Test
public
void
getNetworkMonitorTest
()
throws
InterruptedException
{
List
<
ContainerMonitor
>
run
=
networkService
.
getContainerMonitors
(
11112L
,
"Run"
);
int
i
=
0
;
while
(
i
<
10
)
{
run
.
forEach
(
c
->
{
System
.
out
.
println
(
c
.
getContainerInfo
());
});
Thread
.
sleep
(
500
);
i
++;
}
}
}
bishe-utils/src/main/java/top/ninwoo/utils/service/impl/DockerServiceImpl.java
View file @
42744627
...
@@ -64,7 +64,7 @@ public class DockerServiceImpl implements DockerService, InitializingBean {
...
@@ -64,7 +64,7 @@ public class DockerServiceImpl implements DockerService, InitializingBean {
/**
/**
* 使用系统命令 docker run -itd 在后台启动一个容器,
* 使用系统命令 docker run -itd 在后台启动一个容器,
* 使用这种方式的一个重要
愿意
,是因为我没搞明白docker java启动容器的api到底如何使用
* 使用这种方式的一个重要
原因
,是因为我没搞明白docker java启动容器的api到底如何使用
* @param container 输入一个容器的描述信息
* @param container 输入一个容器的描述信息
* @return 返回容器启动之后真实的描述信息
* @return 返回容器启动之后真实的描述信息
*/
*/
...
...
bishe-utils/src/main/java/top/ninwoo/utils/util/impl/DockerUtilsImpl.java
View file @
42744627
...
@@ -94,7 +94,13 @@ public class DockerUtilsImpl implements DockerUtils {
...
@@ -94,7 +94,13 @@ public class DockerUtilsImpl implements DockerUtils {
public
DockerContainer
runDocker
(
DockerContainer
container
)
{
public
DockerContainer
runDocker
(
DockerContainer
container
)
{
// TODO: 这里启动Docker容器,需要再研究port如何起作用
// TODO: 这里启动Docker容器,需要再研究port如何起作用
// TODO: 这里还需要处理name等属性为空的情况
// TODO: 这里还需要处理name等属性为空的情况
String
cmd
=
"docker run -itd --name "
+
container
.
getName
()
+
" --privileged "
+
container
.
getImage
()
+
" "
+
container
.
getCommand
();
//String cmd = "docker run -itd --name " + container.getName() + " --privileged " + container.getImage() + " " + container.getCommand();
String
cmd
;
if
(
container
.
getPorts
()
==
null
){
cmd
=
"docker run -itd --name "
+
container
.
getName
()
+
" --privileged "
+
container
.
getImage
()
+
" "
+
container
.
getCommand
();
}
else
{
cmd
=
"docker run -itd -p "
+
container
.
getPorts
()+
":"
+
container
.
getPorts
()+
" "
+
"--name "
+
container
.
getName
()
+
" --privileged "
+
container
.
getImage
()
+
" "
+
container
.
getCommand
();
}
String
result
=
linuxCtlUtils
.
runCmd
(
cmd
);
String
result
=
linuxCtlUtils
.
runCmd
(
cmd
);
if
(
result
.
contains
(
"Error"
))
{
if
(
result
.
contains
(
"Error"
))
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment