Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
summer2024:dockersetup [2024/06/28 18:36] – created rajit | summer2024:dockersetup [2025/01/23 10:06] (current) – [Creating a container] rajit | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Docker image and container setup ====== | ====== Docker image and container setup ====== | ||
- | We have provided a [[https:// | + | We have provided a [[https:// |
+ | |||
+ | ===== Standard image setup ===== | ||
The standard '' | The standard '' | ||
Line 10: | Line 12: | ||
USER root | USER root | ||
RUN apt-get update | RUN apt-get update | ||
- | RUN apt-get -y install tightvncserver ssh vim emacs awesome | + | RUN apt-get -y install tightvncserver ssh vim emacs blackbox |
RUN echo root: | RUN echo root: | ||
Line 18: | Line 20: | ||
</ | </ | ||
+ | This configuration does the following: | ||
+ | * It starts with the pre-built Docker image '' | ||
+ | * It extends it by installing a number of packages (text editors, a window manager, VNC server, etc.) | ||
+ | * It sets the password for the '' | ||
+ | * It starts the ssh service so you can use ssh to connect to your docker container. It then waits in an infinite loop so that the container keeps running so you can connect to it via ssh. | ||
+ | |||
+ | Feel free to customize this to install any software/ | ||
+ | |||
+ | To build an image using the Dockerfile above (saved as Dockerfile in your working directory), run: | ||
+ | < | ||
+ | $ docker build -t async - < Dockerfile | ||
+ | </ | ||
+ | |||
+ | This will use the '' | ||
+ | |||
+ | |||
+ | ===== Creating a container ===== | ||
+ | |||
+ | There are many ways to start docker containers. A simple setup that we use is to have a shared directory between the container and the host machine where you are running docker, and forward port 7500 from the host machine to the ssh port (22) in the container. The following command will accomplish this. | ||
+ | < | ||
+ | $ docker run -d -p 7500:22 -v / | ||
+ | </ | ||
+ | The ''/ | ||
+ | |||
+ | //Note: a container is like a running machine; if you stop the container using docker, that is the same as powering off a machine. Docker allows you to pause a container, which is useful if you want to leave the machine "in suspension" | ||
+ | |||
+ | At this point, you can connect to the container using the ssh command | ||
+ | < | ||
+ | $ ssh -p 7500 user@localhost | ||
+ | </ | ||
+ | To connect to a graphical environment in the container, we can use the VNC remote desktop system (e.g. TightVNC). Once you've logged in to the container, run: | ||
+ | < | ||
+ | $ vncserver | ||
+ | </ | ||
+ | and follow the prompts to setup a password. This will start the vnc server within the container. The vnc server will report a display (usually :1), and the network port it listens to is 5900 plus the display number. | ||
+ | |||
+ | To connect to the running graphical environment within the container, use ssh to connect the container as follows: | ||
+ | < | ||
+ | $ ssh -p 7500 -L 8500: | ||
+ | </ | ||
+ | |||
+ | Now the local port 8500 on the host will correspond to the VNC port 5901 in the container. You can now connect to port 8500 on your local machine using a VNC client to get a graphical desktop that is running on the container. If the vnc server in the container has a different display number (e.g. :3 instead of :1), then 8500 should be forwarded to a different port number (e.g. 5903 for display :3, rather than 5901 for display :1). | ||
+ | |||
+ | Note that once the container is setup, you don't need to re-do those steps. You can simply pause the container to stop it, and resume it when you want to re-connect to it via ssh. | ||
+ | |||
+ | ===== Updating the container with the latest tools ===== | ||
+ | |||
+ | The container is not updated as frequently as the git repositories. To update the tools from within the container, use the following steps, running as '' | ||
+ | < | ||
+ | $ cd / | ||
+ | $ git pull | ||
+ | $ git submodule update --init --recursive | ||
+ | $ export ACT_HOME=/ | ||
+ | $ ./build | ||
+ | </ | ||
+ | |||
+ | The git repository for the [[: |