diff --git a/lib/manager/gitlabci/__fixtures__/gitlab-ci.5.yaml b/lib/manager/gitlabci/__fixtures__/gitlab-ci.5.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..488485385ee9865cb595413fddca5606e25ecf33
--- /dev/null
+++ b/lib/manager/gitlabci/__fixtures__/gitlab-ci.5.yaml
@@ -0,0 +1,10 @@
+image:
+  # comment
+  name: renovate/renovate:19.70.8-slim
+
+services:
+  # comment
+  - mariadb:10.4.11
+  # another comment
+  - name: other/image:1.0.0
+    alias: imagealias
diff --git a/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap b/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap
index 89a2a0259235a06612929c7416ec9cb05b64e685..bb3fedc1113f03a45fe9408e861cfbae702e49ff 100644
--- a/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/gitlabci/__snapshots__/extract.spec.ts.snap
@@ -174,3 +174,40 @@ Array [
   },
 ]
 `;
+
+exports[`manager/gitlabci/extract extractAllPackageFiles() extracts named services 1`] = `
+Array [
+  Object {
+    "deps": Array [
+      Object {
+        "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
+        "currentDigest": undefined,
+        "currentValue": "19.70.8-slim",
+        "datasource": "docker",
+        "depName": "renovate/renovate",
+        "depType": "image-name",
+        "replaceString": "renovate/renovate:19.70.8-slim",
+      },
+      Object {
+        "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
+        "currentDigest": undefined,
+        "currentValue": "10.4.11",
+        "datasource": "docker",
+        "depName": "mariadb",
+        "depType": "service-image",
+        "replaceString": "mariadb:10.4.11",
+      },
+      Object {
+        "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
+        "currentDigest": undefined,
+        "currentValue": "1.0.0",
+        "datasource": "docker",
+        "depName": "other/image",
+        "depType": "service-image",
+        "replaceString": "other/image:1.0.0",
+      },
+    ],
+    "packageFile": "lib/manager/gitlabci/__fixtures__/gitlab-ci.5.yaml",
+  },
+]
+`;
diff --git a/lib/manager/gitlabci/extract.spec.ts b/lib/manager/gitlabci/extract.spec.ts
index 1c624c5635148be4232c67274ccf4dc21b70bcbf..d739dcaae0329bf7667c718680137f0811281eda 100644
--- a/lib/manager/gitlabci/extract.spec.ts
+++ b/lib/manager/gitlabci/extract.spec.ts
@@ -28,6 +28,15 @@ describe(getName(), () => {
       expect(deps).toHaveLength(5);
     });
 
+    it('extracts named services', async () => {
+      const res = await extractAllPackageFiles({}, [
+        'lib/manager/gitlabci/__fixtures__/gitlab-ci.5.yaml',
+      ]);
+      expect(res).toMatchSnapshot();
+      expect(res).toHaveLength(1);
+      expect(res[0].deps).toHaveLength(3);
+    });
+
     it('extracts multiple image lines', async () => {
       const res = await extractAllPackageFiles({}, [
         'lib/manager/gitlabci/__fixtures__/gitlab-ci.yaml',
diff --git a/lib/manager/gitlabci/extract.ts b/lib/manager/gitlabci/extract.ts
index 356d94176eeccab685ccd3f8c2fd584c6b8ec96f..35eb6470b9e41cbf2143f4f5a1b81286d65a80dd 100644
--- a/lib/manager/gitlabci/extract.ts
+++ b/lib/manager/gitlabci/extract.ts
@@ -61,7 +61,7 @@ export function extractPackageFile(content: string): PackageFile | null {
           foundImage = false;
           const serviceImageLine = skipCommentLines(lines, lineNumber + 1);
           logger.trace(`serviceImageLine: "${serviceImageLine.line}"`);
-          const serviceImageMatch = /^\s*-\s*'?"?([^\s'"]+)'?"?\s*$/.exec(
+          const serviceImageMatch = /^\s*-\s*(?:name:\s*)?'?"?([^\s'"]+)'?"?\s*$/.exec(
             serviceImageLine.line
           );
           if (serviceImageMatch) {