diff --git a/ansible/library/kolla_container_facts.py b/ansible/library/kolla_container_facts.py
index dcdd931e948cc334125a3d3878307e105844f0c7..90816e2e252b2eb2a7f5ae9a9d4cb3eb6e03e03c 100644
--- a/ansible/library/kolla_container_facts.py
+++ b/ansible/library/kolla_container_facts.py
@@ -53,10 +53,7 @@ import docker
 
 
 def get_docker_client():
-    try:
-        return docker.Client
-    except AttributeError:
-        return docker.APIClient
+    return docker.APIClient
 
 
 def main():
diff --git a/ansible/library/kolla_docker.py b/ansible/library/kolla_docker.py
index 5ed25617b711cb2fec664ef876fd017c9254d650..f827c7a004c07df54fe51f2f25fd2e5e75ee7dfa 100644
--- a/ansible/library/kolla_docker.py
+++ b/ansible/library/kolla_docker.py
@@ -198,10 +198,7 @@ import docker
 
 
 def get_docker_client():
-    try:
-        return docker.Client
-    except AttributeError:
-        return docker.APIClient
+    return docker.APIClient
 
 
 class DockerWorker(object):
diff --git a/ansible/library/kolla_toolbox.py b/ansible/library/kolla_toolbox.py
index 56039a5fba34c678ef03bdac5db49791a3003190..0957a8bd1cbed71a740ff2239693c61afaa2193f 100644
--- a/ansible/library/kolla_toolbox.py
+++ b/ansible/library/kolla_toolbox.py
@@ -109,10 +109,7 @@ def gen_commandline(params):
 
 
 def get_docker_client():
-    try:
-        return docker.Client
-    except AttributeError:
-        return docker.APIClient
+    return docker.APIClient
 
 
 def main():
diff --git a/ansible/roles/baremetal/tasks/install.yml b/ansible/roles/baremetal/tasks/install.yml
index cfc756b78cecbb061d4edf6bb07e6c4230c36ac1..0065f74104110a2517b253de57951404fb811c5a 100644
--- a/ansible/roles/baremetal/tasks/install.yml
+++ b/ansible/roles/baremetal/tasks/install.yml
@@ -52,8 +52,8 @@
   easy_install: name=pip
   become: True
 
-- name: Install docker-py
-  pip: name=docker-py state=latest
+- name: Install docker SDK for python
+  pip: name=docker state=latest
   become: True
 
 - name: Remove packages
diff --git a/ansible/roles/prechecks/tasks/package_checks.yml b/ansible/roles/prechecks/tasks/package_checks.yml
index 4da8264afd51bb99a3af025ddf2871a2c0f8369c..8dccfea42633d7004e41f5ea5757c95d58823692 100644
--- a/ansible/roles/prechecks/tasks/package_checks.yml
+++ b/ansible/roles/prechecks/tasks/package_checks.yml
@@ -1,5 +1,5 @@
 ---
-- name: Checking docker-py version
+- name: Checking docker SDK version
   command: "{{ ansible_python.executable }} -c \"import docker; print docker.__version__\""
   register: result
   changed_when: false
diff --git a/ansible/roles/prechecks/vars/main.yml b/ansible/roles/prechecks/vars/main.yml
index 059735d15380a8dfcdb2feca3cc9a3e8edf9080e..e5c83b75e3db3bd990e2bcd441a7ec52444aec59 100644
--- a/ansible/roles/prechecks/vars/main.yml
+++ b/ansible/roles/prechecks/vars/main.yml
@@ -1,4 +1,4 @@
 ---
 docker_version_min: '1.10.0'
-docker_py_version_min: '1.8.1'
+docker_py_version_min: '2.0.0'
 ansible_version_min: '2.2.0'
diff --git a/contrib/dev/vagrant/bootstrap.sh b/contrib/dev/vagrant/bootstrap.sh
index ed3ae90017fa1a933088c83357bb1d3a57b7a877..009a840f612a33129d78b93dc95f0885c08cdd04 100644
--- a/contrib/dev/vagrant/bootstrap.sh
+++ b/contrib/dev/vagrant/bootstrap.sh
@@ -76,7 +76,7 @@ function prep_work {
         exit 1
     fi
 
-    pip install --upgrade docker-py
+    pip install --upgrade docker
 }
 
 # Do some cleanup after the installation of kolla
diff --git a/doc/quickstart.rst b/doc/quickstart.rst
index c0f280ce6b1ba560ee728eaf6ca2ffb5dd0789a5..e7f7bb6578b52a3c353ee233f1761098a2dcf454 100644
--- a/doc/quickstart.rst
+++ b/doc/quickstart.rst
@@ -105,7 +105,7 @@ Component               Min Version  Max Version  Comment
 =====================   ===========  ===========  =========================
 Ansible                 2.2.0        none         On deployment host
 Docker                  1.10.0       none         On target nodes
-Docker Python           1.8.1        none         On target nodes
+Docker Python           2.0.0        none         On target nodes
 Python Jinja2           2.8.0        none         On deployment host
 =====================   ===========  ===========  =========================
 
@@ -242,7 +242,7 @@ Or using ``pip`` to install the latest version:
 
 ::
 
-    pip install -U docker-py
+    pip install -U docker
 
 
 OpenStack, RabbitMQ, and Ceph require all hosts to have matching times to
diff --git a/requirements.txt b/requirements.txt
index 1cce2bddea538a55a14bab47c7418334e6f95245..89dc5471635b4c40adac96f2f107d47fd5d05e16 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,7 +2,7 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 pbr!=2.1.0,>=2.0.0 # Apache-2.0
-docker-py>=1.8.1 # Apache-2.0
+docker>=2.0.0 # Apache-2.0
 Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause)
 six>=1.9.0 # MIT
 oslo.config!=4.3.0,!=4.4.0,>=4.0.0 # Apache-2.0
diff --git a/tests/test_kolla_docker.py b/tests/test_kolla_docker.py
index cc5f23edaf4990113b2cf15ca09ba666f860ab2a..e9470398933316141311aa53932d8175d19d82eb 100644
--- a/tests/test_kolla_docker.py
+++ b/tests/test_kolla_docker.py
@@ -173,7 +173,7 @@ FAKE_DATA = {
 }
 
 
-@mock.patch("docker.Client")
+@mock.patch("docker.APIClient")
 def get_DockerWorker(mod_param, mock_dclient):
     module = mock.MagicMock()
     module.params = mod_param
diff --git a/tools/setup_gate.sh b/tools/setup_gate.sh
index a1c17765b4f0d535d74f523d4fc1abeb7e1946a1..0da013343d774724c0edcdd8f3b90d39a4078327 100755
--- a/tools/setup_gate.sh
+++ b/tools/setup_gate.sh
@@ -126,7 +126,7 @@ function setup_ansible {
     mkdir /tmp/kolla
 
     # TODO(SamYaple): Move to virtualenv
-    sudo -H pip install -U "ansible>=2" "docker-py>=1.6.0" "python-openstackclient" "python-neutronclient" "ara"
+    sudo -H pip install -U "ansible>=2" "docker>=2.0.0" "python-openstackclient" "python-neutronclient" "ara"
     detect_distro
 
     setup_inventory