--- title: Install UCP for production description: Learn how to install Docker Universal Control Plane on production. keywords: Universal Control Plane, UCP, install, Docker EE --- Docker Universal Control Plane (UCP) is a containerized application that you can install on-premise or on a cloud infrastructure. ## Step 1: Validate the system requirements The first step to installing UCP is ensuring that your infrastructure has all of the [requirements UCP needs to run](system-requirements.md). Also, you need to ensure that all nodes, physical and virtual, are running the same version of Docker Enterprise Edition. ## Step 2: Install Docker EE on all nodes UCP is a containerized application that requires the commercially supported Docker Engine to run. Install Docker EE on each host that you plan to manage with UCP. View the [supported platforms](/install/index.md#supported-platforms) and click on your platform to get platform-specific instructions for installing Docker EE. Make sure you install the same Docker EE version on all the nodes. Also, if you're creating virtual machine templates with Docker EE already installed, make sure the `/etc/docker/key.json` file is not included in the virtual machine image. When provisioning the virtual machine, restart the Docker daemon to generate a new `/etc/docker/key.json` file. ## Step 3: Customize named volumes Skip this step if you want to use the defaults provided by UCP. Docker UCP uses named volumes to persist data. If you want to customize the drivers used to manage these volumes, you can create the volumes before installing UCP. When you install UCP, the installer will notice that the volumes already exist, and will start using them. [Learn about the named volumes used by UCP](../../architecture.md). If these volumes don't exist, they'll be automatically created when installing UCP. ## Step 4: Install UCP To install UCP, you use the `docker/ucp` image, which has commands to install and manage UCP. Make sure you follow the [UCP System requirements](system-requirements.md) in regards to networking ports. Ensure that your hardware or software firewalls are open appropriately or disabled. To install UCP: 1. Use ssh to log in to the host where you want to install UCP. 2. Run the following command: ```none # Pull the latest version of UCP $ docker image pull {{ page.ucp_org }}/{{ page.ucp_repo }}:{{ page.ucp_version }} # Install UCP $ docker container run --rm -it --name ucp \ -v /var/run/docker.sock:/var/run/docker.sock \ {{ page.ucp_org }}/{{ page.ucp_repo }}:{{ page.ucp_version }} install \ --host-address \ --interactive ``` This runs the install command in interactive mode, so that you're prompted for any necessary configuration values. To find what other options are available in the install command, check the [reference documentation](../../../reference/cli/install.md). ## Step 5: License your installation Now that UCP is installed, you need to license it. 1. Go to [Docker Hub](https://hub.docker.com/editions/enterprise/docker-ee-trial/trial) to get a free trial license. 2. In your browser, navigate to the UCP web UI, log in with your administrator credentials and upload your license. Navigate to the **Admin Settings** page and in the left pane, click **License**. ![](../../images/license-ucp.png){: .with-border} 3. Click **Upload License** and navigate to your license (.lic) file. When you're finished selecting the license, UCP updates with the new settings. ## Step 6: Join manager nodes Skip this step if you don't want UCP to be highly available. To make your Docker swarm and UCP fault-tolerant and highly available, you can join more manager nodes to it. Manager nodes are the nodes in the swarm that perform the orchestration and swarm management tasks, and dispatch tasks for worker nodes to execute. To join manager nodes to the swarm, 1. In the UCP web UI, navigate to the **Nodes** page, and click the **Add Node** button to add a new node. ![](../../images/nodes-page-ucp.png){: .with-border} 2. In the **Add Node** page, check **Add node as a manager** to turn this node into a manager and replicate UCP for high-availability. 3. If you want to customize the network and port where the new node listens for swarm management traffic, click **Use a custom listen address**. Enter the IP address and port for the node to listen for inbound cluster management traffic. The format is `interface:port` or `ip:port`. The default is `0.0.0.0:2377`. 4. If you want to customize the network and port that the new node advertises to other swarm members for API access, click **Use a custom advertise address** and enter the IP address and port. By default, this is also the outbound address used by the new node to contact UCP. The joining node can contact itself at this address. The format is `interface:port` or `ip:port`. Click the copy icon ![](../../images/copy-swarm-token.png) to copy the `docker swarm join` command that nodes use to join the swarm. ![](../../images/add-node-ucp.png){: .with-border} 5. For each manager node that you want to join to the swarm, log in using ssh and run the join command that you copied. After the join command completes, the node appears on the **Nodes** page in the UCP web UI. ## Step 7: Join worker nodes Skip this step if you don't want to add more nodes to run and scale your apps. To add more computational resources to your swarm, you can join worker nodes. These nodes execute tasks assigned to them by the manager nodes. Follow the same steps as before, but don't check the **Add node as a manager** option. ## Where to go next * [Use your own TLS certificates](../configure/use-your-own-tls-certificates.md) * [Scale your cluster](../configure/scale-your-cluster.md)