Created on 11-11-2016 12:19 AM - edited 08-17-2019 08:19 AM
The Hortonworks Sandbox for HDP 2.5 now uses Docker containers, even the VirtualBox version. The process for exposing extra ports on older versions of the sandbox was as simple as setting up additional port forwarding rules in VirtualBox. The new container version of the sandbox requires additional steps; you have to do more than just setup port forwarding rules in VirtualBox.
This tutorial will guide you through the process of adding additional ports to the VirtualBox version of the HDP 2.5 sandbox.
Startup your HDP sandbox. It should be called Hortonworks Docker Sandbox
within VirtualBox. You should see something similar to this:
You can start the sandbox by either double-clicking on the virtual machine or by selecting the virtual machine and clicking on the start icon in the menu. Once the virtual machine is started, you should see something similar to this:
NOTE: It may take several minutes for the virtual machine to start.
We need to login to the VM that runs the sandbox container. If you use the standard ssh -p 2222 root@localhost
, you will actually login to the sandbox container, not the sandbox VM. You can login to the sandbox VM using ssh -p 2122 root@localhost
.
You can also login to the sandbox VM directly using the VirtualBox VM window by following the instructions on the VM window. On the Mac you click in the VM window and press the Alt/Option + F5 keys. You should see something like this:
The username is root
and the password is hadoop
.
The sandbox Docker container is set to autostart when the VM starts. I've run into issues trying to top the Docker container. So we'll use a workaround to temporarily disable the sandbox.service. The sandbox VM is based on CentOS 7 and uses systemd.
systemctl disable sandbox.service
Now we need to reboot the VM so we can get it started without the sandbox container running. You can do this easily using the init
command.
init 6
The VM should reboot.
After the VM reboots, login again using the steps provided above. The sandbox start script is located at /root/start_scripts/start_sandbox.sh
. This script has the docker run
command which creates or starts the Docker container. We need to edit this script to add our additional ports. For the purposes of this tutorial, we'll add port 8440
which is used by Ambari agents to talk to Ambari server.
vi /root/start_scripts/start_sandbox.sh
Scroll down until you see:
-p 2222:22 sandbox /usr/sbin/sshd -D
We need to add a line after the last port entry. Modify the script so it now looks like this:
-p 2222:22 -p 8440:8440 sandbox /usr/sbin/sshd -D
Now save the file
Press ESC key :wq!
Since we booted up the VM at least once, the sandbox container will already exist. The startup script will not and cannot update an existing container to add another port. So we need to remove the existing sandbox container. The startup script will create a new container with the added ports. Remember with Docker that a Docker image is like a blueprint to the building and a Docker container is the building created from the blueprint. We will delete the container, not the image.
docker rm sandbox
NOTE: This will remove any changes you've made to your Docker container via Ambari, etc. If you want to save any changes you've made, you can update the base sandbox Docker image using docker commit
. To update the base sandbox image with any configuration changes you've done use docker commit sandbox sandbox
.
Now we need to enable the sandbox service so it auto starts when the VM boots up.
systemctl enable sandbox.service
Now it's time to reboot the VM. As before, we'll use the init
command
init 6
After the VM reboots, login again using the steps provided above. We are going to show the running Docker container using the docker ps
command.
docker ps
You should notice the standard Docker output from that command. Look for the port 8440
. You should see it in the list. You should see something similar to this:
NOTE: We added the port to the end of the startup script. However, the port will not be displayed at the end of the list. The port will be somewhere in the middle of the list of ports.
Now we need to update the forwarded ports configuration for our VirtualBox VM. Using the VirtualBox user interface, right-click on the Hortonworks Docker Sandbox
to display the menu. You should see something similar to this:
Now click the Settings
menu option. You should see something similar to this:
Now click on the Network
menu icon. You should see something similar to this:
Now click the Advanced
dropdown menu near the bottom. You should see something similar to this:
Now click the Port Forwarding
button. You should see something similar to this:
Now click the +
icon near the upper right to add another port forwarding rule. You should see something similar to this:
Now add an entry with the following info:
Click the blue OK
button. Click the OK
button. The settings should be saved.
Now port 8440
should be accessible on your computer which is forwarded to 8440
on the VirtualBox VM which is then passed to the Docker container.
If you successfully followed along with this tutorial, we were able modify the Docker startup script for our sandbox container with the VirtualBox VM to add another port. After removing the Docker container and restarting the VM, a new Docker container was created with our additional port.
Created on 04-06-2017 07:56 AM
hello, thank you for this post. I still have issues though. Does docker rm sandbox removes files from my directories?
Created on 08-20-2018 09:05 PM
Is this workflow similar for HDF 3.1 Sandbox? If not, kindly let us know the changes.