Skip to content

Quick start

If you want to try Onteon, go to download page, fill the form and submit it. After this, you will be redirected to page with download links. Then you can choose between docker compose with just Onteon and docker compose with additional Sonario monitoring tool. For now, you can download docker compose without Sonario, but version with Sonario will work as well.

Start

To start your docker compose, simply go to directory with docker-compose.yml file and execute docker-compose up.

$ ls
docker-compose.yml
$ docker-compose up

OnteonCLI

You can use your own onteoncli, but if you don't want to install anything, you can use docker container with cli. Simply execute docker-compose run --rm onteoncli.

$ docker-compose run --rm onteoncli
Creating docker-compose-without-sonario_onteoncli_run ... done
root@78e8cc9193d7:/opt/onteon# ls
onteon_files
root@78e8cc9193d7:/opt/onteon# 

Login

You need to login to Onteon platform before running commands. You can do this by executing onteoncli login --cluster-url http://onteoncc-master:8050 and opening the url printed in the console in your browser. Then confirm code, and you should be logged in.

root@dbe41221577f:/opt/onteon# onteoncli login --cluster-url http://onteoncc-master:8050
Your code: UIo1-xpAF
Trying to open URL ('http://localhost:8050/onteon-auth-access/oauth_20/device?code=UIo1-xpAF') in browser...
Cannot run default browser. Please visit this URL and continue authorization: http://localhost:8050/onteon-auth-access/oauth_20/device?code=UIo1-xpAF
loggedIn: true

Environment

Nodes

Execute onteoncli node list to check how many nodes you have in your cluster.

root@dbe41221577f:/opt/onteon# onteoncli node list
id                       createdAt                updatedAt                ipAddress  nodeApiPort zoneId status
1c02fcff5fc0eba2cd76159e 2021-10-21T12:55:29.705Z 2021-10-21T12:55:50.657Z 172.27.0.4 8030        null   available
a667a077dd8dd7d580ff563b 2021-10-21T12:55:29.705Z 2021-10-21T12:55:50.845Z 172.27.0.5 8030        null   available

By default, you have 2 nodes. They automatically connect to Onteon Control Center specified in node's configuration file, after start up. You can change the number of nodes in docker compose file:

  onteon-node-manager:
    image: onteon/node-manager:1.0.0
    #    environment:
    #      CONFIGURE: "apt install nodejs -y"
    privileged: true
    tty: true
    deploy:
      replicas: 2 # Set replicas
    depends_on:
      - "onteoncc-master"
    ports:
      - "8020-8021:8020"

Simply change the number of replicas and change the range of ports (e.g. if you want 3 nodes, port range should be '8020-8022'). If you are using free version of Onteon, you can have maximum 3 nodes.

If you want to know more about nodes:

Load balancers

Execute onteoncli application-instance list to see list of application instances.

root@dbe41221577f:/opt/onteon# onteoncli application-instance list
id                       createdAt                applicationName applicationVersion applicationId nodeId                   status
7d7dae6f66ab28d95bbf79b3 2021-10-21T12:55:27.255Z nginx-edge      1.0.0              null          1c02fcff5fc0eba2cd76159e running
f7ecaf61c66e83c83f40c738 2021-10-21T12:55:27.132Z nginx-edge      1.0.0              null          a667a077dd8dd7d580ff563b running
3b74c7a53dd36b3a0b68e8a7 2021-10-21T12:55:26.131Z nginx-inner     1.0.0              null          1c02fcff5fc0eba2cd76159e running
6ba03d26d534d6092354dec2 2021-10-21T12:55:26.004Z nginx-inner     1.0.0              null          a667a077dd8dd7d580ff563b running

As you can see, there is 4 running application instances, 2 nginx-edges and 2 nginx-inners. One for each node. These are embedded applications. This is a special type of application, used for internal purposes.

