ic_agile_128ic_business_128ic_agile_white_128ic_banknote_smile_128ic_business_128ic_business_128ic_checkmark_128ic_client_team_manager_128ic_code_file_128ic_code_files_128ic_corporate_cloud_platforms_128ic_crossplatform_apps_128ic_dedicated_team_128ic_developer_128ic_development_team_128ic_enterprise_128ic_faster_timeframe_128ic_fixed_price_128ic_graph_down_128ic_graph_down_128ic_hourly_128ic_hourly_white_128ic_information_finder_128ic_junior_developer_128ic_managed_team_128ic_message_128ic_mobile_app_startups_128ic_mobile_development_128ic_mobile_development_up_128ic_mobile_devices_128ic_multiplatform_128ic_multiplatform_white_128ic_pricetag_128ic_project_checklist_128ic_project_management_128ic_project_management_team_128ic_research_and_development_team_128ic_scalable_team_128ic_senior_developer_128ic_smaller_codebase_128ic_smaller_price_128ic_startup_128ic_team_manager_128ic_three_times_faster_128K&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxK&C_Icons_32pxArrow_Dropdownic_001_google+_16ic_002_xing_16Group 2ic_003_facebook_16ic_004_linkedIn_16Groupic_005_message_16ic_006_upload_16ic_007_remove_16ic_008_email_16ic_009_attachment_16ic_010_file_16ic_011_name_16ic_012_arrow_left_16ic_013_arrow_right_16ic_014_arrow_down_16ic_015_arrow_up_16ic_016_dropdown_arrow_down_16ic_016_dropdown_arrow_leftic_016_dropdown_arrow_rightic_017_K&C_dropdown_arrow_up_16ic_018_language_16ic_019_Quote_16ic_020_+_16ic_021_=_16ic_022_phone_16ic_023_twitter_16ic_024_position_16ic_025_company_16ic_026_search_16ic_027_mobile_16ic_028_fax_16ic_029_location_16ic_030_enlarge_16ic_031_downscale_16ic_032_contactic_download_normal_16pxic_033_skype_16ic_006_download_16 copySearchGroup 26Rss_font_awesomelinkedintwitterConsul_VerticalLogo_FullColorPacker_VerticalLogo_FullColorTerraform_VerticalLogo_FullColorVault_VerticalLogo_FullColorethereum_black_64ic_Interest_based_64ic_acrivate_card_64ic_api_client_64ic_application_architecture_64ic_application_architecture_ white_64ic_application_development_user_64ic_application_development_user_64ic_arrow_down_64ic_automated_backups_64ic_automated_infrastructure_provisioning_64ic_automated_infrastructure_provisioning_white_64ic_automated_storage_64ic_automated_storage_64ic_automation_64ic_microservice_architecture_64ic_avaliability_across_the_world_64ic_avaliability_across_the_world_white_64ic_blockchain_64ic_blockchain_white_64ic_brackets_64ic_brackets_64ic_build_64ic_build_64ic_build_64ic_business_64ic_business_partnership_64ic_business_partnership_white_64ic_business_64ic_calculator_64ic_calendar_64ic_calendar_64ic_car_rent_64ic_card_renewal_64ic_chat_64ic_chat_bubbles_64ic_chat_bubbles_64ic_chat_white_64ic_checklist_64ic_checkmark_64ic_blockchain_64ic_smart_development_64ic_blockchain_consulting_64ic_checkmark_white_64ic_clock_64ic_clock_white_64ic_cloud_media_64ic_cloud_solutionsic_cloud_solutions_whiteic_cluster_64ic_cluster_white_64ic_code_base_optimization_64ic_coding_64ic_coding_white_64ic_commenting_widget_64ic_commenting_widget_64ic_containers_64ic_containers_white_64ic_continious_64ic_continious_delivery_64ic_continious_delivery_white_64ic_continious_release_64ic_continious_release_white_64ic_continious_white_64ic_cost_saving_64ic_cost_saving_white_64ic_cpu_load_64ic_credit_card_64ic_crossplatform_app_development_64ic_crossplatform_app_development_white_64ic_custom_crm_64ic_custom_crm_64ic_independence_consulring_64ic_database_calls_64ic_database_calls_white_64ic_dedicated_teams_64ic_dedicated_teams_64ic_desktop_application_user_64ic_desktop_application_user_64ic_desktop_code_64ic_desktop_code_white_64ic_developer_64ic_developer_white_64ic_development_64ic_devops_64ic_devops_64ic_documents_64ic_documents_graph_64ic_documents_graph_white_64ic_documents_white_64ic_download_presentation_64ic_education_64ic_email_open_64ic_email_open_white_64ic_environment_healthcheckethereum_white_64ic_euro_64ic_euro_white_64ic_failure_solved_64ic_gdpr_64ic_globe_outlines_64ic_good_quality_64ic_high_load_websites_64ic_high_load_websites_white_64ic_hotel_booking_64ic_inability_64ic_inability_white_64ic_increase_64ic_increase_white_64ic_increasing_team_64ic_independence_64ic_integration_64ic_it_outsourcing_64ic_it_outsourcing_64ic_knowledge_sharing_64ic_mobile_devices_64ic_laptop_user_64ic_laptop_user_white_64ic_launch_64ic_launch_white_64ic_learning_64ic_learning_two_white_64ic_lighthouse_64ic_link_64ic_load_balancer_64ic_load_balancer_64ic_load_card_64ic_lock_64ic_lock_white_64ic_low_cost_64ic_low_load_websites_64ic_maintenance_tools_64ic_maintenance_tools_white_64ic_media_player_64ic_media_player_white_64ic_messaging_platforms_64ic_microservice_architecture_64ic_microservices_64ic_microservices_64ic_mobile_app_64ic_mobile_app_64ic_mobile_content_64ic_mobile_development_64ic_mobile_development_white_64ic_mobile_devices_64ic_mobile_devices_white_64ic_mobile_payments_64ic_mobile_social_media_applications_64ic_mobile_workflows_64ic_money_transfers_64ic_multimedia_sharing_64ic_multimedia_sharing_white_64ic_my_garage_64ic_no_access_64ic_no_access_white_64ic_no_oldschool_64ic_online_marketplaces_64ic_online_marketplaces_white_64ic_online_trading_64ic_online_trading_64ic_pair_device_64ic_parallels_64ic_parallels_white_64ic_passcode_64ic_payment_systems_64ic_performance_64ic_performance_issues_64ic_performance_issues_white_64ic_performance_white_64ic_plane_64ic_plane_white_64ic_plus_64ic_plus_64ic_pricetags_64ic_pricetags_64ic_product_64ic_product_search_64ic_product_white_64ic_productivity_tools_64ic_productivity_tools_64ic_project_delivery_64ic_project_delivery_white_64ic_project_management_64ic_project_management_collaboration_64ic_project_management_team_64ic_project_management_team_white_64ic_project_risks_reduced_64ic_quality_mark_64ic_quality_mark_64ic_quality_mark_white_64ic_question_64ic_react_native_64ic_response_time_64ic_response_time_white_64ic_rest_api_64ic_retail_64ic_transparency_consulting_64ic_scale_up_64ic_scale_up_white_64ic_security_64ic_security_64ic_self_healing_64ic_self_healing_64 copyic_send_money_64ic_server_64ic_server_white_64ic_shopping_64ic_shopping_white_64ic_sleep_mode_64ic_small_is_beautiful_64ic_smaller_price_64ic_social_benefits_64ic_social_connections_64ic_socket_64Group 20ic_spare_parts_for_cars_64ic_spare_parts_for_cars_white_64ic_speedometer_64ic_performance_consulting_64ic_speedometer_white_64ic_startup_64ic_startup_white _64ic_target_64ic_team_64ic_testing_64ic_testing_checklist_64ic_testing_checklist_white_64ic_testing_white_64ic_three_times_faster_64ic_touch_64ic_touch_id_64ic_touch_white_64ic_transparency_64ic_ui_design_desktop_64ic_ui_design_mobile_64ic_ui_design_mobile_white_64ic_umbrella_64ic_umbrella_64ic_umbrella_white_64ic_up_and_down_scaling_64ic_up_and_down_scaling_64ic_users_64ic_users_white_64ic_ux_design_64ic_ux_design_desktop_64ic_ux_design_64ic_ux_design_white_64ic_vehicle_64ic_web_based_search_64ic_web_based_search_white_64ic_web_browser_code_64ic_web_browser_developer_mode_64ic_web_browser_user_64ic_web_development_64ic_web_development_white_64ic_web_portals_64ic_web_portals_64ic_web_user_64ic_web_user_white64ic_workflow_64ic_workflow_steps_64ic_workflow_steps_white_64ic_workflow_white_64ic_working_environment_64solidity_blackGroup 19

