diff --git a/tests/test_image.py b/tests/test_image.py
index 19f7eea86db037a40e71d267cecf358792590762..22568f92620f97f7117d628af3217ac4e1acd6d7 100644
--- a/tests/test_image.py
+++ b/tests/test_image.py
@@ -56,7 +56,7 @@ def make_image(filename=None,
     xform = np.eye(4)
     for i, p in enumerate(pixdims):
         xform[i, i] = p
-    
+
     data  = np.array(np.random.random(dims) * 100, dtype=dtype)
 
     if   imgtype == 0: img = nib.AnalyzeImage(data, xform, hdr)
@@ -68,7 +68,7 @@ def make_image(filename=None,
         if op.splitext(filename)[1] == '':
             if imgtype == 0: filename = '{}.img'.format(filename)
             else:            filename = '{}.nii'.format(filename)
- 
+
         nib.save(img, filename)
 
     return img
@@ -95,7 +95,7 @@ def test_load():
                 'ambiguous.img',
                 'ambiguous.img.gz',
                 'notnifti.nii.gz']
-    
+
 
     shouldPass = ['compressed',
                   'compressed.nii.gz',
@@ -121,12 +121,12 @@ def test_load():
     testdir = tempfile.mkdtemp()
 
     for f in toCreate:
-        
+
         if f.startswith('notnifti'):
             make_dummy_file(op.join(testdir, f))
         else:
             make_random_image(op.join(testdir, f))
-            
+
     # Not raising an error means the test passes
     try:
         for fname in shouldPass:
@@ -164,7 +164,7 @@ def test_create():
     assert img.niftiVersion == 1
 
     for imgType in [0, 1, 2]:
-        
+
         nimg = make_image(imgtype=imgType, pixdims=(5, 6, 7))
         nhdr = nimg.header
 
@@ -189,13 +189,13 @@ def test_create():
             img = fslimage.Image(nimg)
             assert img.niftiVersion == imgtype
             assert np.all(np.isclose(img.pixdim, (2, 3, 4)))
-            
+
         finally:
             shutil.rmtree(testdir)
 
 
 def test_bad_create():
-    
+
     class BadThing(object):
         pass
 
@@ -204,7 +204,7 @@ def test_bad_create():
         fslimage.Image(
             np.random.random((10, 10, 10)),
             header=BadThing())
-        
+
     # Bad data
     with pytest.raises(Exception):
         fslimage.Image(BadThing())
@@ -221,18 +221,18 @@ def test_bad_create():
     with pytest.raises(Exception):
         fslimage.Image(np.random.random(10, 10, 10),
                        xform=np.eye(3))
-        
+
     with pytest.raises(Exception):
         fslimage.Image(np.random.random(10, 10, 10),
                        xform=np.eye(5))
 
 
-def  test_Image_atts_analyze(): _test_Image_atts(0) 
+def  test_Image_atts_analyze(): _test_Image_atts(0)
 def  test_Image_atts_nifti1():  _test_Image_atts(1)
 def  test_Image_atts_nifti2():  _test_Image_atts(2)
 def _test_Image_atts(imgtype):
     """Test that basic Nifti/Image attributes are correct. """
-    
+
     testdir     = tempfile.mkdtemp()
     allowedExts = fslimage.ALLOWED_EXTENSIONS
     fileGroups  = fslimage.FILE_GROUPS
@@ -259,17 +259,17 @@ def _test_Image_atts(imgtype):
     tests = it.product(dims, pixdims, dtypes)
     tests = list(tests)
     paths = ['test{:03d}'.format(i) for i in range(len(tests))]
-                       
+
     for path, atts in zip(paths, tests):
 
         dims, pixdims, dtype = atts
 
         ndims   = len(dims)
-        pixdims = pixdims[:ndims] 
+        pixdims = pixdims[:ndims]
 
         path = op.abspath(op.join(testdir, path))
         make_image(path, imgtype, dims, pixdims, dtype)
- 
+
     try:
 
         for path, atts in zip(paths, tests):
@@ -295,12 +295,12 @@ def _test_Image_atts(imgtype):
                                                   fileGroups=fileGroups)
     finally:
         shutil.rmtree(testdir)
-        
-def  test_Image_atts2_analyze(): _test_Image_atts2(0) 
+
+def  test_Image_atts2_analyze(): _test_Image_atts2(0)
 def  test_Image_atts2_nifti1():  _test_Image_atts2(1)
 def  test_Image_atts2_nifti2():  _test_Image_atts2(2)
 def _test_Image_atts2(imgtype):
-    
+
     # See fsl.utils.constants for the meanings of these codes
     xyzUnits  = [0, 1, 2, 3]
     timeUnits = [8, 16, 24, 32, 40, 48]
@@ -392,7 +392,7 @@ def test_addExt():
 
     for path in toCreate:
         path = op.abspath(op.join(testdir, path))
-        make_random_image(path) 
+        make_random_image(path)
 
     try:
         for path, mustExist, expected in tests:
@@ -456,14 +456,14 @@ def test_defaultExt():
         os.environ['FSLOUTPUTTYPE'] = o
 
         assert fslimage.defaultExt() == e
-        
+
 
 def  test_Image_orientation_analyze_neuro(): _test_Image_orientation(0, 'neuro')
 def  test_Image_orientation_analyze_radio(): _test_Image_orientation(0, 'radio')
 def  test_Image_orientation_nifti1_neuro():  _test_Image_orientation(1, 'neuro')
 def  test_Image_orientation_nifti1_radio():  _test_Image_orientation(1, 'radio')
 def  test_Image_orientation_nifti2_neuro():  _test_Image_orientation(2, 'neuro')
-def  test_Image_orientation_nifti2_radio():  _test_Image_orientation(2, 'radio') 
+def  test_Image_orientation_nifti2_radio():  _test_Image_orientation(2, 'radio')
 def _test_Image_orientation(imgtype, voxorient):
     """Test the Nifti.isNeurological and Nifti.getOrientation methods. """
 
@@ -493,7 +493,7 @@ def _test_Image_orientation(imgtype, voxorient):
         expectvox0Orientation = constants.ORIENT_R2L
         expectvox1Orientation = constants.ORIENT_P2A
         expectvox2Orientation = constants.ORIENT_I2S
-        
+
     elif voxorient == 'neuro':
         expectNeuroTest       = True
         expectvox0Orientation = constants.ORIENT_L2R
@@ -534,7 +534,7 @@ def  test_Image_sqforms_nifti1_nosqform(): _test_Image_sqforms(1, 1, 0)
 def  test_Image_sqforms_nifti2_normal():   _test_Image_sqforms(2, 1, 1)
 def  test_Image_sqforms_nifti2_nosform():  _test_Image_sqforms(2, 0, 1)
 def  test_Image_sqforms_nifti2_noqform():  _test_Image_sqforms(2, 1, 0)
-def  test_Image_sqforms_nifti2_nosqform(): _test_Image_sqforms(2, 0, 0) 
+def  test_Image_sqforms_nifti2_nosqform(): _test_Image_sqforms(2, 0, 0)
 def _test_Image_sqforms(imgtype, sformcode, qformcode):
     """Test the Nifti.getXFormCode method, and the voxToWorldMat/worldToVoxMat
     attributes for NIFTI images with the given sform/qform code combination.
@@ -587,7 +587,7 @@ def _test_Image_sqforms(imgtype, sformcode, qformcode):
 
     with pytest.raises(ValueError):
         image.getXFormCode('badcode')
-    
+
     try:
         assert np.all(np.isclose(image.voxToWorldMat,  expAffine))
         assert np.all(np.isclose(image.worldToVoxMat,  invExpAffine))
@@ -601,10 +601,10 @@ def _test_Image_sqforms(imgtype, sformcode, qformcode):
         shutil.rmtree(testdir)
 
 
-def  test_Image_changeXform_analyze():         _test_Image_changeXform(0) 
+def  test_Image_changeXform_analyze():         _test_Image_changeXform(0)
 def  test_Image_changeXform_nifti1():          _test_Image_changeXform(1)
 def  test_Image_changeXform_nifti1_nosqform(): _test_Image_changeXform(1, 0, 0)
-def  test_Image_changeXform_nifti2():          _test_Image_changeXform(2) 
+def  test_Image_changeXform_nifti2():          _test_Image_changeXform(2)
 def _test_Image_changeXform(imgtype, sformcode=None, qformcode=None):
     """Test changing the Nifti.voxToWorldMat attribute. """
 
@@ -641,7 +641,7 @@ def _test_Image_changeXform(imgtype, sformcode=None, qformcode=None):
     if imgtype > 0:
         expSformCode = image.get_sform(coded=True)[1]
         expQformCode = image.get_qform(coded=True)[1]
-        
+
         if sformcode == 0:
             expSformCode = constants.NIFTI_XFORM_ALIGNED_ANAT
     else:
@@ -654,7 +654,7 @@ def _test_Image_changeXform(imgtype, sformcode=None, qformcode=None):
         assert img.saveState
 
         if imgtype == 0:
-            # ANALYZE affine is not editable 
+            # ANALYZE affine is not editable
             with pytest.raises(Exception):
                 img.voxToWorldMat = newXform
             return
@@ -679,7 +679,7 @@ def _test_Image_changeXform(imgtype, sformcode=None, qformcode=None):
 
 def  test_Image_changeData_analyze(seed): _test_Image_changeData(0)
 def  test_Image_changeData_nifti1(seed):  _test_Image_changeData(1)
-def  test_Image_changeData_nifti2(seed):  _test_Image_changeData(2) 
+def  test_Image_changeData_nifti2(seed):  _test_Image_changeData(2)
 def _test_Image_changeData(imgtype):
     """Test that changing image data triggers notification, and also causes
     the dataRange attribute to be updated.
@@ -687,13 +687,13 @@ def _test_Image_changeData(imgtype):
 
     testdir   = tempfile.mkdtemp()
     imagefile = op.join(testdir, 'image')
-    
+
     make_image(imagefile, imgtype)
 
     img = fslimage.Image(imagefile)
 
     notified = {}
-    
+
     def randvox():
         return (np.random.randint(0, img.shape[0]),
                 np.random.randint(0, img.shape[1]),
@@ -773,7 +773,7 @@ def _test_Image_2D(imgtype):
     # which happens when you create
     # an XY slice with fslroi. This
     # should still be read in as a
-    # 3D image. 
+    # 3D image.
     testdims = [(10, 20),
                 (10, 20, 1),
                 (10, 1,  20),
@@ -787,9 +787,9 @@ def _test_Image_2D(imgtype):
         for shape in testdims:
 
             pixdim = [2] * len(shape)
-                
+
             imagefile = op.join(testdir, 'image')
-            
+
             make_image(imagefile, imgtype, shape, pixdim)
 
             image = fslimage.Image(imagefile)
@@ -831,9 +831,9 @@ def test_Image_voxelsToScaledVoxels():
         if itype > 0 and pixdims[0] > 0:
             xf[0, 0] = -pixdims[0]
             xf[0, 3] =  pixdims[0] * (dims[0] - 1)
-            
+
         return xf
-    
+
     for imgType, dim, pixdim in it.product(imgTypes, dims, pixdims):
         nimg = make_image(imgtype=imgType, dims=dim, pixdims=pixdim)
         img  = fslimage.Image(nimg)
@@ -842,7 +842,7 @@ def test_Image_voxelsToScaledVoxels():
         result   = img.voxelsToScaledVoxels()
 
         assert np.all(np.isclose(result, expected))
-        
+
 
 def test_Image_sameSpace():
 
@@ -853,7 +853,7 @@ def test_Image_sameSpace():
     pixdims = [(2, 2, 2, 1),
                (2, 3, 4, 1)]
 
-    for (imgType, 
+    for (imgType,
          dim1,
          dim2,
          pixdim1,
@@ -885,8 +885,8 @@ def _test_Image_save(imgtype):
             if rvox not in rvoxes:
                 rvoxes.append(rvox)
         return rvoxes
-        
-    
+
+
     testdir   = tempfile.mkdtemp()
     if imgtype == 0:
         filename  = op.join(testdir, 'blob.img')
@@ -904,11 +904,13 @@ def _test_Image_save(imgtype):
     try:
         make_image(filename, imgtype)
 
-        img = fslimage.Image(filename)
+        # Using mmap can cause a "Bus error"
+        # under docker. No idea why.
+        img = fslimage.Image(filename, mmap=False)
 
         randvoxes = randvoxes(5)
         randvals  = [np.random.random() for i in range(5)]
-        
+
         for (x, y, z), v in zip(randvoxes, randvals):
             img[x, y, z] = v
 
@@ -937,7 +939,7 @@ def _test_Image_save(imgtype):
 
             # Load the image back in
             img2 = fslimage.Image(img.dataSource)
-            
+
             assert img.saveState
             assert img.dataSource == expDataSource
 
@@ -945,8 +947,8 @@ def _test_Image_save(imgtype):
                 assert np.all(np.isclose(img.voxToWorldMat, xform))
 
             for (x, y, z), v in zip(randvoxes, randvals):
-                assert np.isclose(img[x, y, z], v) 
-            
+                assert np.isclose(img[x, y, z], v)
+
 
     finally:
         shutil.rmtree(testdir)