Nginx-edge application is an Edge Load Balancer. It is responsible for getting traffic from outside the cluster. By default, it works on port 8020. Here you can access it on ports 8020 and 8021 (depends on docker port forwarding).

Nginx-inner application is an Inner Load Balancer. It is responsible for getting traffic from inside the cluster. It should not be accessible from outside. By default, it works on port 8021.

You can decide on which Load Balancers your application should be accessible. You can read more about it here

If you want to access application instance on one of these load balancers, you can use these urls:

  • /_by_name/<application-name>/
  • /_by_name_and_version/<application-name>/<application-version>/

If you have many applications versions running, /_by_name/<application-name>/ will choose random application instance.

Applications

If you are using docker container with OnteonCLI, you can use demo applications that are already added to the container. You can find them in onteon_files/applications directory.

Upload

Lets upload the Demo Cookbook application. You can find it here: onteon_files/applications/without-sonario/onteon-demo-app-cookbook-native.tar.gz. It is a native application, so it will be started as simple process. You can upload it to Onteon Control Center by executing onteoncli application-registry upload onteon_files/applications/without-sonario/onteon-demo-app-cookbook-native.tar.gz .

root@dbe41221577f:/opt/onteon# onteoncli application-registry upload onteon_files/applications/without-sonario/onteon-demo-app-cookbook-native.tar.gz
Starting upload session...
Sending part no 0...
Sending part no 1...
Sending part no 2...
Sending part no 3...
Sending part no 4...
Sending part no 5...
Sending part no 6...
Sending part no 7...
Sending part no 8...
Finishing upload session...
uploaded: true

Application registry is responsible for storing applications packages. You can list all application registries by executing onteoncli application-registry list.

root@dbe41221577f:/opt/onteon# onteoncli application-registry list
id                       createdAt                updatedAt                fileSource    localStorageFilePath                                        httpUrl
ba14db8851aa5e06d0982ac5 2021-10-21T12:57:32.335Z 2021-10-21T12:57:32.335Z local-storage ba/ba14db8851aa5e06d0982ac5/ba14db8851aa5e06d0982ac5.tar.gz null

After the upload of registry, application is automatically created. You can see result of it by executing onteoncli application list.

root@dbe41221577f:/opt/onteon# onteoncli application list
id                       createdAt                updatedAt                name                            version type     processType
617163bc3e1a0a5d1060e30a 2021-10-21T12:57:32.334Z 2021-10-21T12:57:32.334Z onteon-demo-app-cookbook-native 1.1.0   standard native

Start manually

If your application is uploaded, you can create and start application instance. For now, you can try to do it manually, but most of the time you will probably use distributions, which creates, starts and removes applications automatically.

First you need to get id of application that you want to start, and id target node that will get the new application instance.

root@dbe41221577f:/opt/onteon# onteoncli application list
id                       createdAt                updatedAt                name                            version type     processType
617163bc3e1a0a5d1060e30a 2021-10-21T12:57:32.334Z 2021-10-21T12:57:32.334Z onteon-demo-app-cookbook-native 1.1.0   standard native

root@dbe41221577f:/opt/onteon# onteoncli node list
id                       createdAt                updatedAt                ipAddress  nodeApiPort zoneId status
1c02fcff5fc0eba2cd76159e 2021-10-21T12:55:29.705Z 2021-10-21T12:58:20.535Z 172.27.0.4 8030        null   available
a667a077dd8dd7d580ff563b 2021-10-21T12:55:29.705Z 2021-10-21T12:58:20.575Z 172.27.0.5 8030        null   available

For now, it does not matter which node you will choose.

Then you need to create application instance. You can do this by executing onteoncli application-instance create <applicationId> <nodeId>.

root@dbe41221577f:/opt/onteon# onteoncli application-instance create 617163bc3e1a0a5d1060e30a 1c02fcff5fc0eba2cd76159e
id:                 967cb25a3f8505a8d0160b34
createdAt:          2021-10-21T12:58:59.478Z
applicationName:    onteon-demo-app-cookbook-native
applicationVersion: 1.0.0
applicationId:      617163bc3e1a0a5d1060e30a
nodeId:             1c02fcff5fc0eba2cd76159e
status:             created

