diff --git a/lib/versioning/docker/index.js b/lib/versioning/docker/index.js
index 1124b4f4d564f9138196361305f8b107393e0dd8..f0a3866de36dcf50510de97d35119c9a06b183c6 100644
--- a/lib/versioning/docker/index.js
+++ b/lib/versioning/docker/index.js
@@ -1,96 +1,8 @@
-function parse(version) {
-  const [prefix, suffix] = version.split('-');
-  const release = prefix.split('.').map(Number);
-  if (release.some(Number.isNaN)) {
-    return null;
-  }
-  return { release, suffix: suffix || '' };
-}
+const semver = require('../semver');
 
-function compare(version1, vervion2) {
-  const parsed1 = parse(version1);
-  const parsed2 = parse(vervion2);
-  const length = Math.max(parsed1.release.length, parsed2.release.length);
-  for (let i = 0; i < length; i += 1) {
-    const part1 = parsed1.release[i];
-    const part2 = parsed2.release[i];
-    // shorter is bigger 2.1 > 2.1.1
-    if (part1 === undefined) {
-      return 1;
-    }
-    if (part2 === undefined) {
-      return -1;
-    }
-    if (part1 !== part2) {
-      return part1 - part2;
-    }
-  }
-  // equals
-  return parsed2.suffix.localeCompare(parsed1.suffix);
-}
-
-function equals(version, other) {
-  return compare(version, other) === 0;
-}
-function getPart(version, index) {
-  const parsed = parse(version);
-  return parsed && parsed.release.length > index ? parsed.release[index] : null;
-}
-function getMajor(version) {
-  return getPart(version, 0);
-}
-function getMinor(version) {
-  return getPart(version, 1);
-}
-function getPatch(version) {
-  return getPart(version, 2);
-}
-function isGreaterThan(version, other) {
-  return compare(version, other) > 0;
-}
-function isLessThanRange(version, range) {
-  return compare(version, range) < 0;
-}
-function isValid(version) {
-  const parsed = parse(version);
-  return parsed ? version : null;
-}
-
-// docker does not have ranges, so versions has to be equal
-function maxSatisfyingVersion(versions, range) {
-  return versions.find(v => equals(v, range)) || null;
-}
-function minSatisfyingVersion(versions, range) {
-  return versions.find(v => equals(v, range)) || null;
-}
-function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) {
-  return toVersion;
-}
-function sortVersions(version, other) {
-  return compare(version, other);
-}
-
-function isCompatible(version, range) {
-  const parsed1 = parse(version);
-  const parsed2 = parse(range);
-  return parsed1.release.length === parsed2.release.length;
-}
+const isValid = input => semver.isVersion(input);
 
 module.exports = {
-  equals,
-  getMajor,
-  getMinor,
-  getPatch,
-  isCompatible,
-  isGreaterThan,
-  isLessThanRange,
-  isSingleVersion: isValid,
-  isStable: isValid,
+  ...semver,
   isValid,
-  isVersion: isValid,
-  matches: equals,
-  maxSatisfyingVersion,
-  minSatisfyingVersion,
-  getNewValue,
-  sortVersions,
 };
