<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Docker containers &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/tag/docker-containers/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bestdevops.com</link>
	<description>Lets Learn, Do it &#38; Share! Thats a Best DevOps!!!</description>
	<lastBuildDate>Wed, 14 Oct 2026 16:12:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Docker Container Attack Exposes Remote Networking Flaws: What DevSecOps Teams Need to Know</title>
		<link>https://www.bestdevops.com/latest-docker-container-attack-highlights-remote-networking-flaws/</link>
					<comments>https://www.bestdevops.com/latest-docker-container-attack-highlights-remote-networking-flaws/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 01 Sep 2020 05:19:01 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<category><![CDATA[containerjournal]]></category>
		<category><![CDATA[cybercriminals]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[DevSecOps]]></category>
		<category><![CDATA[Docker containers]]></category>
		<category><![CDATA[IT teams]]></category>
		<category><![CDATA[Remote Networking Flaws]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=13662</guid>

					<description><![CDATA[A cryptomining worm discovered by Cado Security exploited misconfigured Docker remote APIs to steal AWS credentials and run malware. Here's what went wrong and how to fix it.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on reporting originally published by <strong>Container Journal</strong> (September 2020).</em></p>



<h2 class="wp-block-heading">Overview: A Worm That Targets Misconfigured Docker Daemons</h2>



<p class="wp-block-paragraph">A cryptomining worm discovered by Cado Security exposed a serious and widespread Docker security problem: insecure remote API connections. The worm — attributed to a threat actor group known as <strong>TeamTNT</strong> — targeted Docker daemons that had been left open to unauthenticated remote connections, stole AWS credentials stored on the host, and used those credentials to spread further. The attack is a sharp reminder that containerized environments carry their own distinct security risks, many of which go unaddressed in traditional DevSecOps frameworks.</p>



<h2 class="wp-block-heading">How the Attack Worked</h2>



<p class="wp-block-paragraph">The attack chain followed a clear pattern:</p>



<ol class="wp-block-list">
<li><strong>Credential theft:</strong> The worm scanned for and harvested AWS credentials stored locally on the compromised host (typically in <code>~/.aws/credentials</code>).</li>
<li><strong>Internet scanning:</strong> TeamTNT used those stolen credentials and automated scanning tools to discover other Docker hosts exposed to the internet with unauthenticated remote APIs.</li>
<li><strong>Container compromise:</strong> Once inside, the attackers deployed cryptomining malware to generate cryptocurrency using the victim&#8217;s compute resources.</li>
<li><strong>Potential escalation:</strong> Security researchers noted that the same access vector could be used to &#8220;jailbreak&#8221; from the container to the underlying host, enabling the attacker to run arbitrary code, exfiltrate data, or install persistent malware.</li>
</ol>



<p class="wp-block-paragraph">While cryptomining is often treated as a nuisance-level threat, the underlying vulnerability is far more dangerous. An attacker with remote API access to a Docker daemon has, in effect, root-level access to the host.</p>



<h2 class="wp-block-heading">Root Cause: Insecure Docker Remote API Defaults</h2>



<p class="wp-block-paragraph">The Docker daemon can be configured to accept connections over a TCP socket, which enables remote management. The problem is that <strong>enabling remote connections without TLS authentication exposes the daemon to anyone who can reach the port</strong> — by default, TCP port 2375 for unencrypted traffic and 2376 for TLS-encrypted traffic.</p>



<p class="wp-block-paragraph">According to Sergei Shevchenko, CTO of Prevasio (a container vulnerability scanning service), the core issue is a gap between Docker&#8217;s flexibility and most developers&#8217; security knowledge. Securing the remote API requires generating TLS certificates, configuring mutual TLS (mTLS) authentication, and correctly referencing those certs in the daemon configuration — steps that many developers skip in the interest of simplicity.</p>



<p class="wp-block-paragraph">The result is a large number of Docker hosts reachable from the public internet with no authentication required whatsoever.</p>



<h2 class="wp-block-heading">Immediate Mitigations</h2>



<p class="wp-block-paragraph">If your organisation runs Docker daemons accessible over a network, the following steps should be treated as non-negotiable baselines:</p>



<ul class="wp-block-list">
<li><strong>Disable the unauthenticated TCP socket.</strong> Unless you have a specific need for remote API access, bind the Docker daemon to the Unix socket only (<code>unix:///var/run/docker.sock</code>). Remove any <code>-H tcp://0.0.0.0:2375</code> flags from your daemon configuration.</li>
<li><strong>Enable TLS mutual authentication.</strong> If remote access is required, configure the Docker daemon to use TLS with client certificate verification (<code>--tlsverify</code>, <code>--tlscacert</code>, <code>--tlscert</code>, <code>--tlskey</code>). Both the server and the client must present valid certificates.</li>
<li><strong>Restrict access with firewall rules.</strong> Use host-based firewalls or cloud security groups to allow inbound connections to port 2375/2376 only from known management IPs.</li>
<li><strong>Audit AWS credential storage.</strong> Avoid storing long-lived AWS credentials in <code>~/.aws/credentials</code> on hosts running Docker. Use IAM roles for EC2 instances or environment-specific credential injection via secrets management tools (AWS Secrets Manager, HashiCorp Vault, etc.).</li>
<li><strong>Scan for exposed Docker APIs.</strong> Use network scanning tools internally, or services such as Shodan alerts (externally), to detect any Docker API endpoints accidentally exposed to the internet.</li>
</ul>



<h2 class="wp-block-heading">Why Container Escape Is a Serious Risk</h2>



<p class="wp-block-paragraph">When an attacker gains access to a Docker daemon over an unauthenticated remote API, they are not confined to a single container — they have access to the Docker control plane itself. This means they can:</p>



<ul class="wp-block-list">
<li>Start new privileged containers that mount the host filesystem.</li>
<li>Inspect environment variables and secrets injected into running containers.</li>
<li>Stop or tamper with legitimate containers.</li>
<li>Use the host network stack for lateral movement within your internal network.</li>
</ul>



<p class="wp-block-paragraph">This makes an exposed Docker API functionally equivalent to unauthenticated SSH access to the underlying host. The cryptomining payloads observed in the TeamTNT campaign represent the least harmful use of such access.</p>



<h2 class="wp-block-heading">The Broader Container Security Challenge</h2>



<p class="wp-block-paragraph">This attack is not an isolated incident — it reflects a structural tension in how container technology has been adopted at scale.</p>



<p class="wp-block-paragraph"><strong>Containers are not inherently more secure than monolithic applications.</strong> They offer benefits such as isolation, reproducibility, and the ability to quickly redeploy patched images. However, in practice the complexity of container orchestration introduces new attack surfaces: misconfigurations, overly permissive network policies, insecure image registries, excessive container privileges, and — as demonstrated here — unprotected management APIs.</p>



<p class="wp-block-paragraph">As Docker and Kubernetes adoption has grown, so has attacker interest. Threat actors are actively scanning for misconfigured container infrastructure because the population of targets is large enough to make the effort worthwhile. Security research teams are also publishing new container-specific CVEs at an increasing rate, meaning the threat landscape continues to evolve.</p>



<p class="wp-block-paragraph">The key principle Shevchenko highlights is that container security requires dedicated tooling and processes — not just a translation of existing practices from the VM or bare-metal era. Authentication, least-privilege networking, image scanning, runtime anomaly detection, and secrets management must all be addressed as first-class concerns in any container-based deployment.</p>



<h2 class="wp-block-heading">Recommendations for DevSecOps Teams</h2>



<ul class="wp-block-list">
<li><strong>Integrate container-specific security scanning</strong> into CI/CD pipelines to catch misconfigured Dockerfiles and insecure default settings before deployment.</li>
<li><strong>Adopt a secrets management strategy</strong> that avoids placing cloud credentials on container hosts in plaintext files.</li>
<li><strong>Apply the principle of least privilege</strong> to container networking: containers should only be able to communicate with the services they need, and management APIs should never be exposed to untrusted networks.</li>
<li><strong>Monitor container runtime behaviour</strong> with tools capable of detecting anomalous process execution, unexpected network connections, or cryptocurrency mining activity.</li>
<li><strong>Establish a container security baseline</strong> using hardening guides such as the CIS Docker Benchmark as a starting reference point.</li>
<li><strong>Train developers on container-specific security risks</strong>, including the implications of enabling TCP-based Docker API access without TLS.</li>
</ul>



<h2 class="wp-block-heading">Key Takeaway</h2>



<p class="wp-block-paragraph">The TeamTNT campaign is a textbook illustration of how operational convenience — leaving a management API open for ease of use — can create critical security exposure. For DevSecOps teams, the lesson is unambiguous: <strong>container security is a discipline of its own</strong>. Legacy assumptions about network perimeters and application security do not translate directly to containerized environments. Proactive configuration hardening, continuous scanning, and developer security education are not optional extras — they are the baseline required to run containers safely in any internet-connected environment.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio">
<div class="wp-block-embed__wrapper">
<iframe  id="_ytid_43125"  width="675" height="379"  data-origwidth="675" data-origheight="379" src="https://www.youtube.com/embed/?enablejsapi=1&#038;list=PLTCuRW0ikUdMFARYSiWm733n1DcCem6bN&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;" class="__youtube_prefs__  epyt-is-override  no-lazyload" title="YouTube player"  allow="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-no-lazy="1" data-skipgform_ajax_framebjll=""></iframe>
</div>
</figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/latest-docker-container-attack-highlights-remote-networking-flaws/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Voices in DevOps – Episode 13: A Conversation with Gareth Rushgrove of Snyk</title>
		<link>https://www.bestdevops.com/voices-in-devops-episode-13-a-conversation-with-gareth-rushgrove-of-snyk/</link>
					<comments>https://www.bestdevops.com/voices-in-devops-episode-13-a-conversation-with-gareth-rushgrove-of-snyk/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 24 Sep 2019 05:49:57 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[CI server]]></category>
		<category><![CDATA[digital services]]></category>
		<category><![CDATA[Docker containers]]></category>
		<category><![CDATA[IT development]]></category>
		<category><![CDATA[Voice]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=8015</guid>

					<description><![CDATA[Source:-gigaom.com Guest Gareth Rushgrove is a Director of Product at Snyk, working remotely from Cambridge, UK, helping to build interesting [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Source:-gigaom.com<br></p>



<h2 class="wp-block-heading">Guest</h2>



<p class="wp-block-paragraph">Gareth Rushgrove is a Director of Product at Snyk, working remotely from Cambridge, UK, helping to build interesting tools for people to better secure infrastructure and applications. He has previously worked for the UK Government Digital Service focused on infrastructure, operations and information security, as well as at Puppet and Docker. When not working he can be found curating the Devops Weekly newsletter, hiking or reading a good book.</p>



<h2 class="wp-block-heading">Transcript</h2>



<p class="wp-block-paragraph"><strong>Jon Collins: Hello and welcome to this episode of&nbsp;<em>Voices in DevOps</em>, where I’m here to speak to Gareth Rushgrove who’s got a diverse set of experiences in the bag. I’ll leave you to talk about all of that, Gareth. Essentially, as you know, this series is about how we’re looking to help enterprise organizations scale up their DevOps efforts. Why don’t we just start? Just tell us about yourself, Gareth and what you’ve seen in your career to date. How did you end up being on a Voices in DevOps podcast with me? I guess that’s the question of the moment.</strong></p>



<p class="wp-block-paragraph">Gareth Rushgrove: Yeah. First off, thanks for having us, Jon. Looking forward to chatting. Yeah, I’m Gareth Rushgrove. I’m currently the Director of Product Management at Snyk. That’s a small security software vendor. Prior to that, I was basically working in Product Management at Docker. Before then, mainly on the engineering side in other places. I was also a Technical Architect at the UK Government for a number of years. It was something like on the other side of the fence, if you like.</p>



<p class="wp-block-paragraph"><strong>Can you say which bit?</strong></p>



<p class="wp-block-paragraph">Yeah. I worked for the Government Digital Service as part of the Cabinet Office for a number of years. I was involved quite heavily early on with gov.uk. That’s the single domain in project in the UK. I then ended up moving into doing more working with other government departments on infrastructure automation and information security, really being part of that&nbsp;<em>help</em>&nbsp;with digital transformation, adopting DevOps practices. Before then, [I had] various software engineering roles. I’ve always been a programmer of some sort, but I generally like the things around the edges. I’ve done a bunch of automations of CI systems.</p>



<p class="wp-block-paragraph">I did quite a bit of work going back probably ten years ago now with—I was the developer to a couple of other people. They were on the operations side. I didn’t really know much about that. I was a developer looking to get my software deployed. I just built up a really good working relationship with them. Learned a load. That ended up—no telling with when ‘DevOps’ the word was coined in the first DevOps days. I wasn’t at the first one, but one of my colleagues I was working with was. He said, “Oh, you would have loved that.” I was along at the second one in Hamburg, and really just part of that very early conversation that got brought together by the word DevOps.</p>



<p class="wp-block-paragraph"><strong>So you could comfortably say “I was that soldier who sat in that room. I had those conversations, and I watched as they went, ‘ah, we can get them with this guy.’”</strong></p>



<p class="wp-block-paragraph">To a certain extent I’ve made a lot—at least some of the mistakes as well. The disadvantage I guess of being both a developer at certain times and an operator at certain times is I’ve made a lot of mistakes on both sides as I’ve learned the practices around them. Which I think is then useful when you’re talking to people who were knee-deep in thorny problems that you have some empathy for, like the challenge they’re trying to address.</p>



<p class="wp-block-paragraph"><strong>There are several directions we could take this conversation. You’ve got the background in security which is still in a lot of places the missing trough, if you like. I’d love to call it a link, but putting security into the DevOps process is still something that’s got to be force fitted sometimes. You’ve also got that big organization and big governmental public organization experience. Then you were breaking down little walls of confusion of your own in the very early days.</strong></p>



<p class="wp-block-paragraph"><strong>You’ve seen DevOps go from a thing that people were talking about because it was a good idea to a thing that everyone’s talking about because everyone else is talking about it, and trying to do it. How would you like to—what do you see—out of all of that when you’re working with other organizations today—where things are at, in DevOps terms?</strong></p>



<p class="wp-block-paragraph">Yeah, good question. Similar to the software evolution of DevOps itself. It wasn’t that there was this word ‘DevOps’ and suddenly people started talking about infrastructure automation or developers and operators working together. Those things were starting to happen anyway. They were starting to happen in individual organizations. They were starting to happen with passionate open source developers. They were starting to happen in large organizations, but it was mainly separate. You’ve got those conversations happening in lots and lots of places, but there’s not one place for it to come together. That’s what the DevOps word and DevOps banner and the DevOps community developed into.</p>



<p class="wp-block-paragraph">Honestly, I still see that happening today. Terms always cross through that somewhere in the hallways, and successful terms cross over that barrier of, now everyone’s talking about it because everyone needs to be talking about DevOps apparently. Some people get quite cynical about that because they’re like, ‘what does DevOps mean?’ The reality is that, compared to five years ago, six years ago, seven years ago, more people today are talking about the need for development operations to work together fundamentally. The need to automate the patterns that we see that allow us to go faster without sacrificing security, without sacrificing safety. I just think it’s grown—we’re having the same conversations and that’s a good thing because they’re reaching more people.</p>



<p class="wp-block-paragraph"><strong>That’s an interesting philosophical difference compared to some of the people I’ve discussed DevOps with. I’m just going to play this through in my head and make sure I remember it all. You’re saying that this need for—I like what you said: “There are patterns to move faster without sacrificing certain elements to get the two sides to work together.” That’s a very ‘both sides of the divide’ kind of way of presenting it, whereas some of the people I’ve spoken to have come much more from the developer side, and said, “If we’re going to work faster, we need to bring the ops people on board.” I think when we think about what we’re trying to do with enterprises, it is about aligning with the conversations maturing within those enterprises rather than bringing it in as a big new thing.</strong></p>



<p class="wp-block-paragraph">I’ve seen and talked to people who have said, “oh, DevOps is driven—it’s a plot by developers to get rid of the operations people.” I’ve also seen operations people saying the opposite—where it’s a plot by the ops people to control developers. I’ve seen DevOps events where it’s been mainly about developer conversations. I’ve seen DevOps events where it’s mainly been about operations conversations. Some of this is just about—it’s very local and that might be a local event. It might be local companies. Who is driving this in your organization turns out to be really interesting. Who’s driving the change? In large organizations, sometimes that’s: who’s got the budget? Who’s got the political capital to make this change?</p>



<p class="wp-block-paragraph">I think where DevOps works it’s fundamentally about acknowledging it a bit more of ‘yes there are specialists and yes, they’re skilled. Yes, there are separate budgets or separate organizations, but we’re better off individually and collectively if we work together.’ Some of it is giving up some of that ‘I’m an operator,’ ‘I’m a developer’ tribalism in pursuit of ‘What does our company do? What does our organization do?’ That’s the primary driver.</p>



<p class="wp-block-paragraph"><strong>It’s funny. It’s a bit like when you say, “Oh, I work with computers,” and they say, “What printer should I buy?” I was speaking to someone who worked for utility at running club last night, and he said, “We’re looking to expand our use of DevOps across the organization.” (I thought, I’m trying to have a run here.) He was asking me things and then there was one moment he said, “Because they&#8230;” I said, “There’s your problem. How can you get above that ‘because they?’” Who’s above it that can see it as a ‘we’ thing rather than a ‘they’ thing. It wasn’t just a waffley thing that someone says. He absolutely engaged with that and said, “You know what, that’s absolutely it.”</strong></p>



<p class="wp-block-paragraph">Often organizations have quite reasonable reasons at the time, structured themselves in such a way that you build those barriers. You build those incentives that literally pit people further down the organizational tree against each other. I think appreciating those incentives are often like, why is someone working like that? Oh, it’s because literally that’s how they grow as a person. They’ve been told that’s how they reach the next level in their career, and not because it affects&nbsp;<em>you</em>, but because that’s the thing you’re optimizing for.</p>



<p class="wp-block-paragraph">I think if you can go visit people in your organization on ‘the other side’ who you perceive [as ‘other’] organizationally, structurally, socially, and asking them “What are your incentives? What are the main things you’re trying to optimize?” It’s the classic developer thing of&#8230; the operations people want to maximize stability and the developers want to maximize velocity.</p>



<p class="wp-block-paragraph">If you don’t acknowledge that those two things are in opposition, you have incentivized your two bits of your own organization to ultimately never get on. I think incentives are high under the management thing or a big part of embracing DevOps especially in large organizations. Smaller organizations, it’s true, but those people probably sit next to each other. In larger organizations, there’s probably several layers of hierarchy between you and the people setting those incentives.</p>



<p class="wp-block-paragraph"><strong>Yeah, different building, different sites, whatever. I was thinking the security people are there to enforce policy as well which is another dimension to it.</strong></p>



<p class="wp-block-paragraph">The DevOps banner I think has been just something where people can come and talk about their different incentives and try and build some things together including the security community. The very early DevOps events definitely had no security. They weren’t in the room. Similarly they weren’t in the room as those people went back to their organizations. It was maybe three years in or so, like seven, eight years ago when early inquisitive security people started showing up at some of the DevOps events. That was the topic that was suddenly really interesting in those events. Maybe like chaos engineering today or observability is today. We’ve seen I guess over the last ten years of having that banner, having that lens, security with definitely—it’s still critically important, but it wasn’t until maybe five, six years ago, when people really started showing up to have those joint conversations.</p>



<p class="wp-block-paragraph"><strong>It was almost given where it’s coming from. I was doing this stuff in the ‘90s when dev and ops were certainly not talking to each other. If they were, it was all a bit fraught, and just getting them to talk to each other was—you’re not done, but boy you just need to fall back and regroup and get your breath back before then moving on to other stakeholder groups. We used to, in ISDN days, we use to talk about multifunctional teams, but I’m pretty confident that we didn’t have a security person in that team.</strong></p>



<p class="wp-block-paragraph">Yeah, and it’s still true in lots of organizations. Again, people need to feel bad about that. I think their acknowledging that ‘wouldn’t it be great if they were there?’ I think that’s the mental model change. Where I’ve seen that work, suddenly the security people are in demand. They’re having things brought to them, and their problems change from playing whack-a-mole after the fact, to going ‘there are too many people asking for my time here,’ and I can really see a sea change there.</p>



<p class="wp-block-paragraph"><strong>Given how you said that different organizations will see it more as a developer thing or an operations thing or a top-down thing, where is the budget, etc, etc. Should all organizations be trying to do DevOps, or should all organizations be just trying to evolve in the right direction?</strong></p>



<p class="wp-block-paragraph"><strong>You could put a digital transformation hat on some of this, but just get to a state where they’re working together better and more agile so on and so forth, and DevOps just naturally falls out of that? Their own blend of DevOps. How does it work?</strong></p>



<p class="wp-block-paragraph">Yeah. I would say all organizations would surely benefit to a certain extent of having empathy across roles and working together more closely. I think it’s easy to say that; it’s also what was actually needed on the ground. I think it’s easy to be cynical there. To me, to a certain degree, doing that really is DevOps. It’s like that cultural aspect of it because that’s probably the bit that is often more ignored in the pursuit of the other properties.</p>



<p class="wp-block-paragraph">I quite like the ‘CAMS’ description of DevOps if you like: the ‘culture, automation, measurement, and sharing.’ Ultimately metrics and automation can be tricky, but most organizations will have some pursuit of those. Most people are not today saying “We shouldn’t automate these things.” They might say “It’s expensive to automate these things; we’re automating these things first,” but most of them are not in my experience completely anti-automation.</p>



<p class="wp-block-paragraph">In a similar way, most are not anti-collection of metrics and actually measuring things. Again, the DevOps community has a lot of material and so do others about improving those things. If you combine them with a culture that really emphasizes sharing, to me that is just DevOps. Whether you’re doing the long list of different practices, the different people like the cloud.</p>



<p class="wp-block-paragraph">I think DevOps avoids the peril here by being undetailed and unspecified in comparison to something like an Agile process or an SRE more opinionated take on this. I think when it comes to the opinions there is no universal ‘everyone should be doing X.’ I’m a fan of Agile for all sorts of different development activities, but it’s not the panacea. It’s not the&nbsp;<em>only</em>&nbsp;thing you should ever do to your problem. If agile is the solution, it’s great. SRE similarly is a much more opinionated take on the higher-level DevOps practices. Again, that’s very suitable in some organizations. Maybe it’s too much in others.</p>



<p class="wp-block-paragraph">DevOps I think is such a broad banner. To me, it’s just a word under which we have all these conversations about this space. That has downsides, but I do think it makes it universally that you&nbsp;<em>should</em>&nbsp;be adopting some of those things.</p>



<p class="wp-block-paragraph"><strong>Is it a journey or a state of mind?</strong></p>



<p class="wp-block-paragraph">To me, it’s a banner. It’s the sign under which we have these conversations at the moment in time. At some point, that will, the banner will move to something else. It’s just a pointer. I wouldn’t say it’s a destination certainly, and I guess ‘state of mind’ isn’t a bad description. I generally just describe it as the banner under which we have the conversation happening at the moment.</p>



<p class="wp-block-paragraph"><strong>Yeah, so it’s more setting the direction than getting to the place.</strong></p>



<p class="wp-block-paragraph">Yeah, absolutely.</p>



<p class="wp-block-paragraph"><strong>With that in mind, that all just got very, very philosophical. (Laughter) In your experience, is it just the case of literally printing something out in a big piece of cloth and sticking it at the front of the building or given your background, with the Docker side of things, with the automation and CI/CD side of things, etc. What are the things that catalyze the ability to move within that banner? Below that banner that you just do.</strong></p>



<p class="wp-block-paragraph">I think some of it comes down to you need concrete things at the end of the day, and that’s where the tools come in. Ultimately, finding tools that cross boundaries. I guess the pathological case is when your security team buy separate tools and they’ll do it under a banner of a CIO, and your operations team buys monitoring tools. Again, separate budget, separate organization. The overlap in the tool is actually quite large, but the presentation of the information might be different for a different audience. Your developers now have application level monitoring. Suddenly you’re all using separate tools that overlap quite a bit. The fact you’re using separate tools means you don’t have to collaborate. You don’t have<em>&nbsp;a way</em>&nbsp;of collaborating across data, even though that’s security data about the applications you’re running on your infrastructure.</p>



<p class="wp-block-paragraph">I think sharing tools brings people together in the same way as sharing physical space brings people together. You suddenly see things that you wouldn’t have seen otherwise. ‘Oh, look. My application—it’s not just that the frontend has been responsive, but actually, look, the backend process is taking up too much disk space’ or ‘oh, look. The cluster it’s running on, why do we need this much capacity versus this other application that another team is running?’ I think shared tooling helps. Continuous integration I think is often at the heart of that because it’s one place where the pipeline metaphor can really be useful for a shared set of tooling and different teams, different types of teams injecting things into a shared pipeline over which we’re deploying software.</p>



<p class="wp-block-paragraph">The security team introducing security checks is just a step in a pipeline. They’re not trying to take over your application. They’re injecting something that’s useful to everyone, and it’s visible to everyone, but it’s about addressing the security team needs or providing information to the developers.</p>



<p class="wp-block-paragraph">I think shared tooling is super important. Monitoring, visibility, tooling, logging, tooling similarly. I think a lot of that, when it comes to the software delivery side, continuous integration is key. If you have that and you have that shared across the different disciplines in your organization, and that might be service management people, that might be asset inventory, that might be the security teams, the operations teams, the developers. You can have these conversations often in code in a shared setting versus ‘oh no that’s, only the development team have access to this tool. Only the operations team have access to this tool.’</p>



<p class="wp-block-paragraph"><strong>That’s making it very delivery-centric and as you say, operations is fantastically important, and all that monitoring and so on. First thing you need to do is streamline how you deliver with everyone as part of that streamlined delivery.</strong></p>



<p class="wp-block-paragraph">I think it depends where—what the pain point is in your organization. There are organizations [where] the priority is delivering new functionality and features or whole new services; where all of those services actually have an active development team and that development team is in-house. There’s also organizations where actually, the majority of the work they’re doing is running software. Actually, the majority of that software isn’t even first party, it’s third party. I think all of these shared tools that benefit which ever end of that spectrum you’re on.</p>



<p class="wp-block-paragraph">Where you start, I think depends on your starting point. If you are actually starting your applications and you’re undergoing that digital transformation then maybe your insourcing, you’re seeing a lot of that at the moment back in-house.Then step one, you have to get a continuous integration set up in place, share that across your different disciplines and have the conversation in code and configuration about what’s in the pipeline with everyone because then you can then have a really reasoned debate about what’s going on there.</p>



<p class="wp-block-paragraph">If you’re mainly running things, I would say start with monitoring, start with logging and again, having the visibility into what’s happening, but can be used for debugging applications and capacity planning. It can be used for security analysis. Have one thing like one source code to them. That might be the best place to start. Obviously, there are others. I think it’s contextual.</p>



<p class="wp-block-paragraph"><strong>Excellent. This is not a completely glib question, but it’s going to come across like one. Surely the answer is ‘microservices for everything’ and then the tooling fits with the architecture and the targets and people just need to align around that?</strong></p>



<p class="wp-block-paragraph">Again, I don’t think there’s generally speaking one size fits all, especially in that case of: ‘Look, we’re not actually building loads of software, we’re just running third party software.’ I guess this is one of those things where surely as a developer earlier in my career, I just knew the software I was building and I thought about the software I was building. I knew other teams adjacent to me were building software. Actually, then you would talk to the operations people and they would be like “We’re running 100 different applications. We have to care about many different things.” I think the trade-offs there were different. If you think about microservices and individual teams going, ‘oh, I’ve gone from managing and writing one application to splitting that into five or six services.’ That is amplified on the operation side.</p>



<p class="wp-block-paragraph">I think there are operational advantages to that, but there are disadvantages as well. I think in organizations which were embracing a ‘you build it, you run it’ type of approach where you’re pushing the operational responsibilities down to the development teams themselves with often assistance from operators and security teams. In that world, ultimately the trade-offs you’re making from an architecture and development point of view, you’re bearing the cost of them as well. That can work really well because you create the services that work for the domain that make it easy to develop and deploy them independently, but you’re bearing the operational cost, so you understand that it’s not free.</p>



<p class="wp-block-paragraph">I think if you have a disconnected organization that doesn’t get on, that hasn’t really built up that relationship yet, microservices can just make that worse. Suddenly instead of throwing over the wall one thing every six months, I’m now throwing 100 things every day from the operations side.</p>



<p class="wp-block-paragraph"><strong>It’s gone from granite blocks to tennis balls, isn’t it?</strong></p>



<p class="wp-block-paragraph">Tennis balls fired via cannon from multiple different angles at a rate that’s going on 24/7. I think…</p>



<p class="wp-block-paragraph"><strong>I just like to say for the record I apologize for putting that in and I in no way think that the whole lot of microservices&#8230; but it was a good way to ask the question.</strong></p>



<p class="wp-block-paragraph">Yeah, I think that’s the thing with all of the, there are patterns and practices around the DevOps community that actually are absolutely the right thing to be knowledgeable about and interested in and consider in your organization. I think asking and answering questions like that is an important way of people realizing: put it in your context. Understand the problems that it’s solving and then say, “Do you have those problems?” or “Is that the most important problem we should solve first?”</p>



<p class="wp-block-paragraph"><strong>Awesome. I think that’s possibly a good point to leave it on, which was absolutely excellent. What have we learned? It’s about understanding the needs of your own organization. It’s about not trying to apply DevOps as a conceptual thing but working with it as a banner below which you should be migrating things that you actually understand and know about. (I hate the word ‘’ by the way.) I mean should in the context of don’t try and do it the wrong way. Do it the easy way. We’ve learned that it’s about getting that continuous integration in place and sharing that across different parts of the organization and building up from there. Have I missed anything?</strong></p>



<p class="wp-block-paragraph">No. Especially you should start with a focus on individual practices, whether that is getting really good at continuous integration, becoming really good at deployment, and becoming really good at monitoring, becoming really good at securing your applications, becoming really good at asset management. Pick practices that represent problems and focus on those. Be knowledgeable about what’s going on in the DevOps community and the conversation around those things that’s happening. Don’t just do it how you’ve always done it. Actually, yeah, it’s the practices that will move you forward,&nbsp;<em>not</em>&nbsp;‘doing DevOps.’</p>



<p class="wp-block-paragraph"><strong>Awesome. Gareth, thank you so much for your time. Everyone listening out there, if you’ve got any questions at all for us, do send them over. You know where to find us on Twitter, etc. I really appreciate it. Any last glib single sentence from yourself?</strong></p>



<p class="wp-block-paragraph">Don’t be too cynical about the benefits of people talking about empathy and talking to each other. There’s just a load of things to learn and generally speaking [it’s] quite interesting at the same time.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/voices-in-devops-episode-13-a-conversation-with-gareth-rushgrove-of-snyk/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DevOps Market Growth: Key Players, Segments, and Trends to Watch</title>
		<link>https://www.bestdevops.com/development-to-operations-devops-market-to-witness-huge-growth-by-2025-ibmemc-cisco-systems/</link>
					<comments>https://www.bestdevops.com/development-to-operations-devops-market-to-witness-huge-growth-by-2025-ibmemc-cisco-systems/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 21 Sep 2019 05:35:34 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Docker containers]]></category>
		<category><![CDATA[Global Development]]></category>
		<category><![CDATA[IT Management]]></category>
		<category><![CDATA[Operations-teams]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=7939</guid>

					<description><![CDATA[An overview of the global DevOps market landscape, covering major vendors, industry segments, regional breakdown, and the forces driving adoption of DevOps practices across enterprises.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The global DevOps market has been on a sustained growth trajectory, driven by enterprise demand for faster software delivery, greater operational reliability, and tighter collaboration between development and IT operations teams. Market intelligence reports from the 2018–2019 period pointed to accelerating adoption across verticals, with a forecast window extending to 2026. This article summarises the key dimensions of that market landscape: major vendors, industry segments, regional distribution, and the structural forces shaping competition.</p>



<h2 class="wp-block-heading">What Is the DevOps Market?</h2>



<p class="wp-block-paragraph">DevOps — short for Development to Operations — refers to the set of cultural practices, toolchains, and organisational patterns that unify software development (Dev) and IT operations (Ops). The commercial market around DevOps encompasses platforms, tooling, professional services, and training that help organisations implement continuous integration, continuous delivery (CI/CD), infrastructure automation, monitoring, and security integration (DevSecOps).</p>



<p class="wp-block-paragraph">The market is not a single product category. It spans source control and collaboration tools, container and orchestration platforms, configuration management systems, observability stacks, and cloud-native deployment services — making it one of the more fragmented and fast-moving segments in enterprise software.</p>



<h2 class="wp-block-heading">Key Vendors Shaping the Market</h2>



<p class="wp-block-paragraph">Several large enterprise technology vendors and specialist platforms have been consistently cited as significant players in the DevOps space:</p>



<ul class="wp-block-list">
<li><strong>IBM Corporation</strong> — offers DevOps capabilities through its Cloud and Watson AIOps portfolios, as well as integration with Red Hat OpenShift and Ansible following its 2019 Red Hat acquisition.</li>
<li><strong>CA Technologies (now Broadcom)</strong> — historically provided application lifecycle management and release automation tools targeting large enterprises.</li>
<li><strong>EMC Corporation (now part of Dell Technologies)</strong> — contributes storage, infrastructure automation, and hybrid cloud capabilities relevant to the operations side of DevOps pipelines.</li>
<li><strong>Cisco Systems, Inc.</strong> — addresses network automation, security integration, and cloud-native application networking, increasingly relevant as DevOps pipelines extend to infrastructure provisioning.</li>
<li><strong>Docker, Inc.</strong> — the company behind the Docker container runtime and image format, which became foundational tooling for packaging and distributing application workloads in DevOps workflows.</li>
</ul>



<p class="wp-block-paragraph">Beyond these names, the competitive landscape also includes Microsoft (Azure DevOps, GitHub), GitLab, HashiCorp, Atlassian, JFrog, and a large ecosystem of open-source projects and cloud-native foundations.</p>



<h2 class="wp-block-heading">Industry Segments and Use Cases</h2>



<p class="wp-block-paragraph">DevOps tooling and practices are adopted across a broad range of verticals. The segments most commonly highlighted in market analyses include:</p>



<ul class="wp-block-list">
<li><strong>Information Technology (IT) Services</strong> — the largest adopter segment, where DevOps underpins managed services, SaaS delivery, and internal platform engineering.</li>
<li><strong>Banking, Financial Services, and Insurance (BFSI)</strong> — strong demand driven by regulatory pressure for auditability, rapid product iteration, and modernisation of legacy core banking systems.</li>
<li><strong>Retail and eCommerce</strong> — continuous deployment of customer-facing features, seasonal scaling, and tight integration with supply chain systems.</li>
<li><strong>Telecommunications</strong> — network function virtualisation (NFV) and software-defined networking (SDN) are closely aligned with DevOps and DevNetOps practices.</li>
<li><strong>Healthcare, Manufacturing, and Government</strong> — emerging adopters with compliance and security requirements that shape how DevOps practices are implemented.</li>
</ul>



<h2 class="wp-block-heading">Delivery and Channel Models</h2>



<p class="wp-block-paragraph">DevOps products and services reach buyers through two primary channels:</p>



<ul class="wp-block-list">
<li><strong>Direct Sales</strong> — enterprise agreements negotiated directly between vendors and large organisations, typically including professional services, training, and support.</li>
<li><strong>Distributor and Partner Channels</strong> — system integrators, managed service providers (MSPs), and cloud marketplace listings that bundle DevOps tooling with broader transformation engagements.</li>
</ul>



<p class="wp-block-paragraph">The rise of self-serve SaaS models (GitHub, GitLab.com, CircleCI, Datadog) has added a third, product-led growth channel that largely bypasses traditional enterprise procurement — a structural shift that continues to compress margins for legacy vendors.</p>



<h2 class="wp-block-heading">Regional Distribution</h2>



<p class="wp-block-paragraph">DevOps adoption and market revenue are distributed unevenly across geographies:</p>



<ul class="wp-block-list">
<li><strong>North America</strong> — historically the largest market by revenue, with a high concentration of early-adopter technology companies and mature DevOps practices.</li>
<li><strong>Europe</strong> — strong growth, particularly in the UK, Germany, and the Nordics, shaped in part by GDPR compliance requirements that intersect with DevSecOps tooling.</li>
<li><strong>Asia-Pacific</strong> — the fastest-growing region through the forecast period, driven by digital transformation initiatives in India, China, Australia, and Southeast Asia.</li>
<li><strong>Rest of World</strong> — Latin America, the Middle East, and Africa represent smaller but expanding markets as cloud infrastructure availability increases.</li>
</ul>



<h2 class="wp-block-heading">Drivers of Market Growth</h2>



<p class="wp-block-paragraph">Several structural forces continue to drive investment in DevOps tooling and practices:</p>



<ul class="wp-block-list">
<li><strong>Cloud-native architectures</strong> — the shift to microservices, containers, and Kubernetes increases the operational surface area and makes automated CI/CD pipelines a practical necessity rather than a nice-to-have.</li>
<li><strong>Competitive pressure on release velocity</strong> — organisations that can ship reliable features faster than competitors gain measurable business advantage, making DevOps adoption a strategic imperative.</li>
<li><strong>Talent economics</strong> — automating repetitive operational tasks reduces the per-unit cost of software delivery and allows engineering teams to focus on higher-value work.</li>
<li><strong>Security and compliance requirements</strong> — shifting security left into the development pipeline (DevSecOps) is increasingly mandated by regulators, insurers, and enterprise procurement teams.</li>
<li><strong>Hybrid and multi-cloud complexity</strong> — managing workloads across on-premises infrastructure and multiple cloud providers creates demand for unified tooling, observability, and policy enforcement.</li>
</ul>



<h2 class="wp-block-heading">Competitive Dynamics</h2>



<p class="wp-block-paragraph">The DevOps market exhibits several competitive characteristics worth understanding:</p>



<ul class="wp-block-list">
<li><strong>Platform consolidation pressure</strong> — buyers increasingly prefer integrated platforms (end-to-end CI/CD, security scanning, observability) over best-of-breed point tools, favouring larger vendors and well-funded scale-ups.</li>
<li><strong>Open-source commoditisation</strong> — core tooling such as Git, Jenkins, Kubernetes, Terraform, and Prometheus is open source, compressing the addressable market for proprietary equivalents and shifting vendor revenue toward services, support, and adjacent features.</li>
<li><strong>Hyperscaler competition</strong> — AWS, Microsoft Azure, and Google Cloud each offer native DevOps services (CodePipeline, Azure DevOps, Cloud Build) that compete directly with independent vendors for workloads already running on their platforms.</li>
<li><strong>Acquisition activity</strong> — the market has seen significant M&#038;A, including IBM&#8217;s acquisition of Red Hat, Broadcom&#8217;s acquisition of CA Technologies, and Atlassian&#8217;s acquisitions of Bitbucket and Opsgenie, reshaping the vendor landscape considerably since 2019.</li>
</ul>



<h2 class="wp-block-heading">What Practitioners Should Watch</h2>



<p class="wp-block-paragraph">For DevOps engineers and platform teams evaluating the market, a few practical considerations stand out:</p>



<ul class="wp-block-list">
<li>Assess total cost of ownership across the full toolchain, not just licensing or subscription costs. Integration complexity and operational overhead often exceed licensing spend.</li>
<li>Evaluate vendor roadmaps against your own cloud and container strategy. Tooling that does not support your target platform natively will accumulate technical debt.</li>
<li>Consider ecosystem health — active open-source communities, plugin ecosystems, and third-party integrations reduce lock-in risk and extend platform capability.</li>
<li>Security posture is now a first-class evaluation criterion. Vendors without mature supply chain security, secrets management, and SBOM support are increasingly disqualified in regulated industries.</li>
</ul>



<p class="wp-block-paragraph">The DevOps market continues to evolve rapidly. Staying current with vendor positioning, open-source project maturity, and emerging practices such as platform engineering and internal developer portals is essential for teams making long-term toolchain investments.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/development-to-operations-devops-market-to-witness-huge-growth-by-2025-ibmemc-cisco-systems/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Red Hat Wraps OpenStack Services in Containers with OpenStack Platform 12</title>
		<link>https://www.bestdevops.com/red-hat-wraps-openstack-in-containers/</link>
					<comments>https://www.bestdevops.com/red-hat-wraps-openstack-in-containers/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 07 Nov 2017 05:40:09 +0000</pubDate>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Docker containers]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[Red Hat]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=2933</guid>

					<description><![CDATA[Red Hat announced OpenStack Platform 12 at the OpenStack Summit in Sydney, introducing containerized OpenStack services powered by Kubernetes, composable networks, improved security, and deeper OpenDaylight integration.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Originally reported by <strong>The Next Platform</strong> (nextplatform.com). This article summarizes and expands on that reporting for a DevOps engineering audience.</em></p>



<h2 class="wp-block-heading">Red Hat Brings Containers and Kubernetes to Its OpenStack Distribution</h2>



<p class="wp-block-paragraph">At the OpenStack Summit in Sydney, Australia in November 2017, Red Hat announced <strong>Red Hat OpenStack Platform 12</strong>, a significant release that containerizes the majority of OpenStack services using Kubernetes. The move reflects a broader industry trend toward treating infrastructure components as containerized workloads rather than monolithic, bare-metal or VM-hosted processes.</p>



<p class="wp-block-paragraph">Red Hat is well-positioned to make this shift. Its engineers have been central contributors to container ecosystem tooling, and the company&#8217;s <strong>OpenShift Container Platform</strong> — built on Kubernetes and Docker — has been one of the most widely deployed enterprise Kubernetes distributions. OpenShift 3.0 formalized that Kubernetes-native approach, and subsequent releases, including OpenShift Container Platform 3.6 (launched in September 2017), added enhanced security features and improved consistency across hybrid and multi-cloud environments.</p>



<h2 class="wp-block-heading">Why Containerize OpenStack Services?</h2>



<p class="wp-block-paragraph">Containerizing OpenStack services is not a new idea. As far back as 2015, eBay was running Kubernetes and containers within its OpenStack infrastructure to manage large-scale cloud operations. The upstream OpenStack community has also pursued this direction through projects like:</p>



<ul class="wp-block-list">
<li><strong>Kolla</strong> – provides production-ready containers and deployment tools for operating OpenStack clouds.</li>
<li><strong>Magnum</strong> – an OpenStack API service that makes container orchestration engines (like Kubernetes and Docker Swarm) first-class resources in OpenStack.</li>
</ul>



<p class="wp-block-paragraph">Red Hat OpenStack Platform 12 takes this upstream work and integrates it into a supported enterprise distribution. The practical benefits cited by Red Hat include:</p>



<ul class="wp-block-list">
<li><strong>Easier scaling</strong> of individual OpenStack services without redeploying the full stack.</li>
<li><strong>Reduced operational complexity</strong> through standardized container lifecycle management.</li>
<li><strong>Faster upgrades</strong> by updating individual service containers rather than full-host package updates.</li>
<li><strong>Better isolation</strong> between services, improving fault containment.</li>
</ul>



<p class="wp-block-paragraph">Radhesh Balakrishnan, General Manager of OpenStack at Red Hat, framed the release as part of a larger enterprise modernization effort to &#8220;better support the next generation of applications that take advantage of multiple hardware architectures, Linux container technologies and cloud computing.&#8221;</p>



<h2 class="wp-block-heading">Key Features of Red Hat OpenStack Platform 12</h2>



<p class="wp-block-paragraph">Based on the upstream <strong>OpenStack &#8220;Pike&#8221; release</strong>, Platform 12 delivers improvements across containerization, security, networking, and composable infrastructure.</p>



<h3 class="wp-block-heading">1. Containerized OpenStack Services</h3>



<p class="wp-block-paragraph">Most core OpenStack services are containerized in this release. Networking and storage services are offered as a containerized <strong>Technology Preview</strong>, meaning they are available for evaluation but not yet fully supported for production workloads.</p>



<h3 class="wp-block-heading">2. Composable Networks</h3>



<p class="wp-block-paragraph">Red Hat has progressively expanded composable infrastructure support across recent OpenStack Platform releases:</p>



<ul class="wp-block-list">
<li><strong>Platform 10</strong> introduced customizable service profiles, allowing operators to tailor individual service deployments.</li>
<li><strong>Platform 11</strong> made deployment and upgrade workflows more adaptable.</li>
<li><strong>Platform 12</strong> adds <strong>composable networks</strong>, enabling operators to define their own network topology rather than selecting from predefined configurations.</li>
</ul>



<p class="wp-block-paragraph">This includes support for <strong>L3 spine-and-leaf topologies</strong>, which are common in large data center environments. Users can now create any number of networks suited to their specific physical infrastructure layout.</p>



<p class="wp-block-paragraph">Platform 12 also adds support for the <strong>Redfish API</strong>, defined by the Distributed Management Task Force (DMTF), enabling interoperability with composable infrastructure solutions such as Intel&#8217;s Rack Scale Design.</p>



<h3 class="wp-block-heading">3. Security Enhancements</h3>



<ul class="wp-block-list">
<li><strong>Automated infrastructure enrollment service</strong> for lifecycle management of security certificates.</li>
<li>Updated <strong>volume encryption</strong> support in OpenStack Block Storage.</li>
<li>Improved <strong>disk partitioning</strong> capabilities in bare-metal provisioning.</li>
<li>A new <strong>security guide</strong> available in Red Hat&#8217;s customer portal to assist with understanding and implementing security controls.</li>
</ul>



<h3 class="wp-block-heading">4. OpenDaylight SDN Integration</h3>



<p class="wp-block-paragraph">Red Hat extended its Technology Preview of <strong>OpenDaylight</strong> integration in Platform 12. OpenDaylight is an open-source software-defined networking (SDN) and network functions virtualization (NFV) platform. Deeper integration enables more programmable, automated network management within OpenStack environments.</p>



<h3 class="wp-block-heading">5. Distributed Continuous Integration (DCI) Improvements</h3>



<p class="wp-block-paragraph">Red Hat&#8217;s DCI technology, first introduced in its OpenStack distribution approximately five years prior to this release, automates deployment, testing, and the customer feedback loop. In Platform 12, DCI was updated to deliver <strong>actionable logs automatically to Red Hat&#8217;s quality engineering teams</strong>, shortening the cycle for identifying, patching, and releasing fixes.</p>



<h2 class="wp-block-heading">Target Use Cases and Availability</h2>



<p class="wp-block-paragraph">Red Hat OpenStack Platform 12 targets both <strong>private and public cloud IaaS</strong> deployments. It was made available through:</p>



<ul class="wp-block-list">
<li>Red Hat&#8217;s customer portal.</li>
<li>As a component of Red Hat&#8217;s <strong>Cloud Infrastructure</strong> and <strong>Cloud Suite</strong> subscription offerings.</li>
</ul>



<h2 class="wp-block-heading">Context: Containers in OpenStack vs. OpenStack for Containers</h2>



<p class="wp-block-paragraph">It is worth clarifying a distinction that often causes confusion in this space:</p>



<ul class="wp-block-list">
<li><strong>Containers in OpenStack</strong> (this release) means running OpenStack&#8217;s own control-plane services — Nova, Neutron, Cinder, Keystone, etc. — as containers managed by Kubernetes, rather than as packages installed directly on host operating systems.</li>
<li><strong>OpenStack for Containers</strong> (Magnum, Zun) means using OpenStack as the underlying infrastructure layer to provision and manage container clusters for application workloads.</li>
</ul>



<p class="wp-block-paragraph">Platform 12 focuses primarily on the former: making the OpenStack control plane itself more cloud-native and operationally manageable through containerization.</p>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">Red Hat OpenStack Platform 12 represents a meaningful architectural shift in how enterprise OpenStack deployments can be operated. By containerizing core services with Kubernetes, introducing composable networking, extending SDN integration with OpenDaylight, and hardening security automation, Red Hat aimed to give operators the flexibility and operational tooling needed to run OpenStack at scale while aligning with modern DevOps and cloud-native practices.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/red-hat-wraps-openstack-in-containers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Why Is Docker So Popular? Explaining the Rise of Containers and Docker</title>
		<link>https://www.bestdevops.com/why-is-docker-so-popular-explaining-the-rise-of-containers-and-docker/</link>
					<comments>https://www.bestdevops.com/why-is-docker-so-popular-explaining-the-rise-of-containers-and-docker/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Fri, 14 Jul 2017 05:48:37 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[development strategy]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker containers]]></category>
		<category><![CDATA[Software Delivery]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=2123</guid>

					<description><![CDATA[Docker wasn't the first container platform, yet it became the dominant one. This article explains the technical and contextual factors behind Docker's remarkable rise — and why earlier alternatives like LXC and OpenVZ never achieved the same adoption.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">By now, you&#8217;ve almost certainly heard of Docker containers. You know Docker is massively popular. But do you know <em>why</em>? The answer involves both the inherent appeal of container technology in general and a set of specific circumstances that made Docker the right tool at the right moment.</p>



<h2 class="wp-block-heading">Docker Was Not the First Container Platform</h2>



<p class="wp-block-paragraph">It&#8217;s worth establishing upfront that Docker is neither the first nor the only container platform. Other frameworks — notably OpenVZ and LXC — were available from the mid-2000s. Container-like isolation technologies such as FreeBSD jails go back even further. Docker was released in 2013, making it a relatively young technology compared to most mainstream enterprise infrastructure tools.</p>



<p class="wp-block-paragraph">Yet it was Docker, not those more mature alternatives, that achieved widespread commercial adoption and reshaped the way software is built and shipped. Understanding why requires looking at two distinct questions: why containers in general became appealing, and why Docker specifically won out over earlier implementations.</p>



<h2 class="wp-block-heading">Why Containers Became Appealing</h2>



<p class="wp-block-paragraph">Containers as a technology class offer concrete operational advantages over traditional virtual machines (VMs):</p>



<ul class="wp-block-list">
  <li><strong>Faster startup and shutdown.</strong> Containers share the host OS kernel rather than booting a full guest OS, so they start and stop in seconds rather than minutes.</li>
  <li><strong>Greater portability.</strong> Container host environments are highly consistent regardless of the underlying OS distribution or cloud provider, dramatically reducing environment-specific bugs and the classic &#8220;works on my machine&#8221; problem.</li>
  <li><strong>Easy horizontal scaling.</strong> Because containers are lightweight, they can be spun up or torn down rapidly to meet demand, making scaling applications significantly simpler than provisioning new VMs.</li>
  <li><strong>Natural fit for microservices.</strong> Containers make it practical to decompose large monolithic applications into smaller, independently deployable services, each running in its own isolated environment.</li>
</ul>



<p class="wp-block-paragraph">These characteristics addressed genuine pain points that development and operations teams were experiencing as application complexity grew. The demand was real — containers just needed a form that organizations could readily adopt.</p>



<h2 class="wp-block-heading">Why Docker Specifically Succeeded</h2>



<p class="wp-block-paragraph">The harder question is why Docker, and not LXC or OpenVZ, became the dominant container platform. Several converging factors help explain this:</p>



<h3 class="wp-block-heading">1. Open Source From Day One</h3>



<p class="wp-block-paragraph">Docker was released as an open-source project from the outset. By 2013, open source had become the default expectation for infrastructure tooling in the technology industry. Developer communities, cloud providers, and enterprises were far more willing to invest in and build on open-source foundations than they had been in the mid-2000s. Docker&#8217;s openness lowered the barrier to contribution, experimentation, and ecosystem growth.</p>



<h3 class="wp-block-heading">2. It Arrived at the Right Moment</h3>



<p class="wp-block-paragraph">By 2013, traditional virtual machines — while still useful — were beginning to feel heavy and slow relative to the demands of modern application deployment. Organizations were actively searching for leaner approaches. When OpenVZ and LXC appeared in the mid-2000s, conventional virtualization still felt fresh and adequate. Docker appeared precisely when the industry was ready to move on.</p>



<h3 class="wp-block-heading">3. Alignment With the DevOps Movement</h3>



<p class="wp-block-paragraph">DevOps — the set of practices emphasizing collaboration between development and operations, continuous delivery, and rapid iteration — gained significant momentum in the early 2010s. Docker containers turned out to be an almost ideal building block for DevOps workflows: they made it straightforward to package an application with its dependencies, move that package through a CI/CD pipeline, and deploy it consistently across environments. Docker didn&#8217;t create the DevOps movement, but it accelerated it considerably.</p>



<h3 class="wp-block-heading">4. Developer Experience and Simplicity</h3>



<p class="wp-block-paragraph">Docker introduced a clean, approachable abstraction — the Dockerfile and the image-layer model — that made containerization accessible to developers who were not Linux kernel experts. Earlier tools like LXC required considerably more low-level configuration knowledge. Docker&#8217;s tooling reduced that friction substantially, which drove grassroots adoption within engineering teams before Docker even had strong enterprise backing.</p>



<h2 class="wp-block-heading">The Linux Parallel</h2>



<p class="wp-block-paragraph">Docker&#8217;s rise has notable parallels with the Linux kernel&#8217;s emergence in the 1990s. Linux began as a personal project with no institutional funding, yet it eventually dominated server computing, while better-resourced kernel efforts such as GNU Hurd saw limited real-world adoption. The reasons are complex and debated, but timing, community dynamics, and the practical needs of users all played roles.</p>



<p class="wp-block-paragraph">The gap between Docker and alternatives like LXC was arguably less dramatic than that between Linux and GNU Hurd. Nevertheless, both stories illustrate how a well-timed, developer-friendly, open-source project can leapfrog technically older alternatives to become an industry standard.</p>



<h2 class="wp-block-heading">Conclusion: Timing, Tooling, and Context</h2>



<p class="wp-block-paragraph">Docker&#8217;s dominance is not accidental. It is the product of genuine technical merit combined with exceptional timing. Containers solve real problems in software delivery — portability, speed, scalability, and environment consistency — but those problems became acutely pressing right around the time Docker appeared. Earlier container frameworks offered similar technical solutions but arrived before the industry had reached the point where it urgently needed them.</p>



<p class="wp-block-paragraph">Add to that Docker&#8217;s open-source model, its alignment with the DevOps wave, and its focus on developer experience, and the result is a technology that was positioned perfectly to become the default container platform for a generation of cloud-native applications.</p>



<p class="wp-block-paragraph">For DevOps engineers today, Docker remains a foundational skill — not just because of its technical capabilities, but because understanding why it succeeded helps illuminate the broader forces shaping how modern infrastructure is built and operated.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/why-is-docker-so-popular-explaining-the-rise-of-containers-and-docker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Work with Docker Logs: A Practical Guide for Troubleshooting Containers</title>
		<link>https://www.bestdevops.com/how-to-start-working-with-docker-logs/</link>
					<comments>https://www.bestdevops.com/how-to-start-working-with-docker-logs/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 22 Jun 2017 06:55:24 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker containers]]></category>
		<category><![CDATA[Docker logs]]></category>
		<category><![CDATA[IT]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=1911</guid>

					<description><![CDATA[Learn how to view, follow, and filter Docker container logs using the docker logs command — a fundamental skill for troubleshooting containerised applications.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When a Docker container misbehaves, your first instinct should be the same as with any other service: check the logs. Unlike a traditional virtual machine or bare-metal server, a Docker container does not expose a familiar <code>/var/log</code> directory you can browse at will. Instead, Docker captures whatever the containerised process writes to <code>stdout</code> and <code>stderr</code>, and exposes it through its own logging subsystem. Once you understand how that works, troubleshooting becomes much faster.</p>



<p class="wp-block-paragraph">This guide walks through the core <code>docker logs</code> workflow: finding a container identifier, viewing its full log output, and tailing the log in real time.</p>



<h2 class="wp-block-heading">How Docker Logging Works</h2>



<p class="wp-block-paragraph">By default, Docker uses the <code>json-file</code> logging driver, which captures a container&#8217;s standard output and standard error streams and stores them as JSON-encoded lines on the host filesystem. The <code>docker logs</code> command reads those stored lines and presents them to you. Because logging is tied to the process streams rather than to files inside the container, this approach works for every container regardless of what is running inside it — a web server, a database, a bare shell session, or anything else.</p>



<p class="wp-block-paragraph">One important caveat: <code>docker logs</code> only works with the <code>json-file</code> and <code>journald</code> logging drivers. If your Docker daemon is configured to use a remote logging driver such as <code>syslog</code>, <code>fluentd</code>, <code>awslogs</code>, or <code>gelf</code>, log entries are forwarded externally and <code>docker logs</code> will return no output. Check your daemon configuration if the command returns nothing for a container you expect to have logs.</p>



<h2 class="wp-block-heading">Step 1 — Find the Container Name or ID</h2>



<p class="wp-block-paragraph">Every <code>docker logs</code> invocation requires either the container&#8217;s name or its ID. List all running containers with:</p>


<pre class="wp-block-code"><span><code class="hljs">docker ps</code></span></pre>


<p class="wp-block-paragraph">The output table includes the following columns relevant here:</p>



<ul class="wp-block-list">
<li><strong>CONTAINER ID</strong> — a 64-character hex string, usually displayed truncated to 12 characters (e.g., <code>e7565ec8e16d</code>).</li>
<li><strong>IMAGE</strong> — the image the container was started from (e.g., <code>nginx</code>, <code>debian</code>).</li>
<li><strong>NAMES</strong> — a human-readable name, either assigned with <code>--name</code> at run time or auto-generated by Docker (e.g., <code>loving_hopper</code>).</li>
</ul>



<p class="wp-block-paragraph">You can pass either the full container ID, a unique prefix of the container ID (even four characters is usually enough), or the container name to <code>docker logs</code>. To include stopped containers in the listing, use <code>docker ps -a</code>.</p>



<h2 class="wp-block-heading">Step 2 — View a Container&#8217;s Full Log Output</h2>



<p class="wp-block-paragraph">The basic syntax is:</p>


<pre class="wp-block-code"><span><code class="hljs">docker logs CONTAINER</code></span></pre>


<p class="wp-block-paragraph">Replace <code>CONTAINER</code> with the name or ID from the previous step. For example, if you have an nginx container named <code>web</code>:</p>


<pre class="wp-block-code"><span><code class="hljs">docker logs web</code></span></pre>


<p class="wp-block-paragraph">Or using a container ID prefix:</p>


<pre class="wp-block-code"><span><code class="hljs">docker logs e7565ec8e16d</code></span></pre>


<p class="wp-block-paragraph">This prints everything the container has written to stdout and stderr since it started. For a long-running, busy container this can be a very large amount of text, which is why the options in the next sections are so useful in practice.</p>



<h2 class="wp-block-heading">Step 3 — Follow Logs in Real Time</h2>



<p class="wp-block-paragraph">The <code>-f</code> (or <code>--follow</code>) flag streams new log lines to your terminal as they are written, similar to <code>tail -f</code> on a traditional log file:</p>


<pre class="wp-block-code"><span><code class="hljs">docker logs -f CONTAINER</code></span></pre>


<p class="wp-block-paragraph">Combine <code>-f</code> with <code>--tail</code> to start from only the most recent lines instead of replaying the entire history first:</p>


<pre class="wp-block-code"><span><code class="hljs">docker logs --tail=50 -f CONTAINER</code></span></pre>


<p class="wp-block-paragraph">This is the most practical form of the command for active troubleshooting. You can trigger the behaviour you want to investigate — a failing login, a bad request, a crash loop — and watch the relevant log lines appear immediately. Press <code>Ctrl+C</code> to stop following.</p>



<h2 class="wp-block-heading">Useful docker logs Options at a Glance</h2>



<figure class="wp-block-table"><table><thead><tr><th>Option</th><th>Description</th></tr></thead><tbody><tr><td><code>--follow</code> / <code>-f</code></td><td>Stream log output in real time.</td></tr><tr><td><code>--tail N</code></td><td>Show only the last N lines. Use <code>all</code> to show everything (the default).</td></tr><tr><td><code>--since TIMESTAMP</code></td><td>Show logs produced after a given timestamp or relative duration, e.g. <code>--since 30m</code> or <code>--since 2024-01-15T10:00:00</code>.</td></tr><tr><td><code>--until TIMESTAMP</code></td><td>Show logs produced before a given timestamp or relative duration.</td></tr><tr><td><code>--timestamps</code> / <code>-t</code></td><td>Prefix each log line with the container&#8217;s timestamp.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Practical Examples</h2>



<p class="wp-block-paragraph"><strong>Show the last 100 lines with timestamps:</strong></p>


<pre class="wp-block-code"><span><code class="hljs">docker logs --tail=100 -t web</code></span></pre>


<p class="wp-block-paragraph"><strong>Show only entries from the past 10 minutes:</strong></p>


<pre class="wp-block-code"><span><code class="hljs">docker logs --since 10m web</code></span></pre>


<p class="wp-block-paragraph"><strong>Follow logs for a container started interactively (e.g., a Debian shell) from a second terminal:</strong></p>



<p class="wp-block-paragraph">In terminal 1, start the container:</p>


<pre class="wp-block-code"><span><code class="hljs">docker run -it debian /bin/bash</code></span></pre>


<p class="wp-block-paragraph">In terminal 2, tail its logs using the first four characters of its ID:</p>


<pre class="wp-block-code"><span><code class="hljs">docker logs --tail=10 -f 692a</code></span></pre>


<p class="wp-block-paragraph">Commands you run inside the Debian shell — such as <code>apt-get update</code> — will produce output that appears in the following terminal as it happens.</p>



<h2 class="wp-block-heading">Viewing Logs for Stopped Containers</h2>



<p class="wp-block-paragraph">Log data persists after a container stops, as long as the container itself has not been removed. You can still run <code>docker logs CONTAINER</code> against a stopped container to inspect what happened before it exited. This is particularly useful when a container crashes on startup before you have a chance to follow its output live. Once you run <code>docker rm</code>, however, the log data is gone.</p>



<h2 class="wp-block-heading">Next Steps: Centralised Logging</h2>



<p class="wp-block-paragraph">For a single host and a handful of containers, <code>docker logs</code> is sufficient. At scale — multiple hosts, dozens of services, high log volumes — you will want to route container logs to a centralised log management system. Docker supports a range of logging drivers out of the box (including <code>syslog</code>, <code>journald</code>, <code>fluentd</code>, <code>awslogs</code>, <code>gelf</code>, and <code>splunk</code>) that forward log entries to an external destination without changing anything inside the container. Configuring a logging driver is done either per container (<code>--log-driver</code> flag on <code>docker run</code>) or globally in the Docker daemon configuration file.</p>



<p class="wp-block-paragraph">Understanding <code>docker logs</code> and how Docker captures stdout/stderr is the essential foundation before moving on to any of those more advanced setups.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-to-start-working-with-docker-logs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Automatically Update Running Docker Containers with Watchtower</title>
		<link>https://www.bestdevops.com/how-to-automatically-update-running-docker-containers/</link>
					<comments>https://www.bestdevops.com/how-to-automatically-update-running-docker-containers/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Wed, 24 May 2017 06:14:33 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[Automatically Update]]></category>
		<category><![CDATA[BestDevOps]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker containers]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=1613</guid>

					<description><![CDATA[Watchtower is an open-source tool that monitors your running Docker containers and automatically restarts them with updated base images — no manual intervention required.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Attribution:</strong> This article is based on content originally published at <strong>ostechnix.com</strong>.</p>



<h2 class="wp-block-heading">What Is Watchtower?</h2>



<p class="wp-block-paragraph">Watchtower is a free, open-source application that monitors your running Docker containers and automatically updates them when it detects changes in their base images. The update process works as follows:</p>



<ul class="wp-block-list">
<li>Watchtower polls the image registry to detect changes to base images used by running containers.</li>
<li>When an update is found, it gracefully stops the affected container by sending it a <code>SIGTERM</code> signal.</li>
<li>It pulls the updated image from the registry.</li>
<li>It restarts the container using the same runtime options — volumes, environment variables, port bindings, etc. — that were used when the container was originally launched.</li>
</ul>



<p class="wp-block-paragraph">The entire lifecycle is handled automatically in the background. No manual intervention is needed, making Watchtower useful in environments where keeping containers up to date is a routine operational requirement.</p>



<p class="wp-block-paragraph">The steps in this guide were originally tested on CentOS 7 minimal edition, but the procedure applies to any Linux distribution that supports Docker.</p>



<h2 class="wp-block-heading">Prerequisites</h2>



<p class="wp-block-paragraph">Watchtower is itself distributed as a Docker image, so the only prerequisite is a working Docker installation. Install Docker for your distribution before proceeding:</p>



<ul class="wp-block-list">
<li>For RPM-based systems (CentOS, RHEL, Fedora): follow the official Docker documentation for your distribution.</li>
<li>For DEB-based systems (Ubuntu, Debian): follow the official Docker documentation for your distribution.</li>
</ul>



<h2 class="wp-block-heading">Installing Watchtower</h2>



<p class="wp-block-paragraph">Because Watchtower is packaged as a Docker image, deploying it requires only a single <code>docker run</code> command. Run the following as <strong>root</strong> or as a user with Docker socket access:</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">docker run -d \
  --name watchtower \
  -v /<span class="hljs-keyword">var</span>/run/docker.sock:<span class="hljs-regexp">/var/</span>run/docker.sock \
  v2tec/watchtower</code></span></pre>


<p class="wp-block-paragraph">Breaking down the flags:</p>



<ul class="wp-block-list">
<li><code>-d</code> — Run the container in detached (background) mode.</li>
<li><code>--name watchtower</code> — Assign the container a recognisable name.</li>
<li><code>-v /var/run/docker.sock:/var/run/docker.sock</code> — Mount the Docker daemon socket so Watchtower can inspect and manage other containers on the host.</li>
<li><code>v2tec/watchtower</code> — The official Watchtower image (pulls <code>latest</code> by default).</li>
</ul>



<p class="wp-block-paragraph">Expected output when the image is pulled for the first time:</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">Unable to find image <span class="hljs-string">'v2tec/watchtower:latest'</span> locally
<span class="hljs-attr">latest</span>: Pulling <span class="hljs-keyword">from</span> v2tec/watchtower
<span class="hljs-attr">a3ed95caeb02</span>: Pull complete
<span class="hljs-number">802</span>d894958a2: Pull complete
<span class="hljs-number">9916</span>c27d2815: Pull complete
<span class="hljs-attr">Digest</span>: sha256:d89ea18b6332cc83639771fda274ebfd76f7042856d8f4997e99c7925ad02ae9
<span class="hljs-attr">Status</span>: Downloaded newer image <span class="hljs-keyword">for</span> v2tec/watchtower:latest
e85c923f2e4dd22a62c12b038ea9694ba9245dcd835f210e1</code></span></pre>


<h2 class="wp-block-heading">Verifying the Watchtower Container Is Running</h2>



<p class="wp-block-paragraph">Confirm that Watchtower is running alongside your other containers:</p>


<pre class="wp-block-code"><span><code class="hljs">docker ps</code></span></pre>


<p class="wp-block-paragraph">Sample output:</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">CONTAINER ID   IMAGE              COMMAND          CREATED         STATUS         PORTS   NAMES
e85c923f2e4d   v2tec/watchtower   <span class="hljs-string">"/watchtower"</span>    <span class="hljs-number">3</span> minutes ago   Up <span class="hljs-number">3</span> minutes           watchtower
<span class="hljs-number">58543e6</span>ed18a   centos:latest      <span class="hljs-string">"/bin/bash"</span>      <span class="hljs-number">5</span> minutes ago   Up <span class="hljs-number">5</span> minutes           myapp</code></span></pre>


<p class="wp-block-paragraph">Watchtower is now running and will begin polling all other running containers on the host for image updates at regular intervals.</p>



<h2 class="wp-block-heading">Monitoring All Containers vs. Specific Containers</h2>



<h3 class="wp-block-heading">Monitor All Containers (Default Behaviour)</h3>



<p class="wp-block-paragraph">By default, Watchtower monitors every container managed by the Docker daemon it is connected to. No additional configuration is needed — the basic <code>docker run</code> command above is sufficient.</p>



<h3 class="wp-block-heading">Monitor Only Specific Containers</h3>



<p class="wp-block-paragraph">If you want Watchtower to watch only certain containers, append the container names as arguments at the end of the <code>docker run</code> command:</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">docker run -d \
  --name watchtower \
  -v /<span class="hljs-keyword">var</span>/run/docker.sock:<span class="hljs-regexp">/var/</span>run/docker.sock \
  v2tec/watchtower myapp</code></span></pre>


<p class="wp-block-paragraph">In this example, Watchtower will watch only the container named <code>myapp</code>. All other running containers are ignored. You can supply multiple container names as space-separated arguments:</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">docker run -d \
  --name watchtower \
  -v /<span class="hljs-keyword">var</span>/run/docker.sock:<span class="hljs-regexp">/var/</span>run/docker.sock \
  v2tec/watchtower myapp nginx redis</code></span></pre>


<h2 class="wp-block-heading">How the Update Cycle Works</h2>



<p class="wp-block-paragraph">Once Watchtower is running, it periodically checks the image registry for updates to the base images of each monitored container. The default polling interval is every 5 minutes. When an updated image is found:</p>



<ol class="wp-block-list">
<li>Watchtower sends a <code>SIGTERM</code> to the running container, allowing it to shut down gracefully.</li>
<li>The new image is pulled from the registry.</li>
<li>A replacement container is started using the exact same configuration — including environment variables, port mappings, volume mounts, and network settings — as the original.</li>
</ol>



<p class="wp-block-paragraph">This behaviour means that Watchtower is best suited for stateless or semi-stateless workloads where restarting the container with the same options produces the desired result. For stateful services, consider whether an automated restart without a migration or data-backup step is appropriate for your workload.</p>



<h2 class="wp-block-heading">Security Consideration: Docker Socket Access</h2>



<p class="wp-block-paragraph">Mounting the Docker socket (<code>/var/run/docker.sock</code>) into any container grants that container root-equivalent access to the Docker daemon and, by extension, to the host. This is an inherent requirement of how Watchtower operates. Ensure that:</p>



<ul class="wp-block-list">
<li>The host&#8217;s Docker socket permissions are appropriately restricted.</li>
<li>You trust the Watchtower image source and pin to a specific image digest in production environments rather than using the <code>latest</code> tag.</li>
<li>You review Watchtower&#8217;s own release notes before allowing it to update itself.</li>
</ul>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">Watchtower provides a straightforward mechanism for keeping Docker containers up to date without manual re-deployment steps. By running it as a sidecar container with access to the Docker socket, it can monitor any number of containers and automatically apply base-image updates on a configurable schedule. For simple, stateless container workloads, this can significantly reduce operational overhead.</p>



<p class="wp-block-paragraph">For more advanced use cases — such as sending update notifications, configuring custom polling intervals, or integrating with private registries — consult the <a href="https://containrrr.dev/watchtower/">official Watchtower documentation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-to-automatically-update-running-docker-containers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Five Essential Docker Containers for Your Home Server</title>
		<link>https://www.bestdevops.com/five-essential-docker-containers-for-your-home-server/</link>
					<comments>https://www.bestdevops.com/five-essential-docker-containers-for-your-home-server/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Mon, 20 Mar 2017 08:30:01 +0000</pubDate>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker containers]]></category>
		<category><![CDATA[Home Server]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=988</guid>

					<description><![CDATA[Turn a spare machine into a powerful home server using Docker. This guide covers five essential containers — OwnCloud, Plex, Transmission, OpenVPN, and No-IP DDNS — and explains what each one does and why it belongs in your home lab.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Running a server on your home network is one of the most practical additions to any homelabber or DevOps engineer&#8217;s setup. The use cases are broad: local development and testing environments, home-automation hubs, private file storage, or personal media streaming. Whatever your goal, Docker makes it straightforward to deploy, isolate, and manage each service independently — no dependency conflicts, clean upgrades, and easy rollbacks.</p>



<p class="wp-block-paragraph">Below are five Docker containers that form a solid foundation for a home server. Each one is mature, well-maintained on Docker Hub, and genuinely useful in day-to-day life.</p>



<h2 class="wp-block-heading">1. OwnCloud — Self-Hosted Cloud Storage</h2>



<figure class="wp-block-image"><img decoding="async" src="https://thealarmclocksixam.files.wordpress.com/2017/03/screenshot-from-2017-03-19-18-03-16.png?w=700" alt="OwnCloud web interface screenshot" /></figure>



<p class="wp-block-paragraph"><a href="https://owncloud.com/">OwnCloud</a> is a self-hosted alternative to Dropbox or Google Drive. You run the server, you own the data. Desktop sync clients are available for Linux, macOS, and Windows; they keep selected local directories in sync with the server automatically, just as commercial cloud-storage clients do.</p>



<p class="wp-block-paragraph">In addition to file sync, OwnCloud provides a full web interface that lets you access, upload, and manage files from any browser. You can also generate shareable links to send specific files or folders to colleagues or friends without requiring them to have an account.</p>



<p class="wp-block-paragraph"><strong>Why Docker?</strong> The OwnCloud Docker image bundles the PHP application and its dependencies together, so you avoid conflicts with other PHP applications on the same host. Data is stored on a mounted host volume, keeping it safe across container upgrades.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">docker run -d \
  --name owncloud \
  -p <span class="hljs-number">8080</span>:<span class="hljs-number">8080</span> \
  -v /srv/owncloud/data:<span class="hljs-regexp">/mnt/</span>data \
  owncloud/server</code></span></pre>


<p class="wp-block-paragraph"><strong>Tip:</strong> Upload bandwidth from your home ISP is the main performance bottleneck for remote access. If you plan to access OwnCloud from outside your home network, check your ISP&#8217;s upstream speed before storing large files.</p>



<h2 class="wp-block-heading">2. Plex Media Server — Stream Your Own Media Library</h2>



<figure class="wp-block-image"><img decoding="async" src="https://thealarmclocksixam.files.wordpress.com/2017/03/plex.jpg?w=700" alt="Plex Media Server logo" /></figure>



<p class="wp-block-paragraph"><a href="https://www.plex.tv/">Plex Media Server</a> organises and streams your locally stored video, music, and photo libraries. Clients are available for smart TVs, Roku, Apple TV, Chromecast, iOS, Android, and most browsers — so you can watch your content on virtually any screen in the house, or remotely over the internet.</p>



<p class="wp-block-paragraph">Plex scans your media directories, fetches metadata (cover art, descriptions, ratings) automatically, and presents everything through a polished Netflix-style interface. Transcoding lets it adapt the stream quality to match the available bandwidth and the capability of the client device.</p>



<p class="wp-block-paragraph"><strong>OwnCloud + Plex synergy:</strong> If you store photos in OwnCloud, you can point a Plex photo library at the same directory. This makes it easy to pull up your photo collection on a TV when friends visit.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">docker run -d \
  --name plex \
  --network=host \
  -e PLEX_CLAIM=<span class="hljs-string">"&lt;your-claim-token&gt;"</span> \
  -v /srv/plex/config:<span class="hljs-regexp">/config \
  -v /</span>srv/media:<span class="hljs-regexp">/data \
  plexinc/</span>pms-docker</code></span></pre>


<p class="wp-block-paragraph"><strong>Note:</strong> Hardware transcoding (GPU pass-through) requires additional Docker flags and a Plex Pass subscription. Software transcoding works out of the box but is CPU-intensive for high-resolution content.</p>



<h2 class="wp-block-heading">3. Transmission — Headless BitTorrent Client with a Web UI</h2>



<p class="wp-block-paragraph"><a href="https://transmissionbt.com/">Transmission</a> is a lightweight, open-source BitTorrent client. Running it as a Docker container on your server — rather than on your desktop — means downloads continue in the background whether your laptop is open or not. You interact with it through a browser-based web UI from any device on your network.</p>



<p class="wp-block-paragraph">Common legitimate uses for BitTorrent on a home server include downloading ISO images of Linux distributions, large open-source dataset releases, and Creative Commons–licensed content.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">docker run -d \
  --name transmission \
  -p <span class="hljs-number">9091</span>:<span class="hljs-number">9091</span> \
  -p <span class="hljs-number">51413</span>:<span class="hljs-number">51413</span> \
  -v /srv/transmission/config:<span class="hljs-regexp">/config \
  -v /</span>srv/downloads:<span class="hljs-regexp">/downloads \
  linuxserver/</span>transmission</code></span></pre>


<p class="wp-block-paragraph">The web interface is available at <code>http://&lt;your-server-ip&gt;:9091</code> once the container is running. You can add torrents via magnet links or .torrent files directly from the browser.</p>



<h2 class="wp-block-heading">4. OpenVPN — Secure Remote Access to Your Home Network</h2>



<p class="wp-block-paragraph">A VPN server running on your home server allows you to connect securely to your entire home network from anywhere — a coffee-shop Wi-Fi, a hotel, or a corporate network. Once connected, your device behaves as if it were physically sitting at home: you can reach OwnCloud, Plex, and any other local service by their internal IP addresses.</p>



<p class="wp-block-paragraph">The <a href="https://hub.docker.com/r/kylemanna/openvpn">kylemanna/openvpn</a> image is a popular choice because it automates the PKI setup (generating the certificate authority, server certificate, and client certificates) with a few one-time commands. After that, generating a new client config is a single <code>docker exec</code> call.</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment"># Initialise the configuration volume (run once)</span>
docker run --rm \
  -v /srv/openvpn:/etc/openvpn \
  kylemanna/openvpn ovpn_genconfig -u udp:<span class="hljs-comment">//YOUR_PUBLIC_HOSTNAME</span>

docker run --rm -it \
  -v /srv/openvpn:/etc/openvpn \
  kylemanna/openvpn ovpn_initpki

<span class="hljs-comment"># Run the server</span>
docker run -d \
  --name openvpn \
  -v /srv/openvpn:/etc/openvpn \
  -p <span class="hljs-number">1194</span>:<span class="hljs-number">1194</span>/udp \
  --cap-add=NET_ADMIN \
  kylemanna/openvpn</code></span></pre>


<p class="wp-block-paragraph"><strong>Router configuration required:</strong> You need to forward UDP port 1194 from your router to the server&#8217;s local IP address. Pair this with the No-IP DDNS container (see below) so you always know the current public IP of your home connection.</p>



<h2 class="wp-block-heading">5. No-IP DDNS — Keep Your Hostname Pointing to a Dynamic IP</h2>



<p class="wp-block-paragraph">Most residential internet connections use a dynamic public IP address assigned by the ISP. This address can change when your router reboots or when the ISP renews your lease. If you want to reach your home server from the internet, you cannot rely on a fixed IP.</p>



<p class="wp-block-paragraph">Dynamic DNS (DDNS) solves this by mapping a stable hostname (e.g., <code>myhome.ddns.net</code>) to your current public IP. <a href="https://www.noip.com/">No-IP</a> is a well-established DDNS provider that offers free hostnames. The No-IP Docker container runs a lightweight update client that periodically checks your public IP and updates the DNS record whenever it changes — so your hostname always resolves correctly.</p>


<pre class="wp-block-code"><span><code class="hljs">docker run -d \
  --name noip \
  -e USERNAME=your_noip_username \
  -e PASSWORD=your_noip_password \
  -e DOMAINS=myhome.ddns.net \
  -e INTERVAL=5 \
  coppit/no-ip</code></span></pre>


<p class="wp-block-paragraph"><strong>Alternatives:</strong> If you prefer to avoid third-party DDNS providers, DuckDNS is a fully free, open alternative with good Docker support. Cloudflare&#8217;s API also works well if you already manage a domain through them.</p>



<h2 class="wp-block-heading">Putting It All Together</h2>



<p class="wp-block-paragraph">These five containers complement each other well. A typical workflow looks like this:</p>



<ul class="wp-block-list">
  <li>No-IP keeps your public hostname current so every other service is reachable by name.</li>
  <li>OpenVPN gives you an encrypted tunnel back to your home network when you&#8217;re away.</li>
  <li>OwnCloud keeps your files synced across devices and accessible from any browser.</li>
  <li>Plex streams your media library to any screen, at home or over the VPN.</li>
  <li>Transmission handles background downloads without requiring your laptop to stay on.</li>
</ul>



<p class="wp-block-paragraph">For production-quality management, consider writing a <code>docker-compose.yml</code> file that declares all five services, their volumes, and their network configuration in one place. This makes the entire stack reproducible and easy to migrate to new hardware.</p>



<p class="wp-block-paragraph">For additional Docker learning resources, see the <a href="http://www.scmgalaxy.com/courses/agenda/virtulization-and-container-tools/docker-training.html">SCM Galaxy Docker training course</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/five-essential-docker-containers-for-your-home-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Docker Networking Basics for a Docker Media Server</title>
		<link>https://www.bestdevops.com/building-a-docker-media-server-docker-networking-basics/</link>
					<comments>https://www.bestdevops.com/building-a-docker-media-server-docker-networking-basics/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 18 Feb 2017 09:27:13 +0000</pubDate>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[Buiding]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker containers]]></category>
		<category><![CDATA[Docker Media Server]]></category>
		<category><![CDATA[Docker Networking]]></category>
		<category><![CDATA[Guide]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=702</guid>

					<description><![CDATA[Learn the core Docker networking concepts you need before building a media server: bridge, host, and none modes, port forwarding, and essential CLI commands for inspecting networks.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Docker containers are isolated entities — each one behaves almost like a single-purpose computer on the network. To allow them to communicate with each other and with external devices or services, Docker Engine configures and manages network access on their behalf. Understanding how Docker networking works is essential before you start wiring together a multi-container media server stack. Get this wrong and things become confusing fast.</p>



<p class="wp-block-paragraph">This article explains Docker networking at a practical level: the terminology you will encounter, the three built-in network modes, and the CLI commands you need to inspect and reason about your container network topology.</p>



<h2 class="wp-block-heading">Key Networking Terms</h2>



<p class="wp-block-paragraph">Before diving into modes and commands, it helps to define the terms you will see throughout any Docker networking discussion.</p>



<ul class="wp-block-list">
  <li><strong>Host network</strong> — your physical LAN. It consists of IP addresses (e.g. <code>192.168.1.x</code>), subnet masks (e.g. <code>255.255.255.0</code>), and is typically managed by your router. Every physical device on your network sits here.</li>
  <li><strong>Docker network</strong> — a virtual network managed by Docker Engine. By default it runs on a separate address range (commonly <code>172.17.0.x</code>) and a different subnet mask (<code>255.255.0.0</code>). Its scope and behaviour depend on the network mode you choose.</li>
  <li><strong>Port</strong> — a number that identifies a specific service on a host. Web servers traditionally listen on port 80 (HTTP) or 443 (HTTPS). Media server apps are commonly reached over custom ports such as <code>http://192.168.1.100:8096</code>. The number after the colon is the port.</li>
  <li><strong>Port forwarding (port mapping)</strong> — redirecting traffic arriving at a given IP-address/port combination to a different address/port. In Docker, this is how you make a containerised service reachable from your host network. Docker maps a port on the host to a port inside the container, bridging the two networks.</li>
</ul>



<h2 class="wp-block-heading">Docker Networking Modes</h2>



<p class="wp-block-paragraph">Docker ships with three built-in network drivers. Each involves different trade-offs between isolation, simplicity, and flexibility.</p>



<h3 class="wp-block-heading">Bridge Mode (Default)</h3>



<p class="wp-block-paragraph">Bridge is the default network mode. When Docker Engine starts, it creates a virtual network interface called <code>docker0</code> that acts as a software bridge between the isolated Docker network and your physical (host) network. Each new container receives an IP address on the Docker subnet (e.g. <code>172.17.0.2</code>, <code>172.17.0.3</code>, and so on).</p>



<p class="wp-block-paragraph">Containers on the same host in bridge mode can communicate with each other directly by IP address with no extra configuration. However, for a container to be reachable from outside the Docker network — such as from your phone, TV, or another machine on your LAN — you must explicitly map a host port to the container port when you start the container.</p>



<p class="wp-block-paragraph">You can verify the bridge interface is present by checking your network configuration. On Linux, the <code>docker0</code> interface appears alongside your physical adapters:</p>


<pre class="wp-block-code"><span><code class="hljs">ip addr show docker0</code></span></pre>


<p class="wp-block-paragraph">On Windows (with Docker Desktop), run the following from a Command Prompt to see the virtual <code>DockerNAT</code> adapter alongside your physical NIC:</p>


<pre class="wp-block-code"><span><code class="hljs">ipconfig /all</code></span></pre>


<p class="wp-block-paragraph">The DockerNAT adapter typically uses its own address range (e.g. <code>10.0.75.x</code>) separate from your LAN range.</p>



<p class="wp-block-paragraph">On a <strong>Synology NAS</strong> running the Docker package, open Docker from the Package Center and select <strong>Network</strong> from the sidebar. Expand the <strong>bridge</strong> entry to see the subnet in use. On a <strong>QNAP NAS</strong> running Container Station, navigate to <strong>Preferences → Network</strong> to find the equivalent information.</p>



<p class="wp-block-paragraph"><strong>Summary:</strong> Bridge mode gives you network isolation with explicit, controllable port mappings. It requires slightly more configuration up front but is the right default for most media server deployments.</p>



<h3 class="wp-block-heading">Host Mode</h3>



<p class="wp-block-paragraph">In host mode, Docker does not create a separate network for the container. Instead, the container shares the host machine&#8217;s network stack directly — it binds to the same IP address and ports as the host OS. There is no NAT layer and no port mapping required.</p>



<p class="wp-block-paragraph">This can simplify configuration and may improve network performance for certain workloads, but it removes the isolation that bridge mode provides. A port conflict between a container and a host service becomes possible, and the container can reach any service on the host network without restriction.</p>



<p class="wp-block-paragraph"><strong>Note:</strong> Host mode networking on Docker Desktop for macOS and Windows behaves differently from Linux — on those platforms the Docker daemon runs inside a lightweight VM, so true host-mode networking against the Mac or Windows host is not directly available in the same way.</p>



<h3 class="wp-block-heading">None Mode</h3>



<p class="wp-block-paragraph">The <code>none</code> driver gives the container a private network namespace with only a loopback interface (<code>lo</code>). The container has no external network connectivity whatsoever. This is useful for containers that perform purely local computation and must be completely network-isolated, but it is rarely used in media server scenarios.</p>



<h2 class="wp-block-heading">Viewing and Inspecting Docker Networks</h2>



<p class="wp-block-paragraph">Docker provides straightforward CLI commands to list and inspect the networks available on your host.</p>



<h3 class="wp-block-heading">List All Networks</h3>


<pre class="wp-block-code"><span><code class="hljs">docker network ls</code></span></pre>


<p class="wp-block-paragraph">A fresh Docker installation shows three default networks — <code>bridge</code>, <code>host</code>, and <code>none</code> — each with a unique ID and its associated driver. These default networks are required by Docker and cannot be removed, though you can create additional user-defined networks alongside them.</p>



<h3 class="wp-block-heading">Inspect a Specific Network</h3>


<pre class="wp-block-code"><span><code class="hljs">docker network inspect bridge</code></span></pre>


<p class="wp-block-paragraph">This returns a JSON object containing the subnet, gateway, and — once containers are running — the IP address assigned to each connected container. For example, if you have two containers named <code>Container1</code> and <code>Container2</code> running on the default bridge network, the output will list both with their respective internal IP addresses (such as <code>172.17.0.2</code> and <code>172.17.0.3</code>). This is a quick way to find a container&#8217;s internal IP when you need it.</p>



<p class="wp-block-paragraph">Replace <code>bridge</code> with <code>host</code> or <code>none</code> to inspect those networks, or use the name of any user-defined network you have created.</p>



<h3 class="wp-block-heading">Selecting a Network When Running a Container</h3>



<p class="wp-block-paragraph">When you start a container with <code>docker run</code>, use the <code>--network</code> flag to choose which network it joins:</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment"># Use host networking</span>
docker run --network=host my-image

<span class="hljs-comment"># Use the default bridge (this is the implicit default if --network is omitted)</span>
docker run --network=bridge my-image

<span class="hljs-comment"># Use no networking</span>
docker run --network=none my-image</code></span></pre>


<p class="wp-block-paragraph">If you omit <code>--network</code> entirely, Docker assigns the container to the default <code>bridge</code> network automatically.</p>



<h2 class="wp-block-heading">Port Mapping in Practice</h2>



<p class="wp-block-paragraph">When running in bridge mode, use the <code>-p</code> flag to publish a container port on the host:</p>


<pre class="wp-block-code"><span><code class="hljs language-css"># <span class="hljs-selector-tag">Map</span> <span class="hljs-selector-tag">host</span> <span class="hljs-selector-tag">port</span> 8096 <span class="hljs-selector-tag">to</span> <span class="hljs-selector-tag">container</span> <span class="hljs-selector-tag">port</span> 8096
<span class="hljs-selector-tag">docker</span> <span class="hljs-selector-tag">run</span> <span class="hljs-selector-tag">-p</span> 8096<span class="hljs-selector-pseudo">:8096</span> <span class="hljs-selector-tag">my-media-server-image</span></code></span></pre>


<p class="wp-block-paragraph">The format is <code>HOST_PORT:CONTAINER_PORT</code>. After this mapping is in place, any device on your LAN can reach the containerised service at <code>http://&lt;host-ip&gt;:8096</code>, even though the container itself lives on the separate Docker subnet.</p>



<p class="wp-block-paragraph">You can publish multiple ports in a single <code>docker run</code> command by repeating the <code>-p</code> flag:</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">docker</span> <span class="hljs-selector-tag">run</span> <span class="hljs-selector-tag">-p</span> 8096<span class="hljs-selector-pseudo">:8096</span> <span class="hljs-selector-tag">-p</span> 8920<span class="hljs-selector-pseudo">:8920</span> <span class="hljs-selector-tag">my-media-server-image</span></code></span></pre>


<h2 class="wp-block-heading">Choosing the Right Mode for a Media Server</h2>



<p class="wp-block-paragraph">For most home media server setups, <strong>bridge mode with explicit port mappings</strong> is the recommended starting point. It matches Docker&#8217;s defaults, keeps containers reasonably isolated, and gives you fine-grained control over which ports are exposed. The trade-off — a few extra <code>-p</code> flags per container — is minimal.</p>



<p class="wp-block-paragraph">Host mode is worth considering if a containerised application relies on network protocols that are difficult to port-map (such as multicast-based service discovery), or if you are troubleshooting connectivity issues and want to eliminate NAT as a variable. Be aware of the reduced isolation it implies.</p>



<p class="wp-block-paragraph">None mode has no practical use in a media server context.</p>



<p class="wp-block-paragraph">Once you are comfortable with these basics, Docker&#8217;s user-defined bridge networks — created with <code>docker network create</code> — offer additional benefits such as automatic DNS resolution between containers by name. That topic builds naturally on what is covered here.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/building-a-docker-media-server-docker-networking-basics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
