diff --git a/lib/manager/dockerfile/extract.spec.ts b/lib/manager/dockerfile/extract.spec.ts
index 6861578bd3842ed7ec7555b025ee2b6e6ee024ab..cbb52f1229d970d0bd0701d08812ec79a5bff347 100644
--- a/lib/manager/dockerfile/extract.spec.ts
+++ b/lib/manager/dockerfile/extract.spec.ts
@@ -665,5 +665,53 @@ Object {
         }
       `);
     });
+
+    it('skips depName containing a non default variable at start', () => {
+      const res = getDep('$CI_REGISTRY/alpine:3.15');
+      expect(res).toMatchInlineSnapshot(`
+        Object {
+          "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
+          "datasource": "docker",
+          "replaceString": "$CI_REGISTRY/alpine:3.15",
+          "skipReason": "contains-variable",
+        }
+      `);
+    });
+
+    it('skips depName containing a non default variable with brackets at start', () => {
+      const res = getDep('${CI_REGISTRY}/alpine:3.15');
+      expect(res).toMatchInlineSnapshot(`
+        Object {
+          "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
+          "datasource": "docker",
+          "replaceString": "\${CI_REGISTRY}/alpine:3.15",
+          "skipReason": "contains-variable",
+        }
+      `);
+    });
+
+    it('skips depName containing a non default variable', () => {
+      const res = getDep('docker.io/$PREFIX/alpine:3.15');
+      expect(res).toMatchInlineSnapshot(`
+        Object {
+          "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
+          "datasource": "docker",
+          "replaceString": "docker.io/$PREFIX/alpine:3.15",
+          "skipReason": "contains-variable",
+        }
+      `);
+    });
+
+    it('skips depName containing a non default variable with brackets', () => {
+      const res = getDep('docker.io/${PREFIX}/alpine:3.15');
+      expect(res).toMatchInlineSnapshot(`
+        Object {
+          "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
+          "datasource": "docker",
+          "replaceString": "docker.io/\${PREFIX}/alpine:3.15",
+          "skipReason": "contains-variable",
+        }
+      `);
+    });
   });
 });
diff --git a/lib/manager/dockerfile/extract.ts b/lib/manager/dockerfile/extract.ts
index 242d3c02cf713e2eaea5048d43b8233476d034e0..1a7e973460850a874695582f4bce47fe6218a38d 100644
--- a/lib/manager/dockerfile/extract.ts
+++ b/lib/manager/dockerfile/extract.ts
@@ -56,7 +56,14 @@ export function splitImageParts(currentFrom: string): PackageDependency {
     depName = depTagSplit.join(':');
   }
 
-  if (currentValue && currentValue.indexOf(variableMarker) !== -1) {
+  if (depName?.includes(variableMarker)) {
+    // If depName contains a variable, after cleaning, e.g. "$REGISTRY/alpine", we currently not support this.
+    return {
+      skipReason: 'contains-variable',
+    };
+  }
+
+  if (currentValue?.includes(variableMarker)) {
     // If tag contains a variable, e.g. "5.0${VERSION_SUFFIX}", we do not support this.
     return {
       skipReason: 'contains-variable',
diff --git a/lib/manager/gitlabci/__fixtures__/gitlab-ci.7.yaml b/lib/manager/gitlabci/__fixtures__/gitlab-ci.7.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..bb9b9c49895f6df25ea3cff58bc5077987b712df
--- /dev/null
+++ b/lib/manager/gitlabci/__fixtures__/gitlab-ci.7.yaml
@@ -0,0 +1,17 @@
+image:
+  # comment
+  name: $VARIABLE/renovate/renovate:31.65.1-slim
+
+services:
+  # comment
+  - name: $VARIABLE/other/image1:1.0.0
+    alias: imagealias1
+  # comment
+  - name: ${VARIABLE}/other/image1:2.0.0
+    alias: imagealias2
+  # comment
+  - name: docker.io/$VARIABLE/image1:3.0.0
+    alias: imagealias1
+  # comment
+  - name: docker.io/${VARIABLE}/image1:4.0.0
+    alias: imagealias2
diff --git a/lib/manager/gitlabci/extract.spec.ts b/lib/manager/gitlabci/extract.spec.ts
index 89f161453e0250399d66736641c6b69a08a13a47..ef55412f49c2de9f08889a18b64de8e3c3a6539b 100644
--- a/lib/manager/gitlabci/extract.spec.ts
+++ b/lib/manager/gitlabci/extract.spec.ts
@@ -101,5 +101,58 @@ describe('manager/gitlabci/extract', () => {
       expect(res).toBeNull();
       expect(logger.logger.warn).toHaveBeenCalled();
     });
+
+    it('skips images with variables', async () => {
+      const res = await extractAllPackageFiles(config, [
+        'lib/manager/gitlabci/__fixtures__/gitlab-ci.7.yaml',
+      ]);
+      expect(res).toEqual([
+        {
+          deps: [
+            {
+              autoReplaceStringTemplate:
+                '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
+              datasource: 'docker',
+              depType: 'image-name',
+              replaceString: '$VARIABLE/renovate/renovate:31.65.1-slim',
+              skipReason: 'contains-variable',
+            },
+            {
+              autoReplaceStringTemplate:
+                '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
+              datasource: 'docker',
+              depType: 'service-image',
+              replaceString: '$VARIABLE/other/image1:1.0.0',
+              skipReason: 'contains-variable',
+            },
+            {
+              autoReplaceStringTemplate:
+                '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
+              datasource: 'docker',
+              depType: 'service-image',
+              replaceString: '${VARIABLE}/other/image1:2.0.0',
+              skipReason: 'contains-variable',
+            },
+            {
+              autoReplaceStringTemplate:
+                '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
+              datasource: 'docker',
+              depType: 'service-image',
+              replaceString: 'docker.io/$VARIABLE/image1:3.0.0',
+              skipReason: 'contains-variable',
+            },
+            {
+              autoReplaceStringTemplate:
+                '{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
+              datasource: 'docker',
+              depType: 'service-image',
+              replaceString: 'docker.io/${VARIABLE}/image1:4.0.0',
+              skipReason: 'contains-variable',
+            },
+          ],
+          packageFile: 'lib/manager/gitlabci/__fixtures__/gitlab-ci.7.yaml',
+        },
+      ]);
+    });
   });
 });