{"id":124,"date":"2018-10-30T02:14:50","date_gmt":"2018-10-30T02:14:50","guid":{"rendered":"https:\/\/vernonkeenan.com\/?p=124"},"modified":"2018-10-30T02:14:50","modified_gmt":"2018-10-30T02:14:50","slug":"docker-lab-with-linux-mac-and-windows","status":"publish","type":"post","link":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/","title":{"rendered":"Make a Docker Lab With Linux, Mac and Windows"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Here&#8217;s a quickie realization for folks like me who naively figured it would be easy to integrate my Windows and Mac VS Code users with Docker. This realization resulted in me building a bare-metal Linux box to make everything work a lot easier for our Docker lab.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Docker Is Easy, Usually<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s easy for most engineers to use Docker if you are working on one platform. If you&#8217;re working exclusively in Windows, MacOS or Linux, then you&#8217;re probably not going to hit the speed bump I&#8217;m about to describe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This advice will resonate for IT pros who need to integrate Docker into an enterprise with Mac and Windows developers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ignore The Windows Docker Strategy<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes I get led astray in my devops studies because I am lured into a vendor strategy. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I see a shiny object that makes me feel better. I am like a fish chasing a lure because this newfangled vendor strategy promises me things will be glorious once I buy into the strategy. What really happens is that I get hooked on the vendor&#8217;s offering.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote has-text-align-center is-style-large is-layout-flow wp-block-quote-is-layout-flow\"><p>If you are working with Node, PHP,&nbsp; or Golang to build a cloud app, then you should know that the Windows Docker strategy is crap.&nbsp;<\/p><\/blockquote>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" data-src=\"https:\/\/vernonkeenan.com\/wp-content\/uploads\/2018\/10\/Docker-Lab-e1540855837973.png\" alt=\"Docker Lab\" class=\"wp-image-125 lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" \/><figcaption><em>This is the good way to make a Docker Lab<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The containerization &#8220;strategy&#8221; announced by Docker and Microsoft in 2017 is a good example of vendors luring in IT pros with talk of nirvana. Here is that strategy in a nutshell: if you want to run Windows servers within a Docker container, that is now possible. You still need Hyper-V running underneath Docker on a Windows 2016 server, so whatever.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hopefully this little realization will save someone else the time and bother I wasted going down a few rabbit holes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Linux Rules Devops<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">As it is with all things devops, it is always best to go back to mother, i.e. Linux.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After studying the Docker documentation and tuning my network, I realized that I needed Docker to run on a dedicated Linux platform. If I told my Docker clients that DOCKER_HOST was the Linux server, I figured I might have a solution that worked! SPOILER ALERT &#8212; It does and it&#8217;s spectacular.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote has-text-align-center is-style-large is-layout-flow wp-block-quote-is-layout-flow\"><p>Here&#8217;s the real zinger that got me to set up a dedicated server. The documentation on setting up networks and exposing containers is for Linux. The Docker networking instructions give solutions using <code>iptables<\/code> in Linux.<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Set Up Your Docker Lab Server<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Take note that I am using an open, unauthenticated port on the Docker server for control communication, which Docker does not recommend. You can implement TLS security on your ports to tighten things up if needed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I went with a bare metal Linux installation for a couple of reasons. First, Docker involves the use of virtualization technology, and it&#8217;s always best to avoid nesting virtualizations. Also, just about any spare PC will do for this lab setup. Even a five-year-old desktop with a 120 GB SSD will be an awesome Linux lab server.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I only spent an hour sitting in the lab setting up my new server. I used the latest LTS version of Ubuntu, but several Linux distros may be used for your Docker Linux host. If you use another distro, then check for distribution-specific instructions for how to open Docker port 2375.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>To set up a simple Mac and Windows Docker lab without security, follow these instructions.<\/p><\/blockquote>\n\n\n\n<ol class=\"wp-block-list\"><li>Start with a working VS Code installation on Mac and Windows.<\/li><li>Install Docker locally on both Mac and Windows developer workstations.<\/li><li>Integrate VS Code with Docker on Mac and Windows. Make sure you have the Docker extension installed and working properly.<\/li><li>Prepare a bare-metal server from the distribution ISO with Ubuntu Server 18.04 LTS.<\/li><li>Assign the server a fixed, private IP, such as 10.0.0.20.<\/li><li><a href=\"https:\/\/support.plesk.com\/hc\/en-us\/articles\/213909965-How-to-disable-AppArmor-on-Plesk-12-x\">Remove AppArmor<\/a> on the Linux server to improve performance.<\/li><li>Follow <a href=\"https:\/\/docs.docker.com\/v17.09\/engine\/installation\/linux\/docker-ce\/ubuntu\/\">these instructions<\/a> to install Docker-CE.<\/li><li>To open up port 2375 update the following system files and reboot your server (<a href=\"https:\/\/gist.github.com\/jupeter\/b39e11521452129af2af85cc855c91d7\">source<\/a>).&nbsp;<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"># File: \/etc\/default\/docker<br># Use DOCKER_OPTS to modify the daemon startup options.<br>DOCKER_OPTS=\"tcp:\/\/10.0.0.20:2375 -H unix:\/\/\/var\/run\/docker.sock\"<br><br># File: \/lib\/systemd\/system\/docker.service<br>## Add EnviromentFile + add \"$DOCKER_OPTS\" at end of ExecStart<br>## After change exec \"systemctl daemon-reload\"<br>EnvironmentFile=\/etc\/default\/docker<br>ExecStart=\/usr\/bin\/dockerd -H fd:\/\/ $DOCKER_OPTS<br><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Update Mac and Windows Environments<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Start configuring your clients by adding the following line to your &nbsp;<code>.zshrc&nbsp;<\/code>and&nbsp;<code>.bashrc<\/code>&nbsp;files on the Mac:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">export DOCKER_HOST=tcp:\/\/10.0.0.20:2375<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On Windows, go into the System control panel, Advanced Settings, Environment Variables and add the following:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">DOCKER_HOST=tcp:\/\/10.0.0.20:2375<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If you are using Windows Subsystem for Linux (WSL), and you use Docker with WSL, then add the <code>export<\/code> statement to your <code>.zshrc <\/code> and <code>.bashrc<\/code> files too.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Restart VS Code and any terminal or shell programs you have running. Launch a new shell and test it with&nbsp;<code>docker info<\/code>. You should see Ubuntu 18.04 OS listed in the output.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">First, double-check the <code>export<\/code> statements and Environment Variable settings in your client environments. Make sure you have the &#8220;:2375&#8221; on the end.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you have doubts whether you have successfully opened up port 2375 on your Linux server check the port manually. First, make sure you have <code>telnet<\/code> installed on your Windows, Mac or WSL. Issue this <code>telnet<\/code> command to see if the port on host 10.0.0.20 is open.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ telnet 10.0.0.20 2375<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If the port is open, then&nbsp;<code>telnet<\/code> will continue to run and you will need to quit it with CTRL-C or CTRL-]. If the port is not open, then you will get a communication refused error message.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Celebration Time!<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After installing your new host, disable the Docker daemons running on Mac and Windows. The Docker CLI works without the local servers running.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote has-text-align-center is-style-large is-layout-flow wp-block-quote-is-layout-flow\"><p>Now it&#8217;s time to bask in the glory of your conquest. Run into the next office and claim victory!<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a quickie realization for folks like me who naively figured it would be easy to integrate my Windows and Mac VS Code users with Docker. This realization resulted in&hellip;<\/p>\n","protected":false},"author":1,"featured_media":127,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[7],"tags":[29,40,64,66,68],"post_series":[],"class_list":["post-124","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to","tag-docker","tag-macos","tag-tips","tag-vs-code","tag-windows","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.9 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Make a Docker Lab With Linux, Mac and Windows - SalesforceDevops.net<\/title>\n<meta name=\"description\" content=\"Making a Docker Lab can be a pain in a multivendor environment. Check out how Taxnexus made a Docker Lab work with Mac and Windows both running VS Code.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Make a Docker Lab With Linux, Mac and Windows - SalesforceDevops.net\" \/>\n<meta property=\"og:description\" content=\"Making a Docker Lab can be a pain in a multivendor environment. Check out how Taxnexus made a Docker Lab work with Mac and Windows both running VS Code.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/\" \/>\n<meta property=\"og:site_name\" content=\"SalesforceDevops.net\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/salesforcedevopsnet\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-30T02:14:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"453\" \/>\n\t<meta property=\"og:image:height\" content=\"320\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Vernon Keenan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@salesforcedevop\" \/>\n<meta name=\"twitter:site\" content=\"@salesforcedevop\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vernon Keenan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/\"},\"author\":{\"name\":\"Vernon Keenan\",\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#\\\/schema\\\/person\\\/f681893c994bc40406bb391546cd7ac8\"},\"headline\":\"Make a Docker Lab With Linux, Mac and Windows\",\"datePublished\":\"2018-10-30T02:14:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/\"},\"wordCount\":915,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/salesforcedevops.net\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg\",\"keywords\":[\"Docker\",\"MacOS\",\"Tips\",\"VS Code\",\"Windows\"],\"articleSection\":[\"How To\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/#respond\"]}],\"copyrightYear\":\"2018\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/\",\"url\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/\",\"name\":\"Make a Docker Lab With Linux, Mac and Windows - SalesforceDevops.net\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/salesforcedevops.net\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg\",\"datePublished\":\"2018-10-30T02:14:50+00:00\",\"description\":\"Making a Docker Lab can be a pain in a multivendor environment. Check out how Taxnexus made a Docker Lab work with Mac and Windows both running VS Code.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/2018\\\/10\\\/30\\\/docker-lab-with-linux-mac-and-windows\\\/#primaryimage\",\"url\":\"https:\\\/\\\/salesforcedevops.net\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg\",\"contentUrl\":\"https:\\\/\\\/salesforcedevops.net\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg\",\"width\":453,\"height\":320,\"caption\":\"logo with apple windows and docker\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#website\",\"url\":\"https:\\\/\\\/salesforcedevops.net\\\/\",\"name\":\"SalesforceDevops.net\",\"description\":\"Elevating Salesforce Devops with Insights and Innovation\",\"publisher\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/salesforcedevops.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#organization\",\"name\":\"SalesforceDevops.net\",\"url\":\"https:\\\/\\\/salesforcedevops.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/salesforcedevops.net\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/7760e9c16fc75961659174739887197e-sticker.png\",\"contentUrl\":\"https:\\\/\\\/salesforcedevops.net\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/7760e9c16fc75961659174739887197e-sticker.png\",\"width\":421,\"height\":421,\"caption\":\"SalesforceDevops.net\"},\"image\":{\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/salesforcedevopsnet\",\"https:\\\/\\\/x.com\\\/salesforcedevop\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/vernonkeenan\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCOgOn9rD5gyXSOmV7-Q0n7g\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/salesforcedevops.net\\\/#\\\/schema\\\/person\\\/f681893c994bc40406bb391546cd7ac8\",\"name\":\"Vernon Keenan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1183f1ebb5c059e052825760f95b25244abc5ef832145327f298f3697f980c7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1183f1ebb5c059e052825760f95b25244abc5ef832145327f298f3697f980c7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1183f1ebb5c059e052825760f95b25244abc5ef832145327f298f3697f980c7?s=96&d=mm&r=g\",\"caption\":\"Vernon Keenan\"},\"description\":\"Vernon Keenan (LinkedIn) works as a senior information technology industry consultant based in Oakland, California. He earned his B.Sc. in Biomedical Engineering at Northwestern University where he programmed a PDP-8 with punched paper tape. In his 34-year-long career he has been a teacher, SPSS programmer, database administrator, clinical researcher, technology journalist, product marketing manager, market researcher, management consultant, and industry analyst. Most recently he is a telecom operator, cloud architect, Go devops engineer and Salesforce Developer\\\/Architect. For inquiries about Salesforce strategy briefings or solution architect work please contact Vern directly at +1-510-679-1900 or vern@vernonkeenan.com.\",\"sameAs\":[\"https:\\\/\\\/ceres-gw.tnxs.net\",\"https:\\\/\\\/linkedin.com\\\/in\\\/vernonkeenan\",\"https:\\\/\\\/x.com\\\/salesforcedevop\"],\"url\":\"https:\\\/\\\/salesforcedevops.net\\\/index.php\\\/author\\\/vern\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Make a Docker Lab With Linux, Mac and Windows - SalesforceDevops.net","description":"Making a Docker Lab can be a pain in a multivendor environment. Check out how Taxnexus made a Docker Lab work with Mac and Windows both running VS Code.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/","og_locale":"en_US","og_type":"article","og_title":"Make a Docker Lab With Linux, Mac and Windows - SalesforceDevops.net","og_description":"Making a Docker Lab can be a pain in a multivendor environment. Check out how Taxnexus made a Docker Lab work with Mac and Windows both running VS Code.","og_url":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/","og_site_name":"SalesforceDevops.net","article_publisher":"https:\/\/www.facebook.com\/salesforcedevopsnet","article_published_time":"2018-10-30T02:14:50+00:00","og_image":[{"width":453,"height":320,"url":"https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg","type":"image\/jpeg"}],"author":"Vernon Keenan","twitter_card":"summary_large_image","twitter_creator":"@salesforcedevop","twitter_site":"@salesforcedevop","twitter_misc":{"Written by":"Vernon Keenan","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/#article","isPartOf":{"@id":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/"},"author":{"name":"Vernon Keenan","@id":"https:\/\/salesforcedevops.net\/#\/schema\/person\/f681893c994bc40406bb391546cd7ac8"},"headline":"Make a Docker Lab With Linux, Mac and Windows","datePublished":"2018-10-30T02:14:50+00:00","mainEntityOfPage":{"@id":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/"},"wordCount":915,"commentCount":0,"publisher":{"@id":"https:\/\/salesforcedevops.net\/#organization"},"image":{"@id":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/#primaryimage"},"thumbnailUrl":"https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg","keywords":["Docker","MacOS","Tips","VS Code","Windows"],"articleSection":["How To"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/#respond"]}],"copyrightYear":"2018","copyrightHolder":{"@id":"https:\/\/salesforcedevops.net\/#organization"}},{"@type":"WebPage","@id":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/","url":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/","name":"Make a Docker Lab With Linux, Mac and Windows - SalesforceDevops.net","isPartOf":{"@id":"https:\/\/salesforcedevops.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/#primaryimage"},"image":{"@id":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/#primaryimage"},"thumbnailUrl":"https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg","datePublished":"2018-10-30T02:14:50+00:00","description":"Making a Docker Lab can be a pain in a multivendor environment. Check out how Taxnexus made a Docker Lab work with Mac and Windows both running VS Code.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/salesforcedevops.net\/index.php\/2018\/10\/30\/docker-lab-with-linux-mac-and-windows\/#primaryimage","url":"https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg","contentUrl":"https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg","width":453,"height":320,"caption":"logo with apple windows and docker"},{"@type":"WebSite","@id":"https:\/\/salesforcedevops.net\/#website","url":"https:\/\/salesforcedevops.net\/","name":"SalesforceDevops.net","description":"Elevating Salesforce Devops with Insights and Innovation","publisher":{"@id":"https:\/\/salesforcedevops.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/salesforcedevops.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/salesforcedevops.net\/#organization","name":"SalesforceDevops.net","url":"https:\/\/salesforcedevops.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/salesforcedevops.net\/#\/schema\/logo\/image\/","url":"https:\/\/salesforcedevops.net\/wp-content\/uploads\/2021\/03\/7760e9c16fc75961659174739887197e-sticker.png","contentUrl":"https:\/\/salesforcedevops.net\/wp-content\/uploads\/2021\/03\/7760e9c16fc75961659174739887197e-sticker.png","width":421,"height":421,"caption":"SalesforceDevops.net"},"image":{"@id":"https:\/\/salesforcedevops.net\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/salesforcedevopsnet","https:\/\/x.com\/salesforcedevop","https:\/\/www.linkedin.com\/in\/vernonkeenan","https:\/\/www.youtube.com\/channel\/UCOgOn9rD5gyXSOmV7-Q0n7g"]},{"@type":"Person","@id":"https:\/\/salesforcedevops.net\/#\/schema\/person\/f681893c994bc40406bb391546cd7ac8","name":"Vernon Keenan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f1183f1ebb5c059e052825760f95b25244abc5ef832145327f298f3697f980c7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f1183f1ebb5c059e052825760f95b25244abc5ef832145327f298f3697f980c7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f1183f1ebb5c059e052825760f95b25244abc5ef832145327f298f3697f980c7?s=96&d=mm&r=g","caption":"Vernon Keenan"},"description":"Vernon Keenan (LinkedIn) works as a senior information technology industry consultant based in Oakland, California. He earned his B.Sc. in Biomedical Engineering at Northwestern University where he programmed a PDP-8 with punched paper tape. In his 34-year-long career he has been a teacher, SPSS programmer, database administrator, clinical researcher, technology journalist, product marketing manager, market researcher, management consultant, and industry analyst. Most recently he is a telecom operator, cloud architect, Go devops engineer and Salesforce Developer\/Architect. For inquiries about Salesforce strategy briefings or solution architect work please contact Vern directly at +1-510-679-1900 or vern@vernonkeenan.com.","sameAs":["https:\/\/ceres-gw.tnxs.net","https:\/\/linkedin.com\/in\/vernonkeenan","https:\/\/x.com\/salesforcedevop"],"url":"https:\/\/salesforcedevops.net\/index.php\/author\/vern\/"}]}},"uagb_featured_image_src":{"full":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"thumbnail":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q-150x150.png",150,150,true],"medium":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q-300x212-1.jpg",300,212,true],"medium_large":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"large":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"1536x1536":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"2048x2048":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"lightbox":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"search_results":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q-125x125.jpg",125,125,true],"blog_entry":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"blog_post":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"blog_post_full":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"blog_related":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false],"gallery":["https:\/\/salesforcedevops.net\/wp-content\/uploads\/2018\/10\/qJ-H5ZRk89m2xeq5QyncsrnTzqrqzN7Y9aBZTaXoQ8Q.jpg",453,320,false]},"uagb_author_info":{"display_name":"Vernon Keenan","author_link":"https:\/\/salesforcedevops.net\/index.php\/author\/vern\/"},"uagb_comment_info":4,"uagb_excerpt":"Here&#8217;s a quickie realization for folks like me who naively figured it would be easy to integrate my Windows and Mac VS Code users with Docker. This realization resulted in&hellip;","_links":{"self":[{"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/posts\/124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/comments?post=124"}],"version-history":[{"count":0,"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/posts\/124\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/media\/127"}],"wp:attachment":[{"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/media?parent=124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/categories?post=124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/tags?post=124"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/salesforcedevops.net\/index.php\/wp-json\/wp\/v2\/post_series?post=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}