root@dbe41221577f:/opt/onteon# onteoncli application-instance list
id                       createdAt                applicationName                 applicationVersion applicationId            nodeId                   status
967cb25a3f8505a8d0160b34 2021-10-21T12:58:59.478Z onteon-demo-app-cookbook-native 1.1.0              617163bc3e1a0a5d1060e30a 1c02fcff5fc0eba2cd76159e created
7d7dae6f66ab28d95bbf79b3 2021-10-21T12:55:27.255Z nginx-edge                      1.0.0              null                     1c02fcff5fc0eba2cd76159e running
f7ecaf61c66e83c83f40c738 2021-10-21T12:55:27.132Z nginx-edge                      1.0.0              null                     a667a077dd8dd7d580ff563b running
3b74c7a53dd36b3a0b68e8a7 2021-10-21T12:55:26.131Z nginx-inner                     1.0.0              null                     1c02fcff5fc0eba2cd76159e running
6ba03d26d534d6092354dec2 2021-10-21T12:55:26.004Z nginx-inner                     1.0.0              null                     a667a077dd8dd7d580ff563b running

As you can see application instance was created. Now you need to start it by executing onteoncli application-instance start <application-instance-id>.

root@dbe41221577f:/opt/onteon# onteoncli application-instance start 967cb25a3f8505a8d0160b34
start instance described by input:{instanceName=onteon-demo-app-cookbook-native-1.1.0-7a1e1975121c8c7-1c02fcff5fc0eba2cd76159e-1_2021_10_21_12_58_59-1c02fcff5fc0eba2cd76159e, appName=onteon-demo-app-cookbook-native-1.0.0-7a1e1975121c8c7-1c02fcff5fc0eba2cd76159e}

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.5.3)

2021-10-21 12:59:38.440  INFO 829 --- [           main] o.d.m.o.OnteonDemoAppCookbookApplication : Starting OnteonDemoAppCookbookApplication v0.0.0-SNAPSHOT using Java 15.0.1 on 59f1efb0da2a with PID 829 (/opt/onteon/onteon-node-manager/app/onteon-demo-app-cookbook-native-1.0.0-7a1e1975121c8c7-1c02fcff5fc0eba2cd76159e/runtime/1_2021_10_21_12_58_59/bin/app.war started by onteon in /opt/onteon/onteon-node-manager/start)
2021-10-21 12:59:38.443  INFO 829 --- [           main] o.d.m.o.OnteonDemoAppCookbookApplication : No active profile set, falling back to default profiles: default
2021-10-21 12:59:39.370  INFO 829 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2021-10-21 12:59:39.442  INFO 829 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 62 ms. Found 2 JPA repository interfaces.
2021-10-21 12:59:40.218  INFO 829 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 10000 (http)
2021-10-21 12:59:40.230  INFO 829 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-10-21 12:59:40.230  INFO 829 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.50]
2021-10-21 12:59:41.412  INFO 829 --- [           main] o.a.c.c.C.[.[localhost].[/cookbook]      : Initializing Spring embedded WebApplicationContext
2021-10-21 12:59:41.412  INFO 829 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2891 ms
2021-10-21 12:59:41.451  INFO 829 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2021-10-21 12:59:41.699  INFO 829 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2021-10-21 12:59:41.706  INFO 829 --- [           main] o.s.b.a.h2.H2ConsoleAutoConfiguration    : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
2021-10-21 12:59:41.826  WARN 829 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2021-10-21 12:59:41.936  INFO 829 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2021-10-21 12:59:42.058  INFO 829 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.32.Final
2021-10-21 12:59:42.211  INFO 829 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2021-10-21 12:59:42.370  INFO 829 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2021-10-21 12:59:43.227  INFO 829 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2021-10-21 12:59:43.239  INFO 829 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
Created users
Username: pbenard2l  Password: password  Role: ROLE_USER
Username: rhaffnerp  Password: password  Role: ROLE_USER
Username: tjerman1p  Password: password  Role: ROLE_USER
Username: cpiff1v    Password: password  Role: ROLE_USER
Username: rewell24   Password: password  Role: ROLE_USER
Username: gdowntonv  Password: password  Role: ROLE_USER
Username: bivory26   Password: password  Role: ROLE_USER
Username: admin  Password: password  Role: ROLE_ADMIN
2021-10-21 12:59:45.009  INFO 829 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4a9a0d9d, org.springframework.security.web.context.SecurityContextPersistenceFilter@aba4a33, org.springframework.security.web.header.HeaderWriterFilter@6e1ac80e, org.springframework.web.filter.CorsFilter@6601cc93, org.springframework.security.web.authentication.logout.LogoutFilter@53a4637c, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@6efa2e06, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@25727f74, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1160c54b, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5c934077, org.springframework.security.web.session.SessionManagementFilter@4b95fdf2, org.springframework.security.web.access.ExceptionTranslationFilter@7c8ecc27, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@14404be2]
2021-10-21 12:59:45.244  INFO 829 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: ServletContext resource [/index.html]
2021-10-21 12:59:45.363  INFO 829 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 10000 (http) with context path '/cookbook'
2021-10-21 12:59:45.374  INFO 829 --- [           main] o.d.m.o.OnteonDemoAppCookbookApplication : Started OnteonDemoAppCookbookApplication in 7.406 seconds (JVM running for 7.941)
Spring Boot properly started
process:onteon-demo-app-cookbook-native-1.0.0-7a1e1975121c8c7-1c02fcff5fc0eba2cd76159e-1_2021_10_21_12_58_59-1c02fcff5fc0eba2cd76159e with pid:'829 was correctly started
resultType: SUCCESS
message:    Command executed successfully.

root@dbe41221577f:/opt/onteon# onteoncli application-instance list
id                       createdAt                applicationName                 applicationVersion applicationId            nodeId                   status
967cb25a3f8505a8d0160b34 2021-10-21T12:58:59.478Z onteon-demo-app-cookbook-native 1.1.0              617163bc3e1a0a5d1060e30a 1c02fcff5fc0eba2cd76159e running
7d7dae6f66ab28d95bbf79b3 2021-10-21T12:55:27.255Z nginx-edge                      1.0.0              null                     1c02fcff5fc0eba2cd76159e running
f7ecaf61c66e83c83f40c738 2021-10-21T12:55:27.132Z nginx-edge                      1.0.0              null                     a667a077dd8dd7d580ff563b running
3b74c7a53dd36b3a0b68e8a7 2021-10-21T12:55:26.131Z nginx-inner                     1.0.0              null                     1c02fcff5fc0eba2cd76159e running
6ba03d26d534d6092354dec2 2021-10-21T12:55:26.004Z nginx-inner                     1.0.0              null                     a667a077dd8dd7d580ff563b running

If application has started, you can access it here: http://localhost:8020/_by_name/onteon-demo-app-cookbook-native/cookbook/

Distributions

Distribution automatically manages application instances . You need to specify application that you want to distribute and number of instances. The Distribution will manage it automatically, and you can always change the number of instances. Additionally, you can specify the distribution's logic with the scripts.

Upload docker application

First, lets upload the second application called Demo App Fridge. It is a containerized Docker application.

root@dbe41221577f:/opt/onteon# onteoncli application-registry upload onteon_files/applications/without-sonario/onteon-demo-app-fridge-docker.tar.gz
Starting upload session...
Sending part no 0...
Finishing upload session...
uploaded: true

