In a production environment, Docker makes it easy to create, deploy, and run applications inside of containers. Containers let developers gather applications and all their core necessities and dependencies into a single package that you can turn into a Docker image and replicate. Docker images are built from Dockerfiles. The Dockerfile is a file where you define what the image will look like, what base operating system it will have, and which commands will run inside of it.
Containers work a little like VMs, but in a far more specific and granular way. They isolate a single application and its dependencies – all of the external software libraries the app requires to run – both from the underlying operating system and from other containers. All of the containerized apps share a single, common operating system (either Linux or Windows), but they are compartmentalized from one another and from the system at large.
The benefits of Docker containers show up in many places. Here are some of the major advantages of Docker and containers:
Docker enables more efficient use of system resources
Instances of containerized apps use far less memory than virtual machines, they start up and stop more quickly, and they can be packed far more densely on their host hardware. All of this amounts to less spending on IT. The cost savings will vary depending on what apps are in play and how resource-intensive they may be, but containers invariably work out as more efficient than VMs. It’s also possible to save on costs of software licenses, because you need many fewer operating system instances to run the same workloads.
Docker enables application portability
Where you run an enterprise application matters – behind the firewall, for the sake of keeping things close by and secure; or out in a public cloud, for easy public access and high elasticity of resources. Because Docker containers encapsulate everything an application needs to run (and only those things), they allow applications to be shuttled easily between environments. Any host with the Docker runtime installed – be it a developer’s laptop or a public cloud instance – can run a Docker container.
Docker shines for microservices architecture
Lightweight, portable, and self-contained, Docker containers make it easier to build software along forward-thinking lines, so that you’re not trying to solve tomorrow’s problems with yesterday’s development methods.
One of the software patterns containers make easier is microservices, where applications are constituted from many loosely coupled components. By decomposing traditional, “monolithic” applications into separate services, microservices allow the different parts of a line-of-business app to be scaled, modified, and serviced separately – by separate teams and on separate timelines, if that suits the needs of the business.
Containers aren’t required to implement microservices, but they are perfectly suited to the microservices approach and to agile development processes generally.
Sundance makes available a container with the Xilinx tools (i.e Vivado, Vitis and Petalinux 2019.2) pre-loaded. Users will only have to provide a valid Xilinx license. The Xilinx tools were installed on LXDE (abbreviation for Lightweight X11 Desktop Environment) a powerful and lightweight linux desktop environment suitable for use on older or resource-constrained virtualised environments such as do.
Users should launch the container using the suggested script. The container is accessible via both vnc client configured with the <server ip>:5900 (e.g. localhost:5900) or using the web browser <server ip>:6800 (e.g. localhost:6080) using the password root. Inside the container the user xilinx (i.e. $ su xilinx) and password xilinx should be used when working with Petalinux.
Please contact Sundance if you have any suggestions or questions.