diff --git a/src/tests/containerizer/provisioner_docker_tests.cpp b/src/tests/containerizer/provisioner_docker_tests.cpp
index 5b685bf..9639263 100644
--- a/src/tests/containerizer/provisioner_docker_tests.cpp
+++ b/src/tests/containerizer/provisioner_docker_tests.cpp
@@ -313,12 +313,12 @@
 
 
 #ifdef __linux__
-class ProvisionerDockerRegistryPullerTest : public MesosTest {};
+class ProvisionerDockerPullerTest : public MesosTest {};
 
 
 // TODO(jieyu): This is a ROOT test because of MESOS-4757. Remove the
 // ROOT restriction after MESOS-4757 is resolved.
-TEST_F(ProvisionerDockerRegistryPullerTest, ROOT_INTERNET_CURL_ShellCommand)
+TEST_F(ProvisionerDockerPullerTest, ROOT_INTERNET_CURL_SimpleCommand)
 {
   Try<PID<Master>> master = StartMaster();
   ASSERT_SOME(master);
@@ -349,10 +349,20 @@
 
   const Offer& offer = offers.get()[0];
 
+  // NOTE: We use a non-shell command here because 'sh' might not be
+  // in the PATH. 'alpine' does not specify env PATH in the image. On
+  // some linux distribution, '/bin' is not in the PATH by default.
+  CommandInfo command;
+  command.set_shell(false);
+  command.set_value("/bin/ls");
+  command.add_arguments("ls");
+  command.add_arguments("-al");
+  command.add_arguments("/");
+
   TaskInfo task = createTask(
       offer.slave_id(),
       Resources::parse("cpus:1;mem:128").get(),
-      "ls -al /");
+      command);
 
   Image image;
   image.set_type(Image::DOCKER);
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index d36840f..0570cc8 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -455,7 +455,7 @@
 inline TaskInfo createTask(
     const SlaveID& slaveId,
     const Resources& resources,
-    const std::string& command,
+    const CommandInfo& command,
     const Option<mesos::ExecutorID>& executorId = None(),
     const std::string& name = "test-task",
     const std::string& id = UUID::random().toString())
@@ -468,10 +468,10 @@
   if (executorId.isSome()) {
     ExecutorInfo executor;
     executor.mutable_executor_id()->CopyFrom(executorId.get());
-    executor.mutable_command()->set_value(command);
+    executor.mutable_command()->CopyFrom(command);
     task.mutable_executor()->CopyFrom(executor);
   } else {
-    task.mutable_command()->set_value(command);
+    task.mutable_command()->CopyFrom(command);
   }
 
   return task;
@@ -479,6 +479,24 @@
 
 
 inline TaskInfo createTask(
+    const SlaveID& slaveId,
+    const Resources& resources,
+    const std::string& command,
+    const Option<mesos::ExecutorID>& executorId = None(),
+    const std::string& name = "test-task",
+    const std::string& id = UUID::random().toString())
+{
+  return createTask(
+      slaveId,
+      resources,
+      CREATE_COMMAND_INFO(command),
+      executorId,
+      name,
+      id);
+}
+
+
+inline TaskInfo createTask(
     const Offer& offer,
     const std::string& command,
     const Option<mesos::ExecutorID>& executorId = None(),
@@ -486,7 +504,12 @@
     const std::string& id = UUID::random().toString())
 {
   return createTask(
-      offer.slave_id(), offer.resources(), command, executorId, name, id);
+      offer.slave_id(),
+      offer.resources(),
+      command,
+      executorId,
+      name,
+      id);
 }
 
 
