diff --git a/doc/source/command-objects/image.rst b/doc/source/command-objects/image.rst
index 94745e06c8..61872ec404 100644
--- a/doc/source/command-objects/image.rst
+++ b/doc/source/command-objects/image.rst
@@ -168,6 +168,7 @@ List available images
         [--long]
         [--sort <key>[:<direction>]]
         [--limit <limit>]
+        [--marker <marker>]
 
 .. option:: --public
 
@@ -200,6 +201,11 @@ List available images
 
     Maximum number of images to display.
 
+.. option:: --marker <marker>
+
+    The last image (name or ID) of the previous page. Display list of images
+    after marker. Display all images if not specified.
+
 image save
 ----------
 
diff --git a/openstackclient/image/v2/image.py b/openstackclient/image/v2/image.py
index 67d0e7f31d..3f1621814c 100644
--- a/openstackclient/image/v2/image.py
+++ b/openstackclient/image/v2/image.py
@@ -437,6 +437,14 @@ class ListImage(command.Lister):
             type=int,
             help="Maximum number of images to display.",
         )
+        parser.add_argument(
+            '--marker',
+            metavar='<marker>',
+            default=None,
+            help="The last image (name or ID) of the previous page. Display "
+                 "list of images after marker. Display all images if not "
+                 "specified."
+        )
         return parser
 
     def take_action(self, parsed_args):
@@ -451,6 +459,9 @@ class ListImage(command.Lister):
             kwargs['shared'] = True
         if parsed_args.limit:
             kwargs['limit'] = parsed_args.limit
+        if parsed_args.marker:
+            kwargs['marker'] = utils.find_resource(image_client.images,
+                                                   parsed_args.marker).id
 
         if parsed_args.long:
             columns = (
diff --git a/openstackclient/tests/image/v2/test_image.py b/openstackclient/tests/image/v2/test_image.py
index 3e31d0ad62..d399c9eda9 100644
--- a/openstackclient/tests/image/v2/test_image.py
+++ b/openstackclient/tests/image/v2/test_image.py
@@ -672,6 +672,27 @@ class TestImageList(TestImage):
         self.assertEqual(self.columns, columns)
         self.assertEqual(len(self.datalist), len(tuple(data)))
 
+    @mock.patch('openstackclient.common.utils.find_resource')
+    def test_image_list_marker_option(self, fr_mock):
+        # tangchen: Since image_fakes.IMAGE is a dict, it cannot offer a .id
+        #           operation. Will fix this by using FakeImage class instead
+        #           of IMAGE dict.
+        fr_mock.return_value = mock.Mock()
+        fr_mock.return_value.id = image_fakes.image_id
+
+        arglist = [
+            '--marker', image_fakes.image_name,
+        ]
+        verifylist = [
+            ('marker', image_fakes.image_name),
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        columns, data = self.cmd.take_action(parsed_args)
+        self.api_mock.image_list.assert_called_with(
+            marker=image_fakes.image_id,
+        )
+
 
 class TestRemoveProjectImage(TestImage):
 
diff --git a/releasenotes/notes/bug-1540988-17841cfd5accf7f5.yaml b/releasenotes/notes/bug-1540988-17841cfd5accf7f5.yaml
index 56b502eb5b..eabe420b7f 100644
--- a/releasenotes/notes/bug-1540988-17841cfd5accf7f5.yaml
+++ b/releasenotes/notes/bug-1540988-17841cfd5accf7f5.yaml
@@ -4,3 +4,6 @@ features:
     Add ``--limit`` option to ``image list`` to limit the number of images
     in output.
     [Bug `1540988 <https://bugs.launchpad.net/bugs/1540988>`_]
+  - |
+    Add ``--marker`` option to ``image list`` to handle paginate requests.
+    [Bug `1540988 <https://bugs.launchpad.net/bugs/1540988>`_]