diff --git a/6/6.1/oap/README.md b/6/6.1/oap/README.md
index 83e71dc..1df96a0 100644
--- a/6/6.1/oap/README.md
+++ b/6/6.1/oap/README.md
@@ -32,9 +32,9 @@
  - `consul`, If set this value, all enviroment variables of `cluster.consul` in `application.yml` are avaliable.
  
 ## SW_STORAGE
-Default value is `H2`, avaliable values are:
+Default value is `h2`, avaliable values are:
 
- - `H2`, If set this value, all enviroment variables of `storage.h2` in `application.yml` are avaliable.
+ - `h2`, If set this value, all enviroment variables of `storage.h2` in `application.yml` are avaliable.
  - `elasticsearch`, If set this value, all enviroment variables of `stroage.elasticsearch` in `application.yml` are avaliable.
  - `mysql`, If set this value, all enviroment variables of `stroage.mysql` in `application.yml` are avaliable.
  
diff --git a/6/6.1/ui/README.md b/6/6.1/ui/README.md
new file mode 100644
index 0000000..87a6aa1
--- /dev/null
+++ b/6/6.1/ui/README.md
@@ -0,0 +1,35 @@
+# Apache SkyWalking UI image
+
+**Docker images are not official ASF releases but provided for convenience. Recommended usage is always to build the source**
+
+<img src="http://skywalking.apache.org/assets/logo.svg" alt="Sky Walking logo" height="90px" align="right" />
+
+**SkyWalking**: an APM(application performance monitor) system, especially designed for 
+microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures.
+
+[![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=for-the-badge&label=Stars&logo=github)](https://github.com/apache/incubator-skywalking)
+[![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=for-the-badge&label=Follow&logo=twitter)](https://twitter.com/AsfSkyWalking)
+
+You could find docker file at [here](https://github.com/apache/incubator-skywalking-docker)
+
+This image would start up SkyWalking UI only. 
+
+[SkyWalking K8s deployment scripts](https://github.com/apache/incubator-skywalking-kubernetes) use this image by default.
+
+# How to use this image
+
+## Start a container to connect oap server whose address is `oap:12800`
+
+```
+$ docker run --name oap --restart always -d -e SW_OAP_ADDRESS=oap:12800 apache/skywalking-ui:6.1.0
+```
+
+# Configuration
+
+We could set up environment variables to configure this image.
+
+## SW_OAP_ADDRESS
+The address of OAP server. Default value is `127.0.0.1:12800`.
+ 
+## SW_TIMEOUT
+Reading timeout. Default value is `20000`(millisecond).
\ No newline at end of file
diff --git a/6/6.2/base/Dockerfile b/6/6.2/base/Dockerfile
new file mode 100644
index 0000000..35aa9eb
--- /dev/null
+++ b/6/6.2/base/Dockerfile
@@ -0,0 +1,97 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM openjdk:8-jre-alpine AS build
+
+LABEL maintainer="hanahmily@apache.org"
+
+# Install required packages
+RUN apk add --no-cache \
+    bash \
+    python \
+    su-exec
+
+
+ENV SKYWALKING_HOME=/skywalking
+RUN mkdir -p "${SKYWALKING_HOME}"
+WORKDIR $SKYWALKING_HOME
+
+ENV GPG_KEYS A968F6905E0ACB59E5B24C15D3D9CD50820184C2 B0801BC746F965029A1338072EF5026E70A55777 D360AB2AB20B28403270E2CBE8608938DB25E06B
+ENV SKYWALKING_VERSION=6.2.0
+ENV SKYWALKING_SHA512 753cd9cfeca258cb31355be9c6f8d7e234a488b29b20d1f0e8b3c89c404bcf4fce49fa825c5cb674a42d56e8dc3947b9592b3c8d96c82df84b3926eb341481a6
+
+ENV SKYWALKING_TGZ_URLS \
+        https://www.apache.org/dyn/closer.cgi?action=download&filename=skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz \
+        # if the version is outdated, we might have to pull from the dist/archive :/
+	    https://www-us.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz \
+	    https://www.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz \
+	    https://archive.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz
+
+ENV SKYWALKING_ASC_URLS \
+        https://www.apache.org/dyn/closer.cgi?action=download&filename=skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz.asc \
+        # if the version is outdated, we might have to pull from the dist/archive :/
+	    https://www-us.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz.asc \
+	    https://www.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz.asc \
+	    https://archive.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz.asc
+
+RUN set -eux; \
+	\
+	apk add --no-cache --virtual .fetch-deps \
+		gnupg \
+		\
+		ca-certificates \
+		openssl \
+	; \
+	\
+	export GNUPGHOME="$(mktemp -d)"; \
+	for key in $GPG_KEYS; do \
+		gpg --batch --keyserver pgp.surfnet.nl --recv-keys "$key"; \
+	done; \
+	\
+	success=; \
+	for url in $SKYWALKING_TGZ_URLS; do \
+		if wget -O skywalking.tar.gz "$url"; then \
+			success=1; \
+			break; \
+		fi; \
+	done; \
+	[ -n "$success" ]; \
+	\
+	echo "$SKYWALKING_SHA512 *skywalking.tar.gz" | sha512sum -c -; \
+	\
+	success=; \
+	for url in $SKYWALKING_ASC_URLS; do \
+		if wget -O skywalking.tar.gz.asc "$url"; then \
+			success=1; \
+			break; \
+		fi; \
+	done; \
+	[ -n "$success" ]; \
+	\
+	gpg --batch --verify skywalking.tar.gz.asc skywalking.tar.gz; \
+	tar -xvf skywalking.tar.gz --strip-components=1; \
+	rm -rf bin/; \
+	rm skywalking.tar.gz*; \
+	command -v gpgconf && gpgconf --kill all || :; \
+	rm -rf "$GNUPGHOME"; \
+    apk del .fetch-deps
+
+FROM openjdk:8-jre-alpine
+
+COPY --from=build /skywalking /skywalking
+
+RUN apk add --no-cache \
+    bash
\ No newline at end of file
diff --git a/6/6.2/compose/docker-compose.yml b/6/6.2/compose/docker-compose.yml
new file mode 100644
index 0000000..7c4964e
--- /dev/null
+++ b/6/6.2/compose/docker-compose.yml
@@ -0,0 +1,59 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+version: '3.3'
+services:
+  elasticsearch:
+    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.1
+    container_name: elasticsearch
+    restart: always
+    ports:
+      - 9200:9200
+      - 9300:9300
+    environment:
+      - discovery.type=single-node
+      - bootstrap.memory_lock=true
+      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+    ulimits:
+      memlock:
+        soft: -1
+        hard: -1
+  oap:
+    image: apache/skywalking-oap-server:6.1.0
+    container_name: oap
+    depends_on:
+      - elasticsearch
+    links:
+      - elasticsearch
+    restart: always
+    ports:
+      - 11800:11800
+      - 12800:12800
+    environment:
+      SW_STORAGE: elasticsearch
+      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
+  ui:
+    image: apache/skywalking-ui:6.1.0
+    container_name: ui
+    depends_on:
+      - oap
+    links:
+      - oap
+    restart: always
+    ports:
+      - 8080:8080
+    environment:
+      SW_OAP_ADDRESS: oap:12800
diff --git a/6/6.2/oap/Dockerfile b/6/6.2/oap/Dockerfile
new file mode 100644
index 0000000..f265acc
--- /dev/null
+++ b/6/6.2/oap/Dockerfile
@@ -0,0 +1,43 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM apache/skywalking-base:6.2.0 AS build
+
+WORKDIR skywalking
+
+RUN set -eux; \
+    rm -rf "config/log4j2.xml"; \
+    rm -rf "webapp"; rm -rf "agent";
+
+COPY log4j2.xml config/
+COPY docker-entrypoint.sh .
+
+FROM openjdk:8-jre-alpine
+
+ENV JAVA_OPTS=" -Xms256M "
+
+LABEL maintainer="hanahmily@apache.org"
+
+COPY --from=build /skywalking /skywalking
+
+WORKDIR skywalking
+
+RUN apk add --no-cache \
+    bash
+
+EXPOSE 12800 11800 1234
+
+ENTRYPOINT ["bash", "docker-entrypoint.sh"]
\ No newline at end of file
diff --git a/6/6.2/oap/README.md b/6/6.2/oap/README.md
new file mode 100644
index 0000000..d41402c
--- /dev/null
+++ b/6/6.2/oap/README.md
@@ -0,0 +1,59 @@
+# Apache SkyWalking OAP Server Docker Files
+
+<img src="http://skywalking.apache.org/assets/logo.svg" alt="Sky Walking logo" height="90px" align="right" />
+
+**SkyWalking**: an APM(application performance monitor) system, especially designed for 
+microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures.
+
+# How to use this image
+
+## Start a `standlone` container with `H2` storage
+
+```
+$ docker run --name oap --restart always -d apache/skywalking-oap-server:6.2.0
+```
+
+## Start a `standlone` container with `elasticsearch` storage whose address is `elasticsearch:9200`
+
+```
+$ docker run --name oap --restart always -d -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 apache/skywalking-oap-server:6.2.0
+```
+
+# Configuration
+
+We could set up environment variables to configure this image. Most of them are defined in [backend-setup](https://github.com/apache/skywalking/blob/v6.2.0/docs/en/setup/backend/backend-setup.md), but Apache SkyWalking Docker Image adds extra environment variables to help the user to compose it properly. The details are located in [docker-entrypoint.sh](docker-entrypoint.sh)
+
+## SW_CLUSTER
+Default value is `standalone`, avaliable values are:
+
+ - `standlone`, If set this value, all enviroment variables of `cluster.standlone` in `application.yml` are avaliable.
+ - `zookeeper`, If set this value, all enviroment variables of `cluster.zookeeper` in `application.yml` are avaliable.
+ - `kubernetes`, If set this value, all enviroment variables of `cluster.kubernetes` in `application.yml` are avaliable.
+ - `consul`, If set this value, all enviroment variables of `cluster.consul` in `application.yml` are avaliable.
+ - `etcd`, If set this value, all enviroment variables of `cluster.etcd` in `application.yml` are avaliable.
+ - `nacos`, If set this value, all enviroment variables of `cluster.nacos` in `application.yml` are avaliable.
+ 
+## SW_STORAGE
+Default value is `h2`, avaliable values are:
+
+ - `h2`, If set this value, all enviroment variables of `storage.h2` in `application.yml` are avaliable.
+ - `elasticsearch`, If set this value, all enviroment variables of `stroage.elasticsearch` in `application.yml` are avaliable.
+ - `mysql`, If set this value, all enviroment variables of `stroage.mysql` in `application.yml` are avaliable.
+
+ ## SW_CONFIGURATION
+Default value is `none`, avaliable values are:
+
+ - `apollo`, If set this value, all enviroment variables of `configuration.apollo` in `application.yml` are avaliable.
+ - `nacos`, If set this value, all enviroment variables of `configuration.nacos` in `application.yml` are avaliable.
+ - `zookeeper`, If set this value, all enviroment variables of `configuration.zookeeper` in `application.yml` are avaliable.
+ 
+## XXX_ENABLED
+
+There are also some other configuration switchers to extend default configuration, they also have a suffix `_ENABLED`.
+
+ - `SW_RECEIVER_ZIPKIN_ENABLED` turns on/off zipkin receiver
+ - `SW_RECEIVER_JAEGER_ENABLED` turns on/off jaeger receiver
+ - `SW_EXPORTER_ENABLED`  turns on/off exporter
+
+# License
+[Apache 2.0 License.](/LICENSE)
diff --git a/6/6.2/oap/docker-entrypoint.sh b/6/6.2/oap/docker-entrypoint.sh
new file mode 100644
index 0000000..5897b00
--- /dev/null
+++ b/6/6.2/oap/docker-entrypoint.sh
@@ -0,0 +1,346 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#!/bin/bash
+
+set -e
+
+var_application_file="config/application.yml"
+
+generateClusterStandalone() {
+    echo "cluster:" >> ${var_application_file}
+    echo "  standalone:" >> ${var_application_file}
+}
+
+generateClusterZookeeper() {
+    cat <<EOT >> ${var_application_file}
+cluster:
+  zookeeper:
+    nameSpace: \${SW_NAMESPACE:""}
+    hostPort: \${SW_CLUSTER_ZK_HOST_PORT:zookeeper:2181}
+    #Retry Policy
+    baseSleepTimeMs: \${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
+    maxRetries: \${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
+EOT
+}
+
+generateClusterK8s() {
+    cat <<EOT >> ${var_application_file}
+cluster:
+  kubernetes:
+    watchTimeoutSeconds: \${SW_CLUSTER_K8S_WATCH_TIMEOUT:60}
+    namespace: \${SW_CLUSTER_K8S_NAMESPACE:default}
+    labelSelector: \${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
+    uidEnvName: \${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
+EOT
+}
+
+generateClusterConsul() {
+     cat <<EOT >> ${var_application_file}
+cluster:
+  consul:
+    serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
+    # Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
+    hostPort: \${SW_CLUSTER_CONSUL_HOST_PORT:consul:8500}
+EOT
+}
+
+generateClusterEtcd() {
+    cat <<EOT >> ${var_application_file}
+cluster:
+  etcd:
+    serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
+    # Etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
+    hostPort: \${SW_CLUSTER_ETCD_HOST_PORT:etcd:2379}
+EOT
+}
+
+generateClusterNacos() {
+    cat <<EOT >> ${var_application_file}
+cluster:
+  nacos:
+    serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
+    hostPort: \${SW_CLUSTER_NACOS_HOST_PORT:nacos:8848}
+EOT
+}
+
+generateStorageElastisearch() {
+    cat <<EOT >> ${var_application_file}
+storage:
+  elasticsearch:
+    nameSpace: \${SW_NAMESPACE:""}
+    clusterNodes: \${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
+    user: \${SW_ES_USER:""}
+    password: \${SW_ES_PASSWORD:""}
+    indexShardsNumber: \${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
+    indexReplicasNumber: \${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
+    # Those data TTL settings will override the same settings in core module.
+    recordDataTTL: \${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
+    otherMetricsDataTTL: \${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
+    monthMetricsDataTTL: \${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
+    # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
+    bulkActions: \${SW_STORAGE_ES_BULK_ACTIONS:2000} # Execute the bulk every 2000 requests
+    bulkSize: \${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
+    flushInterval: \${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
+    concurrentRequests: \${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
+    metadataQueryMaxSize: \${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
+    segmentQueryMaxSize: \${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
+EOT
+}
+
+generateStorageH2() {
+    cat <<EOT >> ${var_application_file}
+storage:
+  h2:
+    driver: \${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
+    url: \${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
+    user: \${SW_STORAGE_H2_USER:sa}
+    metadataQueryMaxSize: \${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
+EOT
+}
+
+generateStorageMySQL() {
+    cat <<EOT >> ${var_application_file}
+storage:
+  mysql:
+    metadataQueryMaxSize: \${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
+EOT
+}
+
+generateConfigurationNone() {
+    cat <<EOT >> ${var_application_file}
+configuration:
+  none:
+EOT
+}
+
+generateConfigurationApollo() {
+    cat <<EOT >> ${var_application_file}
+configuration:
+  apollo:
+    apolloMeta: \${SW_CONFIGURATION_APOLLO_META:http://apollo:8080}
+    apolloCluster: \${SW_CONFIGURATION_APOLLO_CLUSTER:default}
+    apolloEnv: \${SW_CONFIGURATION_APOLLO_ENV:""}
+    appId: \${SW_CONFIGURATION_APOLLO_APP_ID:skywalking}
+    period: \${SW_CONFIGURATION_APOLLO_PERIOD:5}
+EOT
+}
+
+generateConfigurationNacos() {
+    cat <<EOT >> ${var_application_file}
+configuration:
+  nacos:
+    # Nacos Server Host
+    serverAddr: \${SW_CONFIGURATION_NACO_SERVER_ADDR:naco}
+    # Nacos Server Port
+    port: \${SW_CONFIGURATION_NACO_PORT:8848}
+    # Nacos Configuration Group
+    group: \${SW_CONFIGURATION_NACO_GROUP:skywalking}
+    # Unit seconds, sync period. Default fetch every 60 seconds.
+    period : \${SW_CONFIGURATION_NACO_PERIOD:5}
+    # the name of current cluster, set the name if you want to upstream system known.
+    clusterName: \${SW_CONFIGURATION_NACO_CLUSTER_NAME:default}
+EOT
+}
+
+generateConfigurationZookeeper() {
+    cat <<EOT >> ${var_application_file}
+configuration:
+  zookeeper:
+    period: \${SW_CONFIGURATION_ZOOKEEPER_PERIOD:60} # Unit seconds, sync period. Default fetch every 60 seconds.
+    nameSpace: \${SW_CONFIGURATION_ZOOKEEPER_NAMESPACE:/default}
+    hostPort: \${SW_CONFIGURATION_ZOOKEEPER_HOST_PATH:localhost:2181}
+    #Retry Policy
+    baseSleepTimeMs: \${SW_CONFIGURATION_ZOOKEEPER_BASE_SLEEP_TIME_MS:1000} # initial amount of time to wait between retries
+    maxRetries: \${SW_CONFIGURATION_ZOOKEEPER_MAX_RETRIES:3}3 # max number of times to retry
+EOT
+}
+
+validateVariables() {
+    name=$1; value=$2; list=$3
+    valid=false
+    for c in ${list} ; do
+        if [[ "$c" = "$value" ]]; then
+            valid=true
+        fi
+    done
+
+    if ! ${valid}; then
+        echo "Error: $name=$value please specify $name = $list"
+        exit 1
+    fi
+}
+
+generateApplicationYaml() {
+    # validate
+    [[ -z "$SW_CLUSTER" ]] && [[ -z "$SW_STORAGE" ]] && [[ -z "$SW_CONFIGURATION" ]] \
+        && { echo "Error: please specify \"SW_CLUSTER\" \"SW_STORAGE\" \"SW_CONFIGURATION\""; exit 1; }
+
+    validateVariables "SW_CLUSTER" "$SW_CLUSTER" "standalone zookeeper kubernetes consul etcd nacos"
+
+    validateVariables "SW_STORAGE" "$SW_STORAGE" "elasticsearch h2 mysql"
+
+    validateVariables "SW_CONFIGURATION" "$SW_CONFIGURATION" "none apollo nacos zookeeper"
+
+    echo "# Generated by 'docker-entrypoint.sh'" > ${var_application_file}
+    #generate cluster
+    case ${SW_CLUSTER} in
+    standalone) generateClusterStandalone;;
+    zookeeper) generateClusterZookeeper;;
+    kubernetes) generateClusterK8s;;
+    consul) generateClusterConsul;;
+    etcd) generateClusterEtcd;;
+    nacos) generateClusterNacos;;
+    esac
+
+    #generate core
+    cat <<EOT >> ${var_application_file}
+core:
+  default:
+    # Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
+    # Receiver: Receive agent data, Level 1 aggregate
+    # Aggregator: Level 2 aggregate
+    role: \${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator
+    restHost: \${SW_CORE_REST_HOST:0.0.0.0}
+    restPort: \${SW_CORE_REST_PORT:12800}
+    restContextPath: \${SW_CORE_REST_CONTEXT_PATH:/}
+    gRPCHost: \${SW_CORE_GRPC_HOST:0.0.0.0}
+    gRPCPort: \${SW_CORE_GRPC_PORT:11800}
+    downsampling:
+    - Hour
+    - Day
+    - Month
+    # Set a timeout on metrics data. After the timeout has expired, the metrics data will automatically be deleted.
+    enableDataKeeperExecutor: \${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true} # Turn it off then automatically metrics data delete will be close.
+    recordDataTTL: \${SW_CORE_RECORD_DATA_TTL:90} # Unit is minute
+    minuteMetricsDataTTL: \${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute
+    hourMetricsDataTTL: \${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour
+    dayMetricsDataTTL: \${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day
+    monthMetricsDataTTL: \${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month
+EOT
+
+    # generate storage
+    case ${SW_STORAGE} in
+    elasticsearch) generateStorageElastisearch;;
+    h2) generateStorageH2;;
+    mysql) generateStorageMySQL;;
+    esac
+
+    cat <<EOT >> ${var_application_file}
+receiver-sharing-server:
+  default:
+receiver-register:
+  default:
+receiver-trace:
+  default:
+    bufferPath: \${SW_RECEIVER_BUFFER_PATH:../trace-buffer/}  # Path to trace buffer files, suggest to use absolute path
+    bufferOffsetMaxFileSize: \${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
+    bufferDataMaxFileSize: \${SW_RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
+    bufferFileCleanWhenRestart: \${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
+    sampleRate: \${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
+    slowDBAccessThreshold: \${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
+receiver-jvm:
+  default:
+receiver-clr:
+  default:
+service-mesh:
+  default:
+    bufferPath: \${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/}  # Path to trace buffer files, suggest to use absolute path
+    bufferOffsetMaxFileSize: \${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
+    bufferDataMaxFileSize: \${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
+    bufferFileCleanWhenRestart: \${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
+istio-telemetry:
+  default:
+query:
+  graphql:
+    path: \${SW_QUERY_GRAPHQL_PATH:/graphql}
+alarm:
+  default:
+telemetry:
+  prometheus:
+    host: \${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
+    port: \${SW_TELEMETRY_PROMETHEUS_PORT:1234}
+EOT
+    # generate configuration
+    case ${SW_CONFIGURATION} in
+    none) generateConfigurationNone;;
+    apollo) generateConfigurationApollo;;
+    nacos) generateConfigurationNacos;;
+    zookeeper) generateConfigurationZookeeper;;
+    esac
+
+    cat <<EOT >> ${var_application_file}
+envoy-metric:
+  default:
+EOT
+    if [[ "$SW_ENVOY_ALS_ENABLED" = "true" ]]; then
+        cat <<EOT >> ${var_application_file}
+    alsHTTPAnalysis: \${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:k8s-mesh}
+EOT
+    fi
+
+    if [[ "$SW_RECEIVER_ZIPKIN_ENABLED" = "true" ]]; then
+        cat <<EOT >> ${var_application_file}
+receiver_zipkin:
+  default:
+    host: \${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
+    port: \${SW_RECEIVER_ZIPKIN_PORT:9411}
+    contextPath: \${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
+EOT
+    fi
+
+    if [[ "$SW_RECEIVER_JAEGER_ENABLED" = "true" ]]; then
+        cat <<EOT >> ${var_application_file}
+receiver_jaeger:
+  default:
+    gRPCHost: \${SW_RECEIVER_JAEGER_HOST:0.0.0.0}
+    gRPCPort: \${SW_RECEIVER_JAEGER_PORT:14250}
+EOT
+    fi
+
+    if [[ "$SW_EXPORTER_ENABLED" = "true" ]]; then
+        cat <<EOT >> ${var_application_file}
+exporter:
+  grpc:
+    targetHost: \${SW_EXPORTER_GRPC_HOST:127.0.0.1}
+    targetPort: \${SW_EXPORTER_GRPC_PORT:9870}
+EOT
+    fi
+}
+
+echo "[Entrypoint] Apache SkyWalking Docker Image"
+
+SW_CLUSTER=${SW_CLUSTER:-standalone}
+SW_STORAGE=${SW_STORAGE:-h2}
+SW_CONFIGURATION=${SW_CONFIGURATION:-none}
+
+if [[ -z "$SW_L0AD_CONFIG_FILE_FROM_VOLUME" ]] || [[ "$SW_L0AD_CONFIG_FILE_FROM_VOLUME" != "true" ]]; then
+    generateApplicationYaml
+    echo "Generated application.yml"
+    echo "-------------------------"
+    cat ${var_application_file}
+    echo "-------------------------"
+fi
+
+CLASSPATH="config:$CLASSPATH"
+for i in oap-libs/*.jar
+do
+    CLASSPATH="$i:$CLASSPATH"
+done
+
+set -ex
+exec java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap \
+     ${JAVA_OPTS} -classpath ${CLASSPATH} org.apache.skywalking.oap.server.starter.OAPServerStartUp "$@"
diff --git a/6/6.2/oap/log4j2.xml b/6/6.2/oap/log4j2.xml
new file mode 100644
index 0000000..b1f1818
--- /dev/null
+++ b/6/6.2/oap/log4j2.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  ~
+  -->
+
+<Configuration status="INFO">
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT">
+            <PatternLayout charset="UTF-8" pattern="%d - %c -%-4r [%t] %-5p %x - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <logger name="org.eclipse.jetty" level="INFO"/>
+        <logger name="org.apache.zookeeper" level="INFO"/>
+        <logger name="org.elasticsearch.common.network.IfConfig" level="INFO"/>
+        <logger name="io.grpc.netty" level="INFO"/>
+        <Root level="INFO">
+            <AppenderRef ref="Console"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/6/6.2/ui/Dockerfile b/6/6.2/ui/Dockerfile
new file mode 100644
index 0000000..aab7cb1
--- /dev/null
+++ b/6/6.2/ui/Dockerfile
@@ -0,0 +1,45 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM apache/skywalking-base:6.2.0 AS build
+
+WORKDIR skywalking
+
+RUN set -eux; \
+    rm -rf "config"; rm -rf "oap-libs"; \
+    rm -rf "agent";
+
+COPY docker-entrypoint.sh .
+COPY logback.xml webapp/
+
+FROM openjdk:8-jre-alpine
+
+ENV JAVA_OPTS=" -Xms256M " \
+    SW_OAP_ADDRESS="oap:12800" \
+    SW_TIMEOUT="20000"
+
+LABEL maintainer="hanahmily@apache.org"
+
+COPY --from=build /skywalking /skywalking
+
+WORKDIR skywalking
+
+RUN apk add --no-cache \
+    bash
+
+EXPOSE 8080
+
+ENTRYPOINT ["bash", "docker-entrypoint.sh"]
\ No newline at end of file
diff --git a/6/6.2/ui/README.md b/6/6.2/ui/README.md
new file mode 100644
index 0000000..c11377f
--- /dev/null
+++ b/6/6.2/ui/README.md
@@ -0,0 +1,35 @@
+# Apache SkyWalking UI image
+
+**Docker images are not official ASF releases but provided for convenience. Recommended usage is always to build the source**
+
+<img src="http://skywalking.apache.org/assets/logo.svg" alt="Sky Walking logo" height="90px" align="right" />
+
+**SkyWalking**: an APM(application performance monitor) system, especially designed for 
+microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures.
+
+[![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=for-the-badge&label=Stars&logo=github)](https://github.com/apache/incubator-skywalking)
+[![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=for-the-badge&label=Follow&logo=twitter)](https://twitter.com/AsfSkyWalking)
+
+You could find docker file at [here](https://github.com/apache/incubator-skywalking-docker)
+
+This image would start up SkyWalking UI only. 
+
+[SkyWalking K8s deployment scripts](https://github.com/apache/incubator-skywalking-kubernetes) use this image by default.
+
+# How to use this image
+
+## Start a container to connect oap server whose address is `oap:12800`
+
+```
+$ docker run --name oap --restart always -d -e SW_OAP_ADDRESS=oap:12800 apache/skywalking-ui:6.2.0
+```
+
+# Configuration
+
+We could set up environment variables to configure this image.
+
+## SW_OAP_ADDRESS
+The address of OAP server. Default value is `127.0.0.1:12800`.
+ 
+## SW_TIMEOUT
+Reading timeout. Default value is `20000`(millisecond).
\ No newline at end of file
diff --git a/6/6.2/ui/docker-entrypoint.sh b/6/6.2/ui/docker-entrypoint.sh
new file mode 100644
index 0000000..6771e22
--- /dev/null
+++ b/6/6.2/ui/docker-entrypoint.sh
@@ -0,0 +1,26 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#!/bin/bash
+
+set -e
+
+export LOGGING_CONFIG="webapp/logback.xml"
+
+[[ ! -z "$SW_OAP_ADDRESS" ]] && export COLLECTOR_RIBBON_LISTOFSERVERS=${SW_OAP_ADDRESS} && echo "COLLECTOR_RIBBON_LISTOFSERVERS=$COLLECTOR_RIBBON_LISTOFSERVERS"
+[[ ! -z "$SW_TIMEOUT" ]] && export COLLECTOR_RIBBON_READTIMEOUT=${SW_TIMEOUT} && echo "COLLECTOR_RIBBON_READTIMEOUT=$COLLECTOR_RIBBON_READTIMEOUT"
+
+exec java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -jar webapp/skywalking-webapp.jar "$@"
diff --git a/6/6.2/ui/logback.xml b/6/6.2/ui/logback.xml
new file mode 100644
index 0000000..834036d
--- /dev/null
+++ b/6/6.2/ui/logback.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  ~
+  -->
+<configuration>
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
+</configuration>
\ No newline at end of file
