diff --git a/tools/codegen/core/gen_load_balancing_proto.sh b/tools/codegen/core/gen_load_balancing_proto.sh
index b0befc7e045..87c05f5fe80 100755
--- a/tools/codegen/core/gen_load_balancing_proto.sh
+++ b/tools/codegen/core/gen_load_balancing_proto.sh
@@ -70,8 +70,8 @@ read -r -d '' COPYRIGHT <<'EOF'
 
 EOF
 
-apt-get update -qq
-apt-get install -y clang-format-3.6
+# build clang-format docker image
+docker build -t grpc_clang_format tools/dockerfile/grpc_clang_format
 
 CURRENT_YEAR=$(date +%Y)
 COPYRIGHT_FILE=$(mktemp)
@@ -124,7 +124,15 @@ mv $TMPFILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.c"
 cat $COPYRIGHT_FILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.h" > $TMPFILE
 mv $TMPFILE "$OUTPUT_DIR/$PROTO_BASENAME.pb.h"
 
-clang-format-3.6 -style="{BasedOnStyle: Google, Language: Cpp}" -i "$OUTPUT_DIR/$PROTO_BASENAME.pb.c"
-clang-format-3.6 -style="{BasedOnStyle: Google, Language: Cpp}" -i "$OUTPUT_DIR/$PROTO_BASENAME.pb.h"
+docker run --rm=true \
+  -v ${HOST_GIT_ROOT:-`pwd`}:/local-code \
+  -t grpc_clang_format \
+  clang-format-3.6 \
+    -style="{BasedOnStyle: Google, Language: Cpp}" \
+    -i "/local-code/src/core/proto/grpc/lb/v0/$PROTO_BASENAME.pb.c" && \
+  clang-format-3.6 \
+    -style="{BasedOnStyle: Google, Language: Cpp}" \
+    -i "/local-code/src/core/proto/grpc/lb/v0/$PROTO_BASENAME.pb.h"
+
 
 popd > /dev/null