diff --git a/.github/build-push-action.png b/.github/build-push-action.png
index 8c88d49..7797546 100644
Binary files a/.github/build-push-action.png and b/.github/build-push-action.png differ
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index dbf5e2e..bd30bed 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -207,6 +207,37 @@ jobs:
         uses: crazy-max/ghaction-dump-context@v1
 
   error:
+    runs-on: ubuntu-latest
+    steps:
+      -
+        name: Checkout
+        uses: actions/checkout@v2
+      -
+        name: Stop docker
+        run: |
+          sudo systemctl stop docker
+      -
+        name: Build
+        id: docker_build
+        continue-on-error: true
+        uses: ./
+        with:
+          context: ./test
+          file: ./test/Dockerfile
+      -
+        name: Check
+        run: |
+          echo "${{ toJson(steps.docker_build) }}"
+          if [ "${{ steps.docker_build.outcome }}" != "failure" ] || [ "${{ steps.docker_build.conclusion }}" != "success" ]; then
+            echo "::error::Should have failed"
+            exit 1
+          fi
+      -
+        name: Dump context
+        if: always()
+        uses: crazy-max/ghaction-dump-context@v1
+
+  error-buildx:
     runs-on: ubuntu-latest
     steps:
       -
diff --git a/README.md b/README.md
index dcf15e0..6a1dfa3 100644
--- a/README.md
+++ b/README.md
@@ -43,7 +43,6 @@ ___
   * [outputs](#outputs)
 * [Troubleshooting](#troubleshooting)
 * [Keep up-to-date with GitHub Dependabot](#keep-up-to-date-with-github-dependabot)
-* [Limitation](#limitation)
 
 ## Usage
 
@@ -243,7 +242,3 @@ updates:
     schedule:
       interval: "daily"
 ```
-
-## Limitation
-
-This action is only available for Linux [virtual environments](https://help.github.com/en/articles/virtual-environments-for-github-actions#supported-virtual-environments-and-hardware-resources).
diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md
index 8ca55bb..42bf57b 100644
--- a/TROUBLESHOOTING.md
+++ b/TROUBLESHOOTING.md
@@ -1,6 +1,8 @@
 # Troubleshooting
 
 * [Cannot push to a registry](#cannot-push-to-a-registry)
+  * [BuildKit container logs](#buildkit-container-logs)
+  * [With containerd](#with-containerd)
 
 ## Cannot push to a registry
 
@@ -16,9 +18,13 @@ These issues are not directly related to this action but are rather linked to [b
 [buildkit](https://github.com/moby/buildkit), [containerd](https://github.com/containerd/containerd) or the registry
 on which you're pushing your image. The quality of error message depends on the registry and are usually not very informative.
 
+### BuildKit container logs
+
 To help you solve this, you have to [enable debugging in the setup-buildx](https://github.com/docker/setup-buildx-action#buildkit-container-logs)
 action step and attach BuildKit container logs to your issue.
 
+### With containerd
+
 Next you can test pushing with [containerd action](https://github.com/crazy-max/ghaction-setup-containerd) using the
 following workflow. If it works then open an issue on [buildkit](https://github.com/moby/buildkit) repository.
 
diff --git a/dist/index.js b/dist/index.js
index c5ff160..7ed1c91 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -2387,7 +2387,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 const fs = __importStar(__webpack_require__(747));
-const os = __importStar(__webpack_require__(87));
 const buildx = __importStar(__webpack_require__(295));
 const context = __importStar(__webpack_require__(842));
 const exec = __importStar(__webpack_require__(757));
@@ -2396,18 +2395,20 @@ const core = __importStar(__webpack_require__(186));
 function run() {
     return __awaiter(this, void 0, void 0, function* () {
         try {
-            if (os.platform() !== 'linux') {
-                throw new Error(`Only supported on linux platform`);
-            }
+            core.startGroup(`Docker info`);
+            yield exec.exec('docker', ['version']);
+            yield exec.exec('docker', ['info']);
+            core.endGroup();
             if (!(yield buildx.isAvailable())) {
-                throw new Error(`Buildx is required. See https://github.com/docker/setup-buildx-action to set up buildx.`);
+                core.setFailed(`Docker buildx is required. See https://github.com/docker/setup-buildx-action to set up buildx.`);
+                return;
             }
             stateHelper.setTmpDir(context.tmpDir());
             const buildxVersion = yield buildx.getVersion();
-            core.info(`📣 Buildx version: ${buildxVersion}`);
+            core.info(`Using buildx ${buildxVersion}`);
             const defContext = context.defaultContext();
             let inputs = yield context.getInputs(defContext);
-            core.info(`🏃 Starting build...`);
+            core.info(`Building...`);
             const args = yield context.getArgs(inputs, defContext, buildxVersion);
             yield exec.exec('docker', args).then(res => {
                 if (res.stderr != '' && !res.success) {
@@ -2416,9 +2417,10 @@ function run() {
             });
             const imageID = yield buildx.getImageID();
             if (imageID) {
-                core.info('🛒 Extracting digest...');
+                core.startGroup(`Extracting digest`);
                 core.info(`${imageID}`);
                 core.setOutput('digest', imageID);
+                core.endGroup();
             }
         }
         catch (error) {
@@ -2429,8 +2431,9 @@ function run() {
 function cleanup() {
     return __awaiter(this, void 0, void 0, function* () {
         if (stateHelper.tmpDir.length > 0) {
-            core.info(`🚿 Removing temp folder ${stateHelper.tmpDir}`);
+            core.startGroup(`Removing temp folder ${stateHelper.tmpDir}`);
             fs.rmdirSync(stateHelper.tmpDir, { recursive: true });
+            core.endGroup();
         }
     });
 }
@@ -4695,7 +4698,7 @@ function parseVersion(stdout) {
     return __awaiter(this, void 0, void 0, function* () {
         const matches = /\sv?([0-9.]+)/.exec(stdout);
         if (!matches) {
-            throw new Error(`Cannot parse Buildx version`);
+            throw new Error(`Cannot parse buildx version`);
         }
         return semver.clean(matches[1]);
     });
diff --git a/src/buildx.ts b/src/buildx.ts
index 327604a..0612710 100644
--- a/src/buildx.ts
+++ b/src/buildx.ts
@@ -100,7 +100,7 @@ export async function getVersion(): Promise<string> {
 export async function parseVersion(stdout: string): Promise<string> {
   const matches = /\sv?([0-9.]+)/.exec(stdout);
   if (!matches) {
-    throw new Error(`Cannot parse Buildx version`);
+    throw new Error(`Cannot parse buildx version`);
   }
   return semver.clean(matches[1]);
 }
diff --git a/src/main.ts b/src/main.ts
index 4a0fae7..03fb282 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,5 +1,4 @@
 import * as fs from 'fs';
-import * as os from 'os';
 import * as buildx from './buildx';
 import * as context from './context';
 import * as exec from './exec';
@@ -8,22 +7,24 @@ import * as core from '@actions/core';
 
 async function run(): Promise<void> {
   try {
-    if (os.platform() !== 'linux') {
-      throw new Error(`Only supported on linux platform`);
-    }
+    core.startGroup(`Docker info`);
+    await exec.exec('docker', ['version']);
+    await exec.exec('docker', ['info']);
+    core.endGroup();
 
     if (!(await buildx.isAvailable())) {
-      throw new Error(`Buildx is required. See https://github.com/docker/setup-buildx-action to set up buildx.`);
+      core.setFailed(`Docker buildx is required. See https://github.com/docker/setup-buildx-action to set up buildx.`);
+      return;
     }
     stateHelper.setTmpDir(context.tmpDir());
 
     const buildxVersion = await buildx.getVersion();
-    core.info(`📣 Buildx version: ${buildxVersion}`);
+    core.info(`Using buildx ${buildxVersion}`);
 
     const defContext = context.defaultContext();
     let inputs: context.Inputs = await context.getInputs(defContext);
 
-    core.info(`🏃 Starting build...`);
+    core.info(`Building...`);
     const args: string[] = await context.getArgs(inputs, defContext, buildxVersion);
     await exec.exec('docker', args).then(res => {
       if (res.stderr != '' && !res.success) {
@@ -33,9 +34,10 @@ async function run(): Promise<void> {
 
     const imageID = await buildx.getImageID();
     if (imageID) {
-      core.info('🛒 Extracting digest...');
+      core.startGroup(`Extracting digest`);
       core.info(`${imageID}`);
       core.setOutput('digest', imageID);
+      core.endGroup();
     }
   } catch (error) {
     core.setFailed(error.message);
@@ -44,8 +46,9 @@ async function run(): Promise<void> {
 
 async function cleanup(): Promise<void> {
   if (stateHelper.tmpDir.length > 0) {
-    core.info(`🚿 Removing temp folder ${stateHelper.tmpDir}`);
+    core.startGroup(`Removing temp folder ${stateHelper.tmpDir}`);
     fs.rmdirSync(stateHelper.tmpDir, {recursive: true});
+    core.endGroup();
   }
 }