Let me preface this by saying I don’t personally use Docker.  I have limited knowledge about it and if you are having problems with it you are mostly on your own.  This is my best shot at a Docker image.

The CloneDeploy Docker image and the CloneDeploy Proxy DHCP image both require macvlan networking

Usage

Before creating the container, be sure that your Docker environment supports macvlan networking. Port forwarding / NAT is not an ideal fit for CloneDeploy due to DHCP/Proxy requests, Multicasting, etc, and the macvlan enables CloneDeploy to be accessed directly via a static ip. It is also very important to have your storage setup properly before you start uploading images, otherwise you will most likely use a lot of storage somewhere you were not supposed to.

Download Docker Image

docker pull clonedeploy/clonedeploy:latest

Run It

docker run --net=[macvlannetwork] -it --name clonedeploy --ip=[ip address] clonedeploy/clonedeploy:latest

 

Data Persistence

Application Folder:

This is where the CloneDeploy web application resides as well as some config files and logs.

/path/to/application:/var/www/html
Database:

The CloneDeploy database is stored here. A separate MySQL container is not currently supported.

/path/to/dbdata:/var/lib/mysql
TFTP:

The CloneDeploy Tftp folder. Boot Menu’s, Boot Images, and Kernels are stored here.

/path/to/tftp:/tftpboot
Images:

The CloneDeploy Image folder. This is where the images captured from the client computer are stored.

/path/to/images:/cd_dp

Variables

RW_SMB_PASS

Everytime the container is started, the SMB is share is recreated. The read/write password is set here. If this value is not filled in, the default value of rwpass is used. If this value is changed after the intial setup, you will need to update your distribution point.

RO_SMB_PASS

Everytime the container is started, the SMB is share is recreated. The read only password is set here. If this value is not filled in, the default value of ropass is used. If this value is changed after the intial setup, you will need to update your distribution point.

MYSQL_ROOT_PASS

If database directory is empty the root password will be initialized with this value. If it is empty, a random password is generated. This value has no affect if the database directory is not empty.

Post Install Setup

  1. Open the CloneDeploy Web Interface
http://server-ip/clonedeploy
  1. Login with
clonedeploy / password
  1. Upon login you will be greeted with the Initial Setup Page
  2. Fill out the fields – use the rw_smb_pass and ro_smb_pass variable values – and click Finalize Setup
  3. Docker has an issue where the default boot menu doesn’t get created automatically.  Select Admin Settings->Boot Menu->Create Boot Files to fix

 

Proxy DHCP

If you want to try Proxy DHCP, I have also created a ProxyDHCP image.

Download Proxy DHCP Image

docker pull clonedeploy/proxydhcp:latest

Run It

docker run --net=[macvlannetwork] --ip=[ip address] --name=proxydhcp -e NEXT_SERVER=[clonedeploy server ip] -e SERVER_IDENTIFIER_OVERRIDE
=[same as ip address] -e CLONEDEPLOY_BASE_URL=http://[clonedeploy server ip]/clonedeploy/ clonedeploy/proxydhcp:latest

Variables

These variables are all explained in the Proxy DHCP documentation

RUN_TYPE (daemon or debug) – daemon is default
LISTEN_DHCP
LISTEN_PROXY
LISTEN_APPLE_BSDP
NEXT_SERVER
CLONEDEPLOY_BASE_URL
CHECK_WEB_RESERVATIONS
CHECK_TFTP_CLUSTER
TFTP_POLLING_INTERVAL
BIOS_BOOTFILE
EFI32_BOOTFILE
EFI64_BOOTFILE
APPLE_EFI_BOOT_FILE
APPLE_BOOT_FILE
APPLE_ROOT_PATH
APPLE_VENDOR_SPECIFIC_INFORMATION
SERVER_IDENTIFIER_OVERRIDE

Next Step

Select a Client Boot Method

in Getting Started