{"id":2780,"date":"2018-10-04T06:00:32","date_gmt":"2018-10-04T06:00:32","guid":{"rendered":"https:\/\/blog.ssdnodes.com\/blog\/?p=2780"},"modified":"2025-05-18T19:09:12","modified_gmt":"2025-05-18T19:09:12","slug":"cool-uses-for-docker-wine","status":"publish","type":"post","link":"https:\/\/www.ssdnodes.com\/blog\/cool-uses-for-docker-wine\/","title":{"rendered":"7 cool uses for Docker: WINE and tweeting from terminals"},"content":{"rendered":"<div id=\"preview1\" class=\"g-b g-b--t1of2 split split-preview\">\n<div id=\"preview\" class=\"preview-html\">\n<p>Container technology is anything but new, but that doesn\u2019t mean we can\u2019t still figure out some new, cool uses for Docker.<\/p>\n<p><a href=\"https:\/\/www.ssdnodes.com\/blog\/linux-containers-lxc-haproxy\/\">Linux containers<\/a>, otherwise known as LXC, were first to the market on August 6, 2008. They made it possible to run multiple isolated Linux environments on a single Linux host. Docker took that took the next level starting in 2013, and is now the most popular and widely-used container management system. Since Docker is all the rage right now, that\u2019s where we\u2019re going to start.<\/p>\n<h2><a id=\"1_Containerize_your_own_GitHublike_repository_5\"><\/a>1. Containerize your own GitHub-like repository<\/h2>\n<p>The Microsoft takeover of GitHub made many developers worried over their code and repositories, so much to the point they\u2019re already migrating repositories and code from GitHub to GitLab in a massive surge.<\/p>\n<p>Why GitLab? It\u2019s pretty feature-competitive with GitHub, with wiki and issue-tracking features, plus a robust web interface. Even better, it\u2019s open source, which seems to give some of these developers more confidence in the sustainability of their GitLab-hosted code.<\/p>\n<p>But it\u2019s not a panacea\u2014GitLab could up and disappear, or change fundamentally, or be acquired by Google or Facebook. The good news is that you can host your own GitHub-like web-based hosting service for version control using Git and Docker within minutes!<\/p>\n<p>GitLab already provides a <a href=\"https:\/\/hub.docker.com\/r\/gitlab\/gitlab-ce\/\" target=\"_blank\" rel=\"noopener\">Docker image<\/a> for the open source community. You can host it in your local environment as well as in the public domain and make use of it without worrying about big-time acquisitions.<\/p>\n<p>If you like GitLab, you just might love <a href=\"https:\/\/gogs.io\" target=\"_blank\" rel=\"noopener\">Gogs<\/a>, a painless way to self-host a Git service. Its lightweight web interface can be run using the official <a href=\"https:\/\/hub.docker.com\/r\/gogs\/gogs\/\" target=\"_blank\" rel=\"noopener\">Docker image<\/a>, whether as an independent service or behind a <a href=\"https:\/\/www.ssdnodes.com\/blog\/self-hosting-handbook\/\">more complex self-hosting infrastructure<\/a> with a reverse proxy.<\/p>\n<p>Either way, nothing is stopping you from spinning up an <a href=\"https:\/\/www.ssdnodes.com\">inexpensive VPS<\/a> to set up your own a Git service using Docker.<\/p>\n<div class=\"cta-inline\"><\/div>\n<h2><a id=\"2_Run_Windows_apps_using_a_DockerLinux_host_20\"><\/a>2. Run Windows apps using a Docker\/Linux host<\/h2>\n<p>Sounds crazy? Yes, it is.<\/p>\n<p>You might have already seen how Linux users often \u201cemulate\u201d a Windows application inside a Linux box using <a href=\"https:\/\/www.winehq.org\/\" target=\"_blank\" rel=\"noopener\">WINE<\/a>. You can now go even further by running a Windows application inside a container that\u2019s running on a Linux VPS. For that, all you need is <a href=\"https:\/\/github.com\/scottyhardy\/docker-wine\" target=\"_blank\" rel=\"noopener\">docker-wine<\/a>.<\/p>\n<p>I can\u2019t guarantee it\u2019s going to be a smooth experience, but it just might be worth an hour\u2019s hacking.<\/p>\n<p>Why would you want to do this? Well, maybe you want to run the Windows version of Skype but don\u2019t have Windows on your local machine and don\u2019t want to install WINE there either. One obvious benefit is that your IP address will not get leaked through Skype\u2019s IP resolver. You can containerize other Windows applications like <a href=\"https:\/\/hub.docker.com\/r\/scottyhardy\/docker-wine\/\" target=\"_blank\" rel=\"noopener\">notepad<\/a> in a Linux box without actually exposing yourself to a Windows box.<\/p>\n<h2><a id=\"3_Use_LANCache_to_reduce_your_internet_bandwidth_consumption_31\"><\/a>3. Use LANCache to reduce your internet bandwidth consumption<\/h2>\n<p>Here\u2019s one for your local installation, not your VPS.<\/p>\n<p>If you\u2019re the kind of person who\u2019s ever hosted or visited a LAN party, you\u2019ve probably experienced the massive rush to download new games from Steam, <a href=\"http:\/\/Battle.net\" target=\"_blank\" rel=\"noopener\">Battle.net<\/a>, or Origin. All of a sudden your local network is overloaded with transfer, making everything slow to a crawl.<\/p>\n<p>A few developers have built Docker images that solve this problem by downloading a game\u2019s content and caching it somewhere on the local network. Instead of a dozen gamers downloading the same game via the Internet, they can transfer it from the cached version on disk. That means you download once, transfer many times, reducing bandwidth consumption significantly.<\/p>\n<p>Check out Docker images for LANCache at <a href=\"https:\/\/github.com\/multiplay\/lancache\" target=\"_blank\" rel=\"noopener\">Multiplay<\/a>, <a href=\"https:\/\/hub.docker.com\/r\/steamcache\/generic\/\" target=\"_blank\" rel=\"noopener\">Steamcache<\/a> or <a href=\"https:\/\/github.com\/multiplay\/lancache\" target=\"_blank\" rel=\"noopener\">LANCache<\/a>, to name a few.<\/p>\n<h2><a id=\"4_Dockerize_Tor_and_Privoxy_to_remain_anonymous_42\"><\/a>4. Dockerize Tor and Privoxy to remain anonymous<\/h2>\n<p>Want to secure your online activity from surveillance and traffic analysis? Those who genuinely value their Internet privacy probably already use <a href=\"https:\/\/www.torproject.org\/\" target=\"_blank\" rel=\"noopener\">Tor<\/a> or other tools like <a href=\"https:\/\/www.privoxy.org\/\" target=\"_blank\" rel=\"noopener\">Privoxy<\/a> to remain as anonymous as possible.<\/p>\n<p>You can Dockerize both of these services with a single <a href=\"https:\/\/hub.docker.com\/r\/dperson\/torproxy\/\" target=\"_blank\" rel=\"noopener\">Docker image<\/a>, which will prevent analysis of your traffic, enhance privacy by modifying HTTP headers, and remove ads or other unwanted scripts that might run on web pages. Now you can improve your security and lock down your privacy using Docker and your VPS.<\/p>\n<h2><a id=\"5_Run_ASPNET_applications_on_Linux_49\"><\/a>5. Run <a href=\"http:\/\/ASP.NET\" target=\"_blank\" rel=\"noopener\">ASP.NET<\/a> applications on Linux<\/h2>\n<p>Developing and deploying an <a href=\"http:\/\/ASP.NET\" target=\"_blank\" rel=\"noopener\">ASP.NET<\/a> application in Linux using Docker? Yes, it\u2019s very much possible, now that <a href=\"http:\/\/ASP.NET\" target=\"_blank\" rel=\"noopener\">ASP.NET<\/a> is now <a href=\"https:\/\/github.com\/aspnet\/home\" target=\"_blank\" rel=\"noopener\">open source<\/a> and supports Docker.<\/p>\n<p>As part of Microsoft\u2019s effort to make <a href=\"http:\/\/ASP.NET\" target=\"_blank\" rel=\"noopener\">ASP.NET<\/a> cross-platform, they released their first official Docker image for <a href=\"http:\/\/registry.hub.docker.com\/u\/microsoft\/aspnet\/\" target=\"_blank\" rel=\"noopener\">ASP.NET<\/a> in 2015. As we already know, one can sandbox an application on a Linux machine using Docker. Take that idea a step further, and it\u2019s easy to see how developers could add their <a href=\"http:\/\/ASP.NET\" target=\"_blank\" rel=\"noopener\">ASP.NET<\/a> application on top of the base image and run it in a container!<\/p>\n<h2><a id=\"6_Tweet_from_your_terminal_56\"><\/a>6. Tweet from your terminal<\/h2>\n<p>You want to <em>tweet<\/em> from your <em>terminal<\/em> using <em>Docker<\/em>? For some people, who love to use terminals and hang out in them for a considerable amount of time, it makes sense to use a terminal-based Twitter client.<\/p>\n<p>The Docker-based approach will isolate the Twitter application from other applications\u2014whenever you don\u2019t need the Twitter client, stop the container or delete it. This will ensure that libraries and code in the host machine remain unaffected.<\/p>\n<p>These terminal-based Twitter clients are faster and cleaner than desktop clients or the default web interface, and there is a number to choose from: <a href=\"https:\/\/github.com\/jessfraz\/dockerfiles\/blob\/master\/rainbowstream\/Dockerfile\" target=\"_blank\" rel=\"noopener\">Rainbow stream<\/a>, <a href=\"https:\/\/github.com\/jaymoulin\/docker-twidge\" target=\"_blank\" rel=\"noopener\">Twidge<\/a>, and <a href=\"https:\/\/github.com\/jaymoulin\/docker-twitter-cli\" target=\"_blank\" rel=\"noopener\">Twitter client<\/a>.<\/p>\n<h2><a id=\"7__Manage_your_IoT_devices_using_Docker_65\"><\/a>7. Manage your IoT devices using Docker<\/h2>\n<p>According to Garter, there will soon be an estimated 20 billion interconnected IoT (Internet of Things) devices such as environmental sensors, cameras, cable set-top boxes, home appliances, industrial devices and much more.<\/p>\n<p>These resource-constrained IoT devices don\u2019t need a heavier OS or VM to manage and run software to control them. Perhaps more important, many of these IoT devices move from one environment to another very quickly.<\/p>\n<p>Containers and IoT devices operate in the same paradigm when it comes to deploying, updating, and maintaining, and so it makes sense for developers to use them together! You can package the IoT software and dependencies in a Docker image and deploy that to manage and run the device with less hassle.<\/p>\n<p>How\u2019s this for an example\u2014let\u2019s say you\u2019ve deployed a fleet of Raspberry Pis, each performing different tasks, to many different environments. Surely it will be easier to deploy container-based applications on each of the devices and manage all of them from a single host. The good news is that there are already a few players, both big and small, who provide exactly this solution. <a href=\"https:\/\/resin.io\/\" target=\"_blank\" rel=\"noopener\">Resin<\/a>, <a href=\"https:\/\/kontena.io\/\" target=\"_blank\" rel=\"noopener\">Kontena<\/a>, <a href=\"https:\/\/docs.eliot.run\/introduction.html\" target=\"_blank\" rel=\"noopener\">eliot<\/a> are just a few.<\/p>\n<h2><a id=\"The_cool_uses_dont_stop_here_76\"><\/a>The cool uses don\u2019t stop here<\/h2>\n<p>Want to explore other cool ways to use Docker on your VPS? Check out the <a href=\"https:\/\/github.com\/veggiemonk\/awesome-docker\" target=\"_blank\" rel=\"noopener\">awesome-docker repository<\/a> on GitHub. It\u2019s perfect for a beginner who\u2019s just trying to make their first foray into the world of container technology.<\/p>\n<p>Also, don\u2019t forget to read <a href=\"https:\/\/www.ssdnodes.com\/blog\/5-cool-and-sometimes-impractical-things-to-do-with-docker\/\">the \u201ccool uses for Docker\u201d post<\/a> that started this trend on this very blog!<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Docker containers are a beautiful, flexible thing. Here are a few of our favorite cool uses for Docker on your VPS, from the useful to the downright ridiculous.<\/p>\n","protected":false},"author":20,"featured_media":5553,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[18],"tags":[182,260],"class_list":["post-2780","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-docker","tag-wine"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/2780","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/comments?post=2780"}],"version-history":[{"count":3,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/2780\/revisions"}],"predecessor-version":[{"id":13042,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/2780\/revisions\/13042"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media\/5553"}],"wp:attachment":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media?parent=2780"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/categories?post=2780"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/tags?post=2780"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}