diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml
index 51ce25fea8b9e791a12a7937eb53ab5d57804ff2..86946e879b1de575f8d9338302d865f57b1d1ff6 100644
--- a/.azure/pipelines/ci.yml
+++ b/.azure/pipelines/ci.yml
@@ -433,7 +433,8 @@ stages:
       jobName: Linux_musl_x64_build
       jobDisplayName: "Build: Linux Musl x64"
       agentOs: Linux
-      buildScript: ./dockerbuild.sh alpine
+      container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-WithNode-0fc54a3-20190918214015
+      buildScript: ./build.sh
       buildArgs:
         --arch x64
         --os-name linux-musl
@@ -466,7 +467,8 @@ stages:
       jobDisplayName: "Build: Linux Musl ARM64"
       agentOs: Linux
       useHostedUbuntu: false
-      buildScript: ./dockerbuild.sh ubuntu-alpine37
+      container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine-20200413125008-406629a
+      buildScript: ./build.sh
       buildArgs:
         --arch arm64
         --os-name linux-musl
diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml
index 3906f93cdf8110569ccc465bbdb6cb502b573c3a..57c61890a5dc511aa7915ec6b0e5c75a7ea317ae 100644
--- a/.azure/pipelines/jobs/default-build.yml
+++ b/.azure/pipelines/jobs/default-build.yml
@@ -114,6 +114,8 @@ jobs:
           name: NetCoreInternal-Pool
           # Visual Studio Enterprise - contains some stuff, like SQL Server and IIS Express, that we use for testing
           queue: BuildPool.Server.Amd64.VS2019
+    ${{ if ne(parameters.container, '') }}:
+      container: ${{ parameters.container }}
     variables:
     - AgentOsName: ${{ parameters.agentOs }}
     - ASPNETCORE_TEST_LOG_MAXPATH: "200" # Keep test log file name length low enough for artifact zipping
diff --git a/eng/docker/alpine.Dockerfile b/eng/docker/alpine.Dockerfile
deleted file mode 100644
index bc1547d1df8534ab5dcf59a6e7352337852a6ee3..0000000000000000000000000000000000000000
--- a/eng/docker/alpine.Dockerfile
+++ /dev/null
@@ -1,28 +0,0 @@
-FROM microsoft/dotnet:2.1.0-preview1-runtime-deps-alpine
-ARG USER
-ARG USER_ID
-ARG GROUP_ID
-ARG WORKDIR
-
-WORKDIR ${WORKDIR}
-RUN mkdir -p "/home/$USER" && chown "${USER_ID}:${GROUP_ID}" "/home/$USER"
-ENV HOME "/home/$USER"
-
-RUN apk add --no-cache \
-        bash \
-        wget \
-        git \
-        jq \
-        curl \
-        icu-libs \
-        openssl
-
-USER $USER_ID:$GROUP_ID
-
-# Disable the invariant mode (set in base image)
-ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT false
-ENV LC_ALL en_US.UTF-8
-ENV LANG en_US.UTF-8
-
-# Skip package initilization
-ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
diff --git a/eng/docker/ubuntu-alpine37.Dockerfile b/eng/docker/ubuntu-alpine37.Dockerfile
deleted file mode 100644
index 859098f04efe7fea5ae07e3ec8b77af0b20e5ce7..0000000000000000000000000000000000000000
--- a/eng/docker/ubuntu-alpine37.Dockerfile
+++ /dev/null
@@ -1,19 +0,0 @@
-FROM mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine10fcdcf-20190208200917
-ARG USER
-ARG USER_ID
-ARG GROUP_ID
-ARG WORKDIR
-
-WORKDIR ${WORKDIR}
-RUN mkdir -p "/home/$USER" && chown "${USER_ID}:${GROUP_ID}" "/home/$USER"
-ENV HOME "/home/$USER"
-
-USER $USER_ID:$GROUP_ID
-
-# Disable the invariant mode (set in base image)
-ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT false
-ENV LC_ALL en_US.UTF-8
-ENV LANG en_US.UTF-8
-
-# Skip package initilization
-ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1