Docker: Virtualize Your Development Environment Right

— How to reduce deployment time and cost?
— How to cut the time needed to set up a new Java project?
— How to simplify your development environment?

The answer that comes to mind first is virtualization.

Why Pure Virtualization is Not an Option for You

In its essence, virtualization allows running of a few operational systems on a single machine, which turned out to be really helpful for testing purposes. But high processor loading, excessive usage of RAM and HD space, and the impossibility of reuse in case of unique configurations makes development processes too slow. Thus, virtualization doesn’t fit for software engineers and stakeholders wanting to deploy their app quickly.


In 2010 HashiCorp introduced Vagrant. As a command line utility for virtualization software, it allows running of commands like [create virtual machine] and generation of complicated configurations. As a result, you can type a single [vagrant up] line in your terminal when you want to, say, run your project with PHP isolated in Ubuntu.


Vagrant made virtualization tasks much simpler for developers, but the approach itself remained too resource-intensive, so in 2013 Solomon Hyckes introduced Docker.

How Docker Changed The Way Hardware Is Virtualized

Docker is an open-source platform that was created for rapid deployment and allows:

— setting up the same environment anywhere you need
— release of the application code in less time
— performing quality assurance more quickly

This becomes possible thanks to Docker’s container virtualization platform with processes and utilities managing RAM, HDD, CPU, etc. No matter what app you want to run inside Docker — a NodeJS web app, a Selenium server, a Java application or a Python script — each application will run in isolation inside its Docker container.

