### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I've been having issues with either Docker or Localstack, so a couple of times today I've removed all the images (and eventually reset/reinstalled Docker Desktop which deleted all the images again). I've noticed that when I run `localstack start` (installed with `pip`, on the host macOS) and the `localstack/localstack:latest` image is not present, `localstack` starts downloading a bunch of old images instead of `latest`.

```sh
bash-3.2$ docker image ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

bash-3.2$ localstack start
# this step will remain silent for as long as you let it
# nothing will happen for several minutes but eventually you'll see bursts of network activity
<Ctrl-C to see a KeyboardInterrupt stack trace>

bash-3.2$ docker image ls
REPOSITORY              TAG        IMAGE ID       CREATED        SIZE
localstack/localstack   0.10.1.2   9bf25773d5f0   2 years ago    855MB
localstack/localstack   0.10.0     835c5cec4d47   2 years ago    855MB
```

### Expected Behavior

The `localstack` CLI tool sees that `localstack/localstack:latest` does not exist on the local machine, and pulls that version of the image _only_

### How are you starting LocalStack?

With the `localstack` script

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)
```sh
docker image ls
docker image rm localstack/localstack:latest
localstack start
```

### Environment

```markdown
- OS: macOS 12.4, Docker Desktop 4.10, Python 3.9.13 (Homebrew)
- LocalStack: 
  - `localstack          1.0.0`
  - `localstack-client   1.35`
  - `localstack-ext      1.0.0`
```


### Anything else?

_No response_
"""Called once, for any active plugin to run initialization logic (e.g., downloading dependencies).
        Uses lazy initialization - i.e., runs only after the first should_apply() call returns True"""
        pass
    def should_apply(self, context: InvocationContext) -> bool:
        """Whether the plugin logic should get applied for the given Lambda invocation context."""
        return False
    def prepare_invocation(
        self, context: InvocationContext
    ) -> Optional[Union[AdditionalInvocationOptions, InvocationResult]]:
        """Return additional invocation options for given Lambda invocation context. Optionally, an
        InvocationResult can be returned, in which case the result is returned to the client right away."""
        return None
    def process_result(
        self, context: InvocationContext, result: InvocationResult
    ) -> InvocationResult:
        """Optionally modify the result returned from the given Lambda invocation."""
        return result
    def init_function_configuration(self, lambda_function: LambdaFunction):
        """Initialize the configuration of the given function upon creation or function update."""
        pass
    def init_function_code(self, lambda_function: LambdaFunction):
        """Initialize the code of the given function upon creation or function update."""
        pass
    @classmethod
    def get_plugins(cls) -> List["LambdaExecutorPlugin"]: