diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index f9451fda..f30cb377 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
 # limitations under the License.
 docker:
   image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
-  digest: sha256:99ab465187b4891e878ee4f9977b4a6aeeb0ceadf404870c416c50e06500eb42
-# created: 2024-07-08T16:17:14.833595692Z
+  digest: sha256:52210e0e0559f5ea8c52be148b33504022e1faef4e95fbe4b32d68022af2fa7e
+# created: 2024-07-08T19:25:35.862283192Z
diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile
index 28de550f..5205308b 100644
--- a/.kokoro/docker/docs/Dockerfile
+++ b/.kokoro/docker/docs/Dockerfile
@@ -40,7 +40,6 @@ RUN apt-get update \
     libssl-dev \
     libsqlite3-dev \
     portaudio19-dev \
-    python3-distutils \
     redis-server \
     software-properties-common \
     ssh \
@@ -60,18 +59,22 @@ RUN apt-get update \
   && rm -rf /var/lib/apt/lists/* \
   && rm -f /var/cache/apt/archives/*.deb
 
-###################### Install python 3.9.13
 
-# Download python 3.9.13
-RUN wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz
+###################### Install python 3.10.14 for docs/docfx session
+
+# Download python 3.10.14
+RUN wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
 
 # Extract files
-RUN tar -xvf Python-3.9.13.tgz
+RUN tar -xvf Python-3.10.14.tgz
 
-# Install python 3.9.13
-RUN ./Python-3.9.13/configure --enable-optimizations
+# Install python 3.10.14
+RUN ./Python-3.10.14/configure --enable-optimizations
 RUN make altinstall
 
+RUN python3.10 -m venv /venv
+ENV PATH /venv/bin:$PATH
+
 ###################### Install pip
 RUN wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
   && python3 /tmp/get-pip.py \
@@ -84,4 +87,4 @@ RUN python3 -m pip
 COPY requirements.txt /requirements.txt
 RUN python3 -m pip install --require-hashes -r requirements.txt
 
-CMD ["python3.8"]
+CMD ["python3.10"]
diff --git a/noxfile.py b/noxfile.py
index 52590f36..a8c12aa1 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -78,6 +78,9 @@
 
 CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute()
 
+# Error if a python version is missing
+nox.options.error_on_missing_interpreters = True
+
 
 def _calculate_duration(func):
     """This decorator prints the execution time for the decorated function."""
@@ -420,7 +423,7 @@ def cover(session):
     session.run("coverage", "erase")
 
 
-@nox.session(python="3.9")
+@nox.session(python="3.10")
 @_calculate_duration
 def docs(session):
     """Build the docs for this library."""