And you can create as many containers on a single machine as you need!

Under The Hood: How Docker Works

In Docker, three main components do all the magic:

Linux Containers, a technology of virtualization that allows running several isolated OS instances on one host
Cgroups, a Linux kernel feature that limits, accounts for, and isolates the resource usage (CPU, memory, disk I/O, network, etc.) of a collection of processes
Linux Namespaces (lightweight process virtualization feature), used to organize isolated places called Docker containers

Containers are similar to directories having everything applications may require to work. Each container is created from an image, a read-only template usually stored in a Docker registry (either private or public).

Dockerfile creating an image with Ruby, Sass, and Gulp installed and then launching a container on top of it:

FROM node:6.1-onbuild

# Install gem sass for grunt-contrib-sass
RUN apt-get update -qq && apt-get install -y build-essential
RUN apt-get install -y ruby
RUN gem install sass

RUN npm install -g bower gulp

RUN bower install --config.interactive=false --allow-root

ENV NODE_ENV development

# Port 3000 for server
# Port 35729 for livereload
EXPOSE 3000 35729

Sounds great, but in practice, we usually need to launch a few containers at once to build a complete development or testing environment for an application. What to do then?

One Step Further: Multi-Container Apps with Compose

Docker’s Compose is a tool introduced for defining and running multi-container applications. To configure your app’s services, you must create a Compose file. Then, using a single [docker-compose up] command, you set up and start all services required for your configuration.

Example of a docker-compose.yml file:

app:
  build: ./app/
  ports:
    - "3000:3000"
    - "35729:35729"
  volumes:
    - ./app/config:/usr/src/app/config
    - ./app/modules:/usr/src/app/modules
    - ./app/public:/usr/src/app/public
    - ./app/.jshintrc:/usr/src/app/.jshintrc
    - ./app/.csslintrc:/usr/src/app/.csslintrc
  environment:
    MOODLE_URL: http://192.168.99.100:8080
    MOODLE_SERVICE: appname_mobile_app
    ANGULAR_EXPIRATION_HOURS_AUTH: 24

moodle:
  build: ./dockerfiles/moodle/
  ports:
    - "8080:80"
  links:
    - db
  volumes:
    - ./dockerfiles/appname/foreground.sh:/etc/apache2/foreground.sh

db:
  image: centurylink/mysql
  expose:
    - "3306"
  environment:
    MYSQL_DATABASE: moodle
    MYSQL_USER: moodle
    MYSQL_PASSWORD: moodle
docker-compose up -d

The above-listed file will run an app that exists in 3 different docker images: app (with a nodeJS application), moodle (with PHP scripts and the Apache web server), and db (with a mySQL database).

Long Story Short, Why Use Docker?

Docker allows running any platform with its own configuration on top of your infrastructure without overloading its resources as in the case of virtual machines. It lets you put your environment and configuration into the code and deploy it.

As a result, Docker allows our developers to:

— be as close as possible to production
— have a fast development environment available for interactive use
— run different applications on the same host without any conflicts
— dramatically reduce costs by running many instances on a single server
— bring up new processes via containers within seconds

And no wonder that not only K&C but leading software companies like Google and Facebook eventually turned to using Docker for their development matters as well.

SHARE WITH FRIENDS
You might find this interesting
E-book
How to Secure Web Product Development — FREE eBook
E-book
Top Tools for Cost-Effective Web Development — eBook
Our cases
Reformation of Deployment Cycle for Bosch Classic Cars Portal
Our cases
Fast and Lightweight Mobile Application based on PhoneGap/ Cordova
E-book
Determining Approaches to Mobile App Development
Our cases
The Platform Providing Event Organization
Our cases
VAIX - Fault tolerant infrastructure for 24/7 high-load machine learning service
Web
Your React Developers in Munich
Web,DevOps,Our cases
Our case: Marketplace for gaming goods
Our cases
Reference: Major producer of auto electronics and spare parts
Our cases
Liferay Portal Developers: Performance Tuning Case Study
Our cases
Drivelog.de — Web Marketplace for Car Owners and Service Providers
Our cases
Bosch Classic Cars - Digital Engagement Platform for 19K Vintage Car Owners
Our cases
How to apply React Native while developing heavy cross-platform mobile apps
Web,Outsourcing,Other
How a Company Can Benefit from White Label: K&C experience
E-book
Digital Transformation: the Philosopher’s Stone of Economic Growth
Web,Other
How to Make Your Web Solution Rock: 7 Areas to Check
Other
Culture eats technology for breakfast
Web
K&C insights: how to make your workflow work for you
Other
Big Data: Why Your Business Needs it ASAP
Web
Microservices… when do we need them?
Web
Cost efficient technologies
Mobile
WHY THE IONIC FRAMEWORK IS THE BEST CHOICE FOR YOUR HYBRID APP
Web
Angular 2.0 vs Angular 1.4. What fits you best?
Web
Centralized Logging with Logstash, Elasticsearch & Kibana
Our cases
Portal Performance Tuning For Major German Travel Agency
Web
React Developers Munich
Other
Europe’s Big Payments Directive PSD2
Web
Scaling software solutions - how it works
Web
Plan to Succeed: 4 Tips for Building Scalable Software
Amazon Web Services
Hybrid Cloud Consulting Services in Munich
Our cases
Micro-service Architecture for New AngularJS Application - Case Study
Other,Marketing
How to Become a Leader in Your Market
Web
Advanced Technologies for Marketing Automation
Other
How to Convert Your Business to an Amazon-Style Market Leader
Web,Mobile,Amazon Web Services
SERVERLOSE ARCHITEKTUR FÜR CLOUD-BASIERTE APPS: TECHNOLOGIE-ANBIETER UND GRENZEN
Web,Amazon Web Services
Cloud App Security: Three Authentication Approaches
Web,Amazon Web Services
Your Expert Angular Developers in Munich | K&C Development
Web,Amazon Web Services
What's New In React 16.3.0 - 16.4.2 | K&C React Dev
Web,Outsourcing
Migration from Angular 1 to Angular 5
DevOps
Setting Up: Traefik Balancer In Rancher Cloud
Web,Amazon Web Services
Vue.js 2019 - not Angular / React
DevOps
Installation and setting up: Nextcloud as a local network storage on CentOS7
Other
The Power of the Holistic Business Analysis
Web
Web App Security 101: How to Defend Against a Brute Force Attack
DevOps
How to start services on Linux
DevOps
DevOps: Kubernetes Federation on Google Cloud Platform
Outsourcing,Testing
Die Rolle des QS-Teams in Software-Projekten
DevOps
KUBERNETES-BERATUNG: SCHRITT FÜR SCHRITT ZUM HEPTIO ARK (VELERO) BACKUP
DevOps,Outsourcing
KUBERNETES ALS FÜHRENDE MICROSERVICE-ARCHITEKTUR IN PUNCTO SICHERHEIT
DevOps,Amazon Web Services
Kubernetes at the Forefront of Secure Microservices Future
Outsourcing,Amazon Web Services
FUNKTIONEN VON AWS LAMBDA DEBUGGEN
Amazon Web Services
Auswahl Cloud-Provider ohne Vendor Lockin
Web,Amazon Web Services
CLOUD DEPLOYMENT: YOUR APPLICATION’S OPTIONS
Our cases
CLOUD-LÖSUNG VS. BARE METAL SERVER: WANN MACHT WELCHER ANSATZ SINN?
Outsourcing
SCALED AGILE FRAMEWORKS: HINTERGRÜNDE UND AUSFÜHRLICHER LEITFADEN
Outsourcing
SCALED AGILE FRAMEWORKS: YOUR COMPLETE GUIDE TO WHICH, WHY AND HOW
DevOps
Cloud-Trends 2019 - Hybrid, SAAS und PAAS | K&C Beratung
Outsourcing
Agile entwickeln mit festen Budgets | K&C Software München
Web,Outsourcing
How to Control Agile Development: Progress and Costs
DevOps
Kubernetes-Cluster absichern mit Hashicorp Consul/Vault
Web,Outsourcing,Other
Angular 5 VS React.js – Who’s Going to Set the Tone in the Upcoming Year?
DevOps
Kubernetes backup with Heptio Ark (Velero)
Web
How to Motivate Your Dedicated Team to Work with Legacy Projects
Web
4 Time-Saving Ways to Test Your Cross Platform Mobile App
Web,Outsourcing
Angular 6 Will Be A Hit
DevOps
Hybrid, SAAS+PAAS: cloud solution trends to watch in 2019
DevOps,Outsourcing
Rancher 2.0: A Quick Look at the New Version
Other
GDPR: Smart Practices
DevOps
DevOps Consulting – Our Business Is Automating Yours
Marketing
Аudience-based Marketing
Web,Mobile,Back-end,Amazon Web Services
Serverless Architecture for Modern Apps: Stacks Providers & Caveats
DevOps,Outsourcing,Amazon Web Services
Information Security with AWS DevOps
DevOps,Other
Security in Kubernetes and How Companies Can Benefit from It
Our cases,Amazon Web Services
CLOUD SOLUTION VS. BARE METAL SERVER: WHEN AND WHY
Other
Swimming with Sharks
DevOps
How We Manage Our Infrastructure with Chef
Web,Outsourcing,Other
JS Frameworks: The Trendiest Frameworks You Should Know
Web,Outsourcing
Angular 6 vs. Ember 3
Web,Outsourcing,Other
Angular 5.0.0 – A Better Version of Itself
Web,Other
GoLang: Features, Pros and Cons
Web,Outsourcing,Testing
QA for CxOs: How to Hire and Outsource
Other
Angular vs. Vue vs. jQuery vs. React vs. Ember
Web,Other
JAMSTACK IS THE NEW FACE OF STATIC SITES
DevOps
What to Choose: NFS or CEPH?
DevOps
DevOps with Puppet: Tips on Setting it up for Configuring Servers
Web
A secret formula of an agile dream team
Web
Angular 4 vs React – what to choose in 2017
Web
Technologies that Foster Digital Transformation
Web
When Microservices Help Make Future-Ready Products
DevOps,Outsourcing,Other
ROCKET.CHAT as an internal messaging system and helpdesk platform
DevOps
DevOps als DevSecOps – Integrierter Schutz vor Bedrohungen ohne Termin- und Budgetüberschreitung
DevOps
DevOps As DevSecOps – Full Integration of Threat Protection Without Compromising Deadlines of Budgets
Web,Other
Dedicated Teams for Web Development: Choice Criteria to be Checked
Web,Mobile,Outsourcing
Progressive Web Apps and Why You May Need Them
DevOps,Outsourcing
AWS DevOps: A New Way to Run Business
DevOps,Outsourcing,Other
How to setup Kubernetes cluster on AWS
Web,Other
SSR or CSR for Progressive Web App
DevOps
Guide for Hashicorp Consul/Vault with Kubernetes | K&C Consulting
Web,Outsourcing,Other
Golang vs. Node.js
Web,Amazon Web Services
Monolith, Microservices, Serverless... Are We in the Middle of the Way?
Web,Outsourcing,Testing
Sicherheit für Web-Anwendungen - dank Threat Modeling
Web,Amazon Web Services
ANGULAR 7 OR REACT For Your App?
Web,Mobile,Outsourcing,Other
All You Wanted to Know About Chatbot Platforms
Testing
What Is Quality Assurance and Why You Need It Immediately
Web
Debunking imaginary shortcomings of cross-platform frameworks
Web,Our cases
White Label: A Customized Software Solution from a Business and Tech Perspective
Other
Don’t Treat Me Like a Fool: The worst thing you can do for your business
DevOps
Use case: how to build and run Docker containers with NVIDIA GPUs
Web,Outsourcing,Testing
Web App Security 101: Keep Calm and Do Threat Modeling
Web,Mobile
Wann eignen sich Progressive Web Apps ?
Web
Agile and DevOps are Key Drivers of Digital Transformation
Outsourcing,Testing
How the QA Team Tests Your Project
Other
I’m Tired of Blockchain Hype, Are You?
Outsourcing,Amazon Web Services
DEBUGGING AWS LAMBDA FUNCTIONS
DevOps
How to Build a Rancher & Docker Based Cloud
Web,Outsourcing,Other
JavaScript & WebSockets: How to Build Real-Time Applications
Web
A Guidance for Keeping Your Web Development Project Within the Budget: Three Key Pillars
Web,Outsourcing,Other
Angular vs. React vs. Vue – Let the Fight Start!
Web
All You Need to Know About Web App Security Now
Outsourcing,Other
How to Ramp up Your Team Wisely
Web
Node.js 10.0.0: Everyone’s Favorite Got Even Better
Web
Fintech Apps - A Lucrative Solution for Customers and Businesses Alike
Web,Outsourcing
Node.js vs. Angular.js – Two Sides of the Same Coin
Web
JQuery vs. Angular: Ad Astra per Aspera
Web,Mobile,Back-end,Amazon Web Services
Why Enterprises Choose Serverless Architecture
Web,Outsourcing
ANGULAR 6 versus REACT 16.3
Mobile
Native or Hybrid Apps: A Quick Comparison
Web,Amazon Web Services
Single Page Application SEO: Tips & Tricks
Outsourcing
The BPM in the Microservice Environment
DevOps
How We Use Ansіble for Configuration of Our Environments