Prepare 0.9.0 release (#123)

diff --git a/CHANGES.md b/CHANGES.md
index 20b5af5..3017d4e 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -2,6 +2,26 @@
 ==================
 Release Notes.
 
+0.9.0
+------------------
+
+### Features
+
+- Add the sub-command `dependency instance` to query instance relationships (#117)
+
+### Bug Fixes
+
+- fix: `multiple-linear` command's `labels` type can be string type (#122)
+- Add missing `dest-service-id` `dest-service-name` to `metrics linear` command (#121)
+- Fix the wrong name when getting `destInstance` flag (#118)
+
+### Chores
+
+- Upgrade Go version to 1.16 (#120)
+- Migrate tests to infra-e2e, overhaul the flags names (#119)
+- Publish Docker snapshot images to ghcr (#116)
+- Remove dist directory when build release source tar (#115)
+
 0.8.0
 ------------------
 
diff --git a/Dockerfile b/Dockerfile
index 1217f17..e220dab 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -13,10 +13,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-ARG VERSION
-
 FROM golang:1.16 AS builder
 
+ARG VERSION
+
+ENV VERSION=$VERSION
 ENV CGO_ENABLED=0
 ENV GO111MODULE=on
 
@@ -28,7 +29,7 @@
 
 COPY . .
 
-RUN make linux && mv bin/swctl-*-linux-amd64 /swctl
+RUN make install DESTDIR=/
 
 FROM alpine
 
diff --git a/Makefile b/Makefile
index 5b74b3e..ef592ff 100644
--- a/Makefile
+++ b/Makefile
@@ -137,7 +137,7 @@
 	fi
 
 .PHONY: docker
-docker:
+docker: clean
 	docker build --build-arg VERSION=$(VERSION) . -t $(HUB)/$(APP_NAME):$(VERSION)
 
 .PHONY: docker.push