Repository: getmoto/moto

Issue:
ECR `list_images` should return exception when repository does not exist

### Actual
`moto` [will return](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ListImages.html) an empty list when the ECR repository passed to `list_images` does not exist.


### Expected
The ECR client returns a `RepositoryNotFoundException` exception when the specified repository does not exist in the registry.

See AWS [docs](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ListImages.html).



Discussion:

Resolving patch:
diff --git a/moto/ecr/models.py b/moto/ecr/models.py
--- a/moto/ecr/models.py
+++ b/moto/ecr/models.py
@@ -200,17 +200,22 @@ def list_images(self, repository_name, registry_id=None):
         """
         maxResults and filtering not implemented
         """
-        images = []
-        for repository in self.repositories.values():
-            if repository_name:
-                if repository.name != repository_name:
-                    continue
+        repository = None
+        found = False
+        if repository_name in self.repositories:
+            repository = self.repositories[repository_name]
             if registry_id:
-                if repository.registry_id != registry_id:
-                    continue
+                if repository.registry_id == registry_id:
+                    found = True
+            else:
+                found = True
 
-            for image in repository.images:
-                images.append(image)
+        if not found:
+            raise RepositoryNotFoundException(repository_name, registry_id or DEFAULT_REGISTRY_ID)
+
+        images = []
+        for image in repository.images:
+            images.append(image)
         return images
 
     def describe_images(self, repository_name, registry_id=None, image_ids=None):


Test patch:
diff --git a/tests/test_ecr/test_ecr_boto3.py b/tests/test_ecr/test_ecr_boto3.py
--- a/tests/test_ecr/test_ecr_boto3.py
+++ b/tests/test_ecr/test_ecr_boto3.py
@@ -247,9 +247,31 @@ def test_list_images():
     len(response['imageIds']).should.be(1)
     response['imageIds'][0]['imageTag'].should.equal('oldest')
 
-    response = client.list_images(repositoryName='test_repository_2', registryId='109876543210')
-    type(response['imageIds']).should.be(list)
-    len(response['imageIds']).should.be(0)
+
+@mock_ecr
+def test_list_images_from_repository_that_doesnt_exist():
+    client = boto3.client('ecr', region_name='us-east-1')
+    _ = client.create_repository(
+        repositoryName='test_repository_1'
+    )
+
+    # non existing repo
+    error_msg = re.compile(
+        r".*The repository with name 'repo-that-doesnt-exist' does not exist in the registry with id '123'.*",
+        re.MULTILINE)
+    client.list_images.when.called_with(
+        repositoryName='repo-that-doesnt-exist',
+        registryId='123',
+    ).should.throw(Exception, error_msg)
+
+    # repo does not exist in specified registry
+    error_msg = re.compile(
+        r".*The repository with name 'test_repository_1' does not exist in the registry with id '222'.*",
+        re.MULTILINE)
+    client.list_images.when.called_with(
+        repositoryName='test_repository_1',
+        registryId='222',
+    ).should.throw(Exception, error_msg)
 
 
 @mock_ecr