root@dbe41221577f:/opt/onteon# onteoncli application list
id                       createdAt                updatedAt                name                            version type     processType
617164ef3e1a0a5d1060e3e6 2021-10-21T13:02:39.369Z 2021-10-21T13:02:39.369Z onteon-demo-app-fridge-docker   1.0.0   standard docker
617163bc3e1a0a5d1060e30a 2021-10-21T12:57:32.334Z 2021-10-21T12:57:32.334Z onteon-demo-app-cookbook-native 1.1.0   standard native

Copy the id of fridge application. You will need that in the next step.

Create distribution

You can create distribution in two ways:

  • by specifying all information in command line. Read more
  • by distribution file - covered in this tutorial

Lets create distribution file:

application: 617164ef3e1a0a5d1060e3e6   # id of application that you copied in previous step
numberOfInstances: 2  # number of instances
scripts:
  checkIfNodeCanAcceptNewApplicationInstance: defaultAvailableNodeOnlyCINCANAIV1      # default distribution script
  selectNodeForNewApplicationInstance: defaultApplicationInstancesCountOnlySNFNAIV1   # default distribution script
  selectApplicationInstanceToRemove: defaultApplicationInstancesCountOnlySAITRV1      # default distribution script

You can execute command below, to create file:

cat <<EOT >> distribution.yml
application: 617164ef3e1a0a5d1060e3e6
numberOfInstances: 2
scripts:
  checkIfNodeCanAcceptNewApplicationInstance: defaultAvailableNodeOnlyCINCANAIV1
  selectNodeForNewApplicationInstance: defaultApplicationInstancesCountOnlySNFNAIV1
  selectApplicationInstanceToRemove: defaultApplicationInstancesCountOnlySAITRV1
EOT

Now you can create distribution by executing onteoncli distribution create-from-file distribution.yml, and then watch how distribution works with watch onteoncli application-instance list command.

root@dbe41221577f:/opt/onteon# onteoncli distribution create-from-file distribution.yml
id:                                                 617165253e1a0a5d1060e417
createdAT:                                          2021-10-21T13:03:33.952Z
updatedAt:                                          2021-10-21T13:03:33.952Z
applicationId:                                      617164ef3e1a0a5d1060e3e6
numberOfInstances:                                  2
checkIfNodeCanAcceptNewApplicationInstanceScriptId: 6171632f3e1a0a5d1060e2a9
selectNodeForNewApplicationInstanceScriptId:        6171632f3e1a0a5d1060e2a5
selectApplicationInstanceToRemoveScriptId:          6171632f3e1a0a5d1060e2a7

root@dbe41221577f:/opt/onteon# onteoncli application-instance list
id                       createdAt                applicationName                 applicationVersion applicationId            nodeId                   status
30d64058829e7bc70c74a7c6 2021-10-21T13:04:07.867Z onteon-demo-app-fridge-docker   1.0.0              617164ef3e1a0a5d1060e3e6 a667a077dd8dd7d580ff563b running
a5608d9496d549b1e5476308 2021-10-21T13:03:43.649Z onteon-demo-app-fridge-docker   1.0.0              617164ef3e1a0a5d1060e3e6 a667a077dd8dd7d580ff563b running
967cb25a3f8505a8d0160b34 2021-10-21T12:58:59.478Z onteon-demo-app-cookbook-native 1.1.0              617163bc3e1a0a5d1060e30a 1c02fcff5fc0eba2cd76159e running
7d7dae6f66ab28d95bbf79b3 2021-10-21T12:55:27.255Z nginx-edge                      1.0.0              null                     1c02fcff5fc0eba2cd76159e running
f7ecaf61c66e83c83f40c738 2021-10-21T12:55:27.132Z nginx-edge                      1.0.0              null                     a667a077dd8dd7d580ff563b running
3b74c7a53dd36b3a0b68e8a7 2021-10-21T12:55:26.131Z nginx-inner                     1.0.0              null                     1c02fcff5fc0eba2cd76159e running
6ba03d26d534d6092354dec2 2021-10-21T12:55:26.004Z nginx-inner                     1.0.0              null                     a667a077dd8dd7d580ff563b running

If your application instances have status 'running', open http://localhost:8020/_by_name/onteon-demo-app-fridge-docker/ in your browser. You should not be able to access this application because it is configured to be unavailable in external load balancer. But you can see it is working. Go to http://localhost:8020/_by_name/onteon-demo-app-cookbook-native/cookbook/sign#in and login with user admin and password password. Then click 'My fridge' button in the top navigation bar. You should see list of items that was retrieved from fridge application via inner load balancer.

Modify distribution

Now you can try to change number of distribution instances. First, get the id of distribution that you want to modify. Then execute onteoncli distribution set-number-of-instance <distribution-id> <new-number-of-instances>.

root@dbe41221577f:/opt/onteon# onteoncli distribution list 
id                       createdAt                updatedAt                applicationId            numberOfInstances
617165253e1a0a5d1060e417 2021-10-21T13:03:33.952Z 2021-10-21T13:03:33.952Z 617164ef3e1a0a5d1060e3e6 2

root@dbe41221577f:/opt/onteon# onteoncli distribution set-number-of-instances 617165253e1a0a5d1060e417 4
id:                                                 617165253e1a0a5d1060e417
createdAT:                                          2021-10-21T13:03:33.952Z
updatedAt:                                          2021-10-21T13:17:54.81Z
applicationId:                                      617164ef3e1a0a5d1060e3e6
numberOfInstances:                                  4
checkIfNodeCanAcceptNewApplicationInstanceScriptId: 6171632f3e1a0a5d1060e2a9
selectNodeForNewApplicationInstanceScriptId:        6171632f3e1a0a5d1060e2a5
selectApplicationInstanceToRemoveScriptId:          6171632f3e1a0a5d1060e2a7

root@dbe41221577f:/opt/onteon# onteoncli application-instance list
id                       createdAt                applicationName                 applicationVersion applicationId            nodeId                   status
213ea76b4c29a635b2ae1ce7 2021-10-21T13:18:10.082Z onteon-demo-app-fridge-docker   1.0.0              617164ef3e1a0a5d1060e3e6 a667a077dd8dd7d580ff563b running
204a618b5c742fa92fcb832c 2021-10-21T13:18:02.652Z onteon-demo-app-fridge-docker   1.0.0              617164ef3e1a0a5d1060e3e6 1c02fcff5fc0eba2cd76159e running
30d64058829e7bc70c74a7c6 2021-10-21T13:04:07.867Z onteon-demo-app-fridge-docker   1.0.0              617164ef3e1a0a5d1060e3e6 a667a077dd8dd7d580ff563b running
a5608d9496d549b1e5476308 2021-10-21T13:03:43.649Z onteon-demo-app-fridge-docker   1.0.0              617164ef3e1a0a5d1060e3e6 a667a077dd8dd7d580ff563b running
967cb25a3f8505a8d0160b34 2021-10-21T12:58:59.478Z onteon-demo-app-cookbook-native 1.1.0              617163bc3e1a0a5d1060e30a 1c02fcff5fc0eba2cd76159e running
7d7dae6f66ab28d95bbf79b3 2021-10-21T12:55:27.255Z nginx-edge                      1.0.0              null                     1c02fcff5fc0eba2cd76159e running
f7ecaf61c66e83c83f40c738 2021-10-21T12:55:27.132Z nginx-edge                      1.0.0              null                     a667a077dd8dd7d580ff563b running
3b74c7a53dd36b3a0b68e8a7 2021-10-21T12:55:26.131Z nginx-inner                     1.0.0              null                     1c02fcff5fc0eba2cd76159e running
6ba03d26d534d6092354dec2 2021-10-21T12:55:26.004Z nginx-inner                     1.0.0              null                     a667a077dd8dd7d580ff563b running