[TESTING] Upgrade CI to Ubuntu20.04 LTS (Focal)

On one hand Ubuntu18's free LTS cycle is ended, and on the other hand Ubuntu18 does not support nodejs greater than v18.
1. update the Linux Docker image to buildpack-deps:focal
2. some compatibility changes
3. use the new recommended way to install Docker ([see here](https://docs.docker.com/engine/install/ubuntu/))

See https://github.com/emscripten-core/emsdk/issues/1173
diff --git a/.circleci/config.yml b/.circleci/config.yml
index cea7e0e..31f090e 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -4,9 +4,9 @@
   win: circleci/windows@5.0
 
 executors:
-  bionic:
+  ubuntu:
     docker:
-      - image: buildpack-deps:bionic
+      - image: buildpack-deps:focal
   mac:
     environment:
       EMSDK_NOTTY: "1"
@@ -50,22 +50,20 @@
 
 jobs:
   flake8:
-    executor: bionic
+    executor: ubuntu
     steps:
       - checkout
       - run:
           name: install pip
           command: |
             apt-get update -q
-            apt-get install -q -y python-pip python3-pip
-      - run: python2 -m pip install --upgrade pip
+            apt-get install -q -y python3-pip
       - run: python3 -m pip install --upgrade pip
-      - run: python2 -m pip install flake8==3.9.2
       - run: python3 -m pip install flake8==3.9.2
-      - run: python2 -m flake8 --show-source --statistics --extend-exclude=./scripts
-      - run: python3 -m flake8 --show-source --statistics
+      - run: python3 -m flake8 --show-source --statistics --extend-exclude=./scripts
+
   test-linux:
-    executor: bionic
+    executor: ubuntu
     environment:
       EMSDK_NOTTY: "1"
       # This is needed because the old gcc-7 that is installed on debian/bionic
@@ -174,12 +172,19 @@
             test/test_path_preservation.ps1
 
   build-docker-image-x64:
-    executor: bionic
+    executor: ubuntu
     steps:
       - checkout
       - run:
           name: install docker
-          command: apt-get update -q && apt-get install -q -y docker.io
+          command: |
+            apt-get update -q 
+            apt-get install -q -y ca-certificates curl gnupg lsb-release
+            mkdir -p /etc/apt/keyrings
+            curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
+            echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
+            apt-get update -q
+            apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
       - setup_remote_docker
       # Build the `latest` version of EMSDK as docker image
       - run:
@@ -190,12 +195,19 @@
           command: make -C ./docker version=latest test
 
   publish-docker-image-x64:
-    executor: bionic
+    executor: ubuntu
     steps:
       - checkout
       - run:
           name: install docker
-          command: apt-get update -q && apt-get install -q -y docker.io
+          command: |
+            apt-get update -q 
+            apt-get install -q -y ca-certificates curl gnupg lsb-release
+            mkdir -p /etc/apt/keyrings
+            curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
+            echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
+            apt-get update -q
+            apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
       - setup_remote_docker
       - run:
           name: build
@@ -226,7 +238,7 @@
             make -C ./docker version=${CIRCLE_TAG} alias=${CIRCLE_TAG}-arm64 only_alias=true push
 
   test-bazel-linux:
-    executor: bionic
+    executor: ubuntu
     steps:
       - checkout
       - run: apt-get install -q -y curl gnupg
diff --git a/README.md b/README.md
index 8e1c99b..9736aea 100644
--- a/README.md
+++ b/README.md
@@ -67,7 +67,7 @@
 - `python`: Version 2.7.0 or above.
 - `java`: For running closure compiler (optional)
 
-The emsdk pre-compiled binaries are built against Ubuntu/Xenial 16.04 LTS and
+The emsdk pre-compiled binaries are built against Ubuntu/Focal 20.04 LTS and
 therefore depend on system libraries compatible with versions of `glibc` and
 `libstdc++` present in that release.  If your linux distribution is very old
 you may not be able to use the pre-compiled binaries packages.