diff --git a/xos/admin.py b/xos/admin.py
index fe20519..b87ffdc 100644
--- a/xos/admin.py
+++ b/xos/admin.py
@@ -31,6 +31,8 @@
     dns_servers = forms.CharField(required=False)
     url_filter_kind = forms.ChoiceField(choices=VSGService.URL_FILTER_KIND_CHOICES, required=False)
     node_label = forms.CharField(required=False)
+    docker_image_name = forms.CharField(required=False)
+    docker_insecure_registry = forms.BooleanField(required=False)
 
     def __init__(self,*args,**kwargs):
         super (VSGServiceForm,self ).__init__(*args,**kwargs)
@@ -43,6 +45,8 @@
             self.fields['dns_servers'].initial = self.instance.dns_servers
             self.fields['url_filter_kind']. initial = self.instance.url_filter_kind
             self.fields['node_label'].initial = self.instance.node_label
+            self.fields['docker_image_name'].initial = self.instance.docker_image_name
+            self.fields['docker_insecure_registry'].initial = self.instance.docker_insecure_registry
 
     def save(self, commit=True):
         self.instance.bbs_api_hostname = self.cleaned_data.get("bbs_api_hostname")
@@ -53,6 +57,8 @@
         self.instance.dns_servers = self.cleaned_data.get("dns_servers")
         self.instance.url_filter_kind = self.cleaned_data.get("url_filter_kind")
         self.instance.node_label = self.cleaned_data.get("node_label")
+        self.instance.docker_image_name = self.cleaned_data.get("docker_image_name")
+        self.instance.docker_insecure_registry = self.cleaned_data.get("docker_insecure_registry")
         return super(VSGServiceForm, self).save(commit=commit)
 
     class Meta:
@@ -69,7 +75,7 @@
                                      'classes':['suit-tab suit-tab-general']}),
                  ("backend config", {'fields': [ "backend_network_label", "url_filter_kind", "bbs_api_hostname", "bbs_api_port", "bbs_server", "bbs_slice"],
                                      'classes':['suit-tab suit-tab-backend']}),
-                 ("vSG config", {'fields': ["dns_servers"],
+                 ("vSG config", {'fields': ["dns_servers", "docker_image_name", "docker_insecure_registry"],
                                      'classes':['suit-tab suit-tab-vsg']}) ]
     readonly_fields = ('backend_status_text', "service_specific_attribute")
     inlines = [SliceInline,ServiceAttrAsTabInline,ServicePrivilegeInline]
diff --git a/xos/models.py b/xos/models.py
index ad25c98..96fb71a 100644
--- a/xos/models.py
+++ b/xos/models.py
@@ -36,7 +36,9 @@
                           ("backend_network_label", "hpc_client"),
                           ("dns_servers", "8.8.8.8"),
                           ("url_filter_kind", None),
-                          ("node_label", None) )
+                          ("node_label", None),
+                          ("docker_image_name", "docker.io/xosproject/vsg"),
+                          ("docker_insecure_registry", False) )
 
     def __init__(self, *args, **kwargs):
         super(VSGService, self).__init__(*args, **kwargs)
diff --git a/xos/synchronizer/manifest b/xos/synchronizer/manifest
index d13ee05..d15f0d8 100644
--- a/xos/synchronizer/manifest
+++ b/xos/synchronizer/manifest
@@ -3,6 +3,7 @@
 templates/before.rules.j2
 templates/start-vcpe.sh.j2
 templates/dnsmasq_safe_servers.j2
+templates/docker.j2
 templates/firewall_sample.j2
 templates/rc.local.j2
 templates/vcpe.conf.j2
diff --git a/xos/synchronizer/steps/sync_vcpetenant.py b/xos/synchronizer/steps/sync_vcpetenant.py
index adabf85..e8670d6 100644
--- a/xos/synchronizer/steps/sync_vcpetenant.py
+++ b/xos/synchronizer/steps/sync_vcpetenant.py
@@ -156,8 +156,17 @@
                         if mac:
                             safe_macs.append(mac)
 
+
+        docker_opts = []
+        if vcpe_service.docker_insecure_registry:
+            reg_name = vcpe_service.docker_image_name.split("/",1)[0]
+            docker_opts.append("--insecure-registry " + reg_name)
+
         fields = {"s_tags": s_tags,
                 "c_tags": c_tags,
+                "docker_remote_image_name": vcpe_service.docker_image_name,
+                "docker_local_image_name": vcpe_service.docker_image_name, # vcpe_service.docker_image_name.split("/",1)[1].split(":",1)[0],
+                "docker_opts": " ".join(docker_opts),
                 "dnsdemux_ip": dnsdemux_ip,
                 "cdn_prefixes": cdn_prefixes,
                 "bbs_addrs": bbs_addrs,
diff --git a/xos/synchronizer/steps/sync_vcpetenant_vtn.yaml b/xos/synchronizer/steps/sync_vcpetenant_vtn.yaml
index 0226354..7e32bd0 100644
--- a/xos/synchronizer/steps/sync_vcpetenant_vtn.yaml
+++ b/xos/synchronizer/steps/sync_vcpetenant_vtn.yaml
@@ -10,6 +10,9 @@
       dnsdemux_ip: {{ dnsdemux_ip }}
       firewall_enable: {{ firewall_enable }}
       url_filter_enable: {{ url_filter_enable }}
+      docker_remote_image_name: {{ docker_remote_image_name }}
+      docker_local_image_name: {{ docker_local_image_name }}
+      docker_opts: {{ docker_opts }}
       c_tags:
         {% for c_tag in c_tags %}
         - {{ c_tag }}
@@ -143,6 +146,11 @@
 #    when: cron_job_pids_count.stdout == "0"
 {% endif %}
 
+  - name: Set docker options
+    template: src=/opt/xos/synchronizers/vsg/templates/docker.j2 dest=/etc/default/docker
+    notify:
+     - restart docker
+
   - name: vCPE upstart
     template: src=/opt/xos/synchronizers/vsg/templates/vcpe.conf.j2 dest=/etc/init/{{ container_name }}.conf
 
@@ -242,3 +250,6 @@
 
   - name: restart vcpe
     shell: service {{ container_name }} stop; sleep 1; service {{ container_name }} start
+
+  - name: restart docker
+    shell: service docker restart
diff --git a/xos/synchronizer/templates/docker.j2 b/xos/synchronizer/templates/docker.j2
new file mode 100644
index 0000000..48f5c5c
--- /dev/null
+++ b/xos/synchronizer/templates/docker.j2
@@ -0,0 +1,17 @@
+# Docker Upstart and SysVinit configuration file
+
+# Customize location of Docker binary (especially for development testing).
+#DOCKER="/usr/local/bin/docker"
+
+# Use DOCKER_OPTS to modify the daemon startup options.
+#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
+
+DOCKER_OPTS="{{ docker_opts }}"
+
+#"--insecure-registry 10.1.0.1:5000"
+
+# If you need Docker to use an HTTP proxy, it can also be specified here.
+#export http_proxy="http://127.0.0.1:3128/"
+
+# This is also a handy place to tweak where Docker's temporary files go.
+#export TMPDIR="/mnt/bigdrive/docker-tmp"
diff --git a/xos/synchronizer/templates/start-vcpe-vtn.sh.j2 b/xos/synchronizer/templates/start-vcpe-vtn.sh.j2
index dfdce0a..a309ae0 100644
--- a/xos/synchronizer/templates/start-vcpe-vtn.sh.j2
+++ b/xos/synchronizer/templates/start-vcpe-vtn.sh.j2
@@ -15,13 +15,13 @@
 docker inspect $VCPE > /dev/null 2>&1
 if [ "$?" == 1 ]
 then
-    docker pull andybavier/docker-vcpe
+    docker pull {{ docker_remote_image_name }}
     docker run -d --name=$VCPE --privileged=true --net=none \
     -v /var/container_volumes/$VCPE/mount:/mount:ro \
     -v /var/container_volumes/$VCPE/etc/dnsmasq.d:/etc/dnsmasq.d:ro \
     -v /var/container_volumes/$VCPE/etc/service/message:/etc/service/message \
     -v /var/container_volumes/$VCPE/usr/local/sbin:/usr/local/sbin:ro \
-    andybavier/docker-vcpe
+    {{ docker_local_image_name }}
 else
     docker start $VCPE
 fi
diff --git a/xos/tosca/resources/vcpeservice.py b/xos/tosca/resources/vcpeservice.py
index 2e3558f..1d8754c 100644
--- a/xos/tosca/resources/vcpeservice.py
+++ b/xos/tosca/resources/vcpeservice.py
@@ -6,5 +6,5 @@
     xos_model = VSGService
     copyin_props = ["view_url", "icon_url", "enabled", "published", "public_key",
                     "private_key_fn", "versionNumber", "backend_network_label",
-                    "dns_servers", "node_label"]
+                    "dns_servers", "node_label", "docker_image_name", "docker_insecure_registry"]
 