diff --git a/lib/versioning/pep440/index.js b/lib/versioning/pep440/index.js
index 9b128f514ee4c5519583c687d482c8468a538839..f63c58a2c26233089d704cdcd2667547f13ec651 100644
--- a/lib/versioning/pep440/index.js
+++ b/lib/versioning/pep440/index.js
@@ -45,7 +45,6 @@ module.exports = {
   getMajor,
   getMinor,
   getPatch,
-  isCompatible: isVersion,
   isGreaterThan,
   isSingleVersion,
   isStable,
diff --git a/lib/versioning/semver-composer/index.js b/lib/versioning/semver-composer/index.js
index 9fee015a7a876bfbb368f111621791b1a5eba286..064caee4202744dbd0d6263e56f405fa2c5298e5 100644
--- a/lib/versioning/semver-composer/index.js
+++ b/lib/versioning/semver-composer/index.js
@@ -128,7 +128,6 @@ module.exports = {
   getMajor,
   getMinor,
   getPatch,
-  isCompatible: isVersion,
   isGreaterThan,
   isLessThanRange,
   isSingleVersion,
diff --git a/lib/versioning/semver/index.js b/lib/versioning/semver/index.js
index c2e01356a228f95fcc6e9d19ca54ad1075303bc3..96ec9bfee7d12aced323ff4868ec075601626304 100644
--- a/lib/versioning/semver/index.js
+++ b/lib/versioning/semver/index.js
@@ -32,7 +32,6 @@ module.exports = {
   getMajor,
   getMinor,
   getPatch,
-  isCompatible: isVersion,
   isGreaterThan,
   isLessThanRange,
   isSingleVersion,
diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js
index dcc7357a271bcec2bc5f487f8598c2a5235e25bd..f31c47a784b4638df0103c9da8500136f02d4307 100644
--- a/lib/workers/repository/process/lookup/index.js
+++ b/lib/workers/repository/process/lookup/index.js
@@ -21,7 +21,6 @@ async function lookupUpdates(config) {
     getMinor,
     isGreaterThan,
     isSingleVersion,
-    isCompatible,
     isValid,
     isVersion,
     matches,
@@ -129,9 +128,6 @@ async function lookupUpdates(config) {
       dependency.latestVersion,
       allVersions,
       releases
-    ).filter(version =>
-      // Leave only compatible versions
-      isCompatible(version, currentValue)
     );
     const buckets = {};
     for (const toVersion of filteredVersions) {
diff --git a/test/versioning/docker.spec.js b/test/versioning/docker.spec.js
index 72acd0755e8258248c501a22e3e75b818c963f1d..215d2f85c81080ad89561ef5917d61dd0dbc0d21 100644
--- a/test/versioning/docker.spec.js
+++ b/test/versioning/docker.spec.js
@@ -1,121 +1,10 @@
 const docker = require('../../lib/versioning')('docker');
-const semver = require('../../lib/versioning')('semver');
 
 describe('docker.isValid(input)', () => {
-  describe('isValid(version)', () => {
-    it('should support all versions length', () => {
-      expect(docker.isValid('1.2.3')).toBe('1.2.3');
-      expect(docker.isValid('18.04')).toBe('18.04');
-      expect(docker.isValid('10.1')).toBe('10.1');
-      expect(docker.isValid('3')).toBe('3');
-      expect(docker.isValid('foo')).toBe(null);
-    });
+  it('should return null for short version', () => {
+    expect(!!docker.isValid('3.7')).toBe(false);
   });
-  describe('isValid(version)', () => {
-    it('should support all versions length', () => {
-      expect(docker.getMajor('1.2.3')).toBe(1);
-      expect(docker.getMajor('18.04')).toBe(18);
-      expect(docker.getMajor('10.1')).toBe(10);
-      expect(docker.getMajor('3')).toBe(3);
-      expect(docker.getMajor('foo')).toBe(null);
-    });
-  });
-  describe('getMinor(version)', () => {
-    it('should support all versions length', () => {
-      expect(docker.getMinor('1.2.3')).toBe(2);
-      expect(docker.getMinor('18.04')).toBe(4);
-      expect(docker.getMinor('10.1')).toBe(1);
-      expect(docker.getMinor('3')).toBe(null);
-      expect(docker.getMinor('foo')).toBe(null);
-    });
-  });
-  describe('getPatch(version)', () => {
-    it('should support all versions length', () => {
-      expect(docker.getPatch('1.2.3')).toBe(3);
-      expect(docker.getPatch('18.04')).toBe(null);
-      expect(docker.getPatch('10.1')).toBe(null);
-      expect(docker.getPatch('3')).toBe(null);
-      expect(docker.getPatch('foo')).toBe(null);
-    });
-  });
-
-  describe('isGreaterThan(version, other)', () => {
-    it('should support all versions length', () => {
-      expect(docker.isGreaterThan('1.2.3', '1.2')).toBe(false);
-      expect(docker.isGreaterThan('18.04', '18.1')).toBe(true);
-      expect(docker.isGreaterThan('10.1', '10.1.2')).toBe(true);
-      expect(docker.isGreaterThan('3', '2')).toBe(true);
-      expect(docker.isGreaterThan('1.2.3', '1.2.3')).toBe(false);
-    });
-  });
-  describe('isLessThanRange(version, range)', () => {
-    it('should support all versions length', () => {
-      expect(docker.isLessThanRange('1.2.3', '2.0')).toBe(true);
-      expect(docker.isLessThanRange('18.04', '18.1')).toBe(false);
-      expect(docker.isLessThanRange('10.1', '10.0.4')).toBe(false);
-      expect(docker.isLessThanRange('3', '4.0')).toBe(true);
-      expect(docker.isLessThanRange('1.2', '1.3.4')).toBe(true);
-    });
-  });
-  describe('equals(version, other)', () => {
-    it('should support all versions length', () => {
-      expect(docker.equals('1.2.3', '1.2.3')).toBe(true);
-      expect(docker.equals('18.04', '18.4')).toBe(true);
-      expect(docker.equals('10.0', '10.0.4')).toBe(false);
-      expect(docker.equals('3', '4.0')).toBe(false);
-      expect(docker.equals('1.2', '1.2.3')).toBe(false);
-    });
-  });
-  describe('equals(version, other)', () => {
-    it('should support all versions length', () => {
-      expect(docker.equals('1.2.3', '1.2.3')).toBe(true);
-      expect(docker.equals('18.04', '18.4')).toBe(true);
-      expect(docker.equals('10.0', '10.0.4')).toBe(false);
-      expect(docker.equals('3', '4.0')).toBe(false);
-      expect(docker.equals('1.2', '1.2.3')).toBe(false);
-    });
-  });
-  describe('maxSatisfyingVersion(versions, range)', () => {
-    it('should support all versions length', () => {
-      [docker.minSatisfyingVersion, docker.maxSatisfyingVersion].forEach(
-        max => {
-          const versions = [
-            '0.9.8',
-            '1.1.1',
-            '1.1',
-            '1.2.3',
-            '1.2',
-            '1',
-            '2.2.2',
-            '2.2',
-            '2',
-          ];
-          // returns range if found
-          expect(max(versions, '1.2.3')).toBe('1.2.3');
-          expect(max(versions, '1.2')).toBe('1.2');
-          expect(max(versions, '1')).toBe('1');
-          // return null if not found
-          expect(max(versions, '1.3')).toBe(null);
-          expect(max(versions, '0.9')).toBe(null);
-        }
-      );
-    });
-  });
-  describe('sortVersions(v1, v2)', () => {
-    it('behaves like semver.sortVersions', () => {
-      [
-        ['1.1.1', '1.2.3'],
-        ['1.2.3', '1.3.4'],
-        ['2.0.1', '1.2.3'],
-        ['1.2.3', '0.9.5'],
-      ].forEach(pair => {
-        expect(docker.sortVersions(...pair)).toBe(semver.sortVersions(...pair));
-      });
-    });
-  });
-  describe('getNewValue(', () => {
-    it('returns toVersion', () => {
-      expect(docker.getNewValue(null, null, null, '1.2.3')).toBe('1.2.3');
-    });
+  it('should support semver', () => {
+    expect(!!docker.isValid('1.2.3')).toBe(true);
   });
 });
diff --git a/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap b/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap
index e68236b70763fb795f062ed532b0deb4937c0118..b62afc274869ae828daf981442a408111b66b29b 100644
--- a/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap
+++ b/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap
@@ -847,116 +847,6 @@ Array [
 
 exports[`manager/npm/lookup .lookupUpdates() should warn if no version matches dist-tag 1`] = `Array []`;
 
-exports[`manager/npm/lookup .lookupUpdates() skips uncompatible versions for 8 1`] = `
-Object {
-  "changelogUrl": undefined,
-  "homepage": undefined,
-  "releases": Array [
-    Object {
-      "version": "8",
-    },
-    Object {
-      "version": "9",
-    },
-  ],
-  "repositoryUrl": null,
-  "updates": Array [
-    Object {
-      "canBeUnpublished": undefined,
-      "fromVersion": "8",
-      "isSingleVersion": true,
-      "newMajor": 9,
-      "newMinor": null,
-      "newValue": "9",
-      "releaseTimestamp": undefined,
-      "toVersion": "9",
-      "updateType": "major",
-    },
-  ],
-  "warnings": Array [],
-}
-`;
-
-exports[`manager/npm/lookup .lookupUpdates() skips uncompatible versions for 8.1 1`] = `
-Object {
-  "changelogUrl": undefined,
-  "homepage": undefined,
-  "releases": Array [
-    Object {
-      "version": "8.1",
-    },
-    Object {
-      "version": "8.2",
-    },
-    Object {
-      "version": "9.0",
-    },
-  ],
-  "repositoryUrl": null,
-  "updates": Array [
-    Object {
-      "canBeUnpublished": undefined,
-      "fromVersion": "8.1",
-      "isSingleVersion": true,
-      "newMajor": 8,
-      "newMinor": 2,
-      "newValue": "8.2",
-      "releaseTimestamp": undefined,
-      "toVersion": "8.2",
-      "updateType": "minor",
-    },
-    Object {
-      "canBeUnpublished": undefined,
-      "fromVersion": "8.1",
-      "isSingleVersion": true,
-      "newMajor": 9,
-      "newMinor": 0,
-      "newValue": "9.0",
-      "releaseTimestamp": undefined,
-      "toVersion": "9.0",
-      "updateType": "major",
-    },
-  ],
-  "warnings": Array [],
-}
-`;
-
-exports[`manager/npm/lookup .lookupUpdates() skips uncompatible versions for 8.1.0 1`] = `
-Object {
-  "changelogUrl": undefined,
-  "homepage": undefined,
-  "releases": Array [
-    Object {
-      "version": "8.1.0",
-    },
-    Object {
-      "version": "8.1.5",
-    },
-    Object {
-      "version": "8.2.0",
-    },
-    Object {
-      "version": "8.2.5",
-    },
-  ],
-  "repositoryUrl": null,
-  "updates": Array [
-    Object {
-      "canBeUnpublished": undefined,
-      "fromVersion": "8.1.0",
-      "isSingleVersion": true,
-      "newMajor": 8,
-      "newMinor": 2,
-      "newValue": "8.2.5",
-      "releaseTimestamp": undefined,
-      "toVersion": "8.2.5",
-      "updateType": "minor",
-    },
-  ],
-  "warnings": Array [],
-}
-`;
-
 exports[`manager/npm/lookup .lookupUpdates() skips undefined values 1`] = `
 Object {
   "skipReason": "unsupported-value",
diff --git a/test/workers/repository/process/lookup/index.spec.js b/test/workers/repository/process/lookup/index.spec.js
index b15a3ca33b9529f63349bcdaccba0cc2ba35777e..6e78b359aaf25e40908c84f77c2eb63f7ae6a682 100644
--- a/test/workers/repository/process/lookup/index.spec.js
+++ b/test/workers/repository/process/lookup/index.spec.js
@@ -1027,29 +1027,6 @@ describe('manager/npm/lookup', () => {
       const res = await lookup.lookupUpdates(config);
       expect(res).toMatchSnapshot();
     });
-    ['8.1.0', '8.1', '8'].forEach(currentValue => {
-      it('skips uncompatible versions for ' + currentValue, async () => {
-        config.currentValue = currentValue;
-        config.depName = 'node';
-        config.purl = 'pkg:docker/node';
-        config.versionScheme = 'docker';
-        docker.getPkgReleases.mockReturnValueOnce({
-          releases: [
-            { version: '8.1.0' },
-            { version: '8.1.5' },
-            { version: '8.1' },
-            { version: '8.2.0' },
-            { version: '8.2.5' },
-            { version: '8.2' },
-            { version: '8' },
-            { version: '9.0' },
-            { version: '9' },
-          ],
-        });
-        const res = await lookup.lookupUpdates(config);
-        expect(res).toMatchSnapshot();
-      });
-    });
     it('handles digest pin for up to date version', async () => {
       config.currentValue = '8.1.0';
       config.depName = 'node';