Docker’s Next Chapter: Advancing Developer Workflows for Modern Apps

Today we start the next chapter in the Docker story, one that’s focused on developers. That we have the opportunity to write this next chapter is thanks to you, our community, for without you we wouldn’t be here. And while our focus on developers builds on recent history, it’s a focus also grounded in Docker’s beginning.
In The Beginning
When Solomon Hykes, Docker’s founder, unveiled the Docker project in 2013, he succinctly stated the problem Docker aimed to solve as, “for a developer, shipping code to the server is hard.” To address, Docker abstracted out OS kernels’ complex container primitives, provided a developer-friendly, CLI-based workflow and defined an immutable, portable image format. The result transformed how developers work, making it much easier to build, ship and run their apps on any server. So while container primitives had existed for decades, Docker democratized them and made them as easy to use as
docker run hello-world
The rest is history. Over the last six years, Docker containerization catalyzed the growth of microservices-based applications, enabled development teams to ship apps many times faster and accelerated the migration of apps from the data center to the cloud. Far from a Docker-only effort, a vibrant community ecosystem of open source and commercial technologies arose which streamlined adoption. Not the least of these is Kubernetes, orchestration technology originating from Google, which enabled highly reliable container deployments at new levels of scale. Also during this time, Docker containers expanded from their Linux x86 beginnings to run on other OSes and architectures, including Microsoft Windows and Arm. To guide the community’s efforts, new governance organizations appeared including CNCF, OCI, and CNAB. As this market grew, our developer community rapidly embraced Docker Desktop and Docker Hub, growing to millions of active users who shared millions of containerized apps and pulled billions of app images.
All this and more in only six years – and the best is yet to come.
The Road Ahead
Going forward, Docker’s focus is to build on these foundations to advance developer workflows for modern apps. Along with real benefits, the last six years also resulted in additional complexities, an explosion of choices and new potential threats of lock-in. In light of these challenges, Docker and our community ecosystem have the opportunity to extend the open standards, functionality, automation tooling and cloud services of Docker Desktop and Docker Hub to better help developers build, share and run modern apps.
Build. Six years ago, most apps could be encapsulated using one or two containers; today, a cloud-native microservices-based app may be a composition of many containers as well as serverless functions and hosted cloud services. To address this growing complexity and help developers simplify defining, building and packaging these apps, Docker will continue to expand the functionality of our open source frameworks and developer productivity tools like Docker Compose, Docker Apps and Docker App Templates.
Share. In 2013, friction-free, language-independent shareable application content was extremely limited. Now, thanks to the modularization of functionality enabled by Docker, the meteoric rise of the Docker container as the de facto industry standard and community distribution venues like Docker Hub, developers can now augment the code they write themselves with shared open source and commercial containers. However, more publishers daily pushing more apps – over 5 million on Docker Hub alone – and the emergence of new packaging formats run the risk of overwhelming and slowing developers. Docker Desktop and Docker Hub can help them quickly find new technologies relevant to their applications.
Run. Early on, container infrastructure was not widely available to developers. In order to run Docker containerized apps on servers developers, had to ask their IT teams to install Docker Engines and, for scale, orchestrators like Kubernetes or Docker Swarm. And this container infrastructure had to be monitored, patched and managed.
Fast-forward to today, where cloud service providers offer Docker-compatible on-demand container infrastructure services for both individual containers, like AWS Fargate, as well as multi-container apps, like Microsoft AKS. These give developers speed and agility, but at the potential risk of lock-in. Thus, to make it even easier for developers to benefit from the speed of these services but without giving up app portability and infrastructure choice, Docker Hub will seamlessly integrate developers’ “build” and “share” workflows with the cloud “run” services of their choosing.
Stay Tuned
In Docker’s early days we shared a vision of making things easier for developers. The growth in the open source and commercial community around Docker and Kubernetes these last six years suggests that we’re onto something ;-). But we’re just getting started, and there’s plenty more to be done. With this future ahead of us, it’s a privilege to lead the outstanding Docker team for this next chapter of the Docker story. And it’s one we look forward to writing together with you, our developer community.
The post Docker’s Next Chapter: Advancing Developer Workflows for Modern Apps appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Celebrating Veterans Day: Docker Employee Profiles

On Veterans Day, and every day, we give thanks to our veterans. We are fortunate to have Brent Salisbury, Siobhan Casey, and Johnny Gonzalez, as Docker colleagues who were in the United States Marine Corps Reserve, the United States Army Reserve, and the United States Marine Corps. Thank you all for your service, hard work, and dedication. As a thank you for their service, we’re profiling them on our blog.
Brent Salisbury, Software Alliance Engineer

Brent Salisbury was in the United States Marine Corps Reserve from 1996-2002. Now, he is a Software Alliance Engineer at Docker. You can follow him on Twitter @networkstatic. 

What is your job? 
Software Alliance Engineer.
How long have you worked at Docker?
4.5 years.
Is your current role one that you always intended on your career path? 
Data Networking has been my passion since college. Working at Docker has afforded me the opportunity to help usher in a new software paradigm in what can be achieved in host networking and security versus the traditional proprietary hardware models of the past.

What is your advice for someone entering the field?
It may sound cliche, but find your passion. Everyone in technology is smart. What separates you from the pack is the passion you have for the technology you are working on. Once you have that figured out, network with other people in your field who are just as passionate about the subject.
What are you working on right now that you are excited about?
Helping develop partner solutions that best help the customers deploy and run Docker.
What do you do to get “unstuck” on a really difficult problem/design/bug? 
I tend to just grind a problem until either me or the problem win. In retrospect, most of the time I should have simply stepped away from the problem for a little while to look at it from another perspective and would have saved loads of time in the process.
What is your definition of success?
Making a living from your passion and being part of meaningful technology projects. I am constantly in awe of what we are creating at Docker, and how pervasive the technology is across all conceivable sectors.
What are you passionate about? 
I am currently interested in emerging models of network security that are taking a distributed approach to policy disaggregation. 

Who do you look up to? 
As this is a post celebrating veterans, it’s easy to say that I hold veterans of any branch, active or reserves, that commit to serving our nation in the highest of regard.
Share a story about something or someone who has been very impactful on your life or career? 
I was in the U.S. Marine Corps Reserves from 1996-2002. While there was no shortage of things to complain about (like any good enlisted Marine does), being exposed to senior Marines that had innate leadership qualities at a young age had a lasting impression on me that has helped me throughout my career in technology.

Siobhan Casey, Sr. Manager Global Support

Siobhan Casey was in the United States Army Reserve from 1998-2006. Currently, she is a Sr. Manager, Global Support at Docker.

What is your job?
Sr. Manager, Global Support.
How long have you worked at Docker? 
3 years this Veteran’s Day.
Is your current role one that you always intended on your career path? 
No, I spent the majority of my career as an engineer or leading engineers in the government space. Leading a team at Docker, and watching these talented engineers help our customers succeed every day is a privilege to be a part of. I couldn’t ask for a more dedicated and competent team.

What is your advice for someone entering the field? 
Be open to change and keep growing. Technology moves fast; you need to prepare for future opportunities. Find a mentor you trust and follow their advice. For women specifically, know your worth, believe in yourself, find your voice, and bring a positive attitude.
Tell us about a favorite moment or memory at Docker or from your career?
My favorite memory involved successful Missile Defense testing of the operational BMDS.  Knowing the work we did every day ensured the successful defensive abilities of our country was the most rewarding work I’ve ever done.
What is your superpower?
Calm composure.
What is your definition of success?
A happy healthy family.
What are you passionate about?
Helping young kids to develop a love for sports, and giving back to organizations that help veterans, specifically those wounded or fallen on hard times.
What is something you love to do? 
Trail running. There is nothing but the sound of my breathing, the panting of my German Shepherd, and the silence of the woods.
And something you dislike?
Laundry.

Johnny Gonzalez, Technical Support Engineer

Johnny Gonzalez was in the United States Marine Corps from 2003-2009. Now, he is a Technical Support Engineer at Docker.

What is your job?
Technical Support Engineer.
How long have you worked at Docker?
1 year and 2 months.
Is your current role one that you always intended on your career path? 
Yes, because I am able to work with both systems and networks all in one.
What is your advice for someone entering the field?
Study and learn technology that is growing fast, which will make it easier to understand and work with.
Tell us about a favorite moment or memory at Docker or from your career? 
Everyday is a favorite moment at Docker because there is never a dull moment. There is ALWAYS something new to learn and that in itself is exciting. Docker even has a day for pumpkin carving.
What are you working on right now that you are excited about?
Container technology and how simple it is to run applications in cloud environments as opposed to just one computer.
What do you do to get “unstuck” on a really difficult problem/design/bug?
Ask colleagues for help. Docker has a great support group that is willing to help me grow and teach me new things that I may not know or understand.
What is your superpower?
Agility to be able to tackle new tasks and responsibilities in a way to help any of my colleagues to grow in our industry.

What is your definition of success?
Success is feeling accomplished that a task was completed. Feeling productive even when the task is not completed at that very moment but taking the steps that gets me closer to completing the task.
What are you passionate about?
Raising my daughters and helping them to grow and be successful young ladies gives me great joy. Seeing their faces first thing in the morning gives me the strength to tackle anything thrown at me and do it with a smile.
Who do you look up to?
Myself. Growing up without parents as they passed away in my teenage years and telling myself to go to school, get an education to better my life, and join the best gang ever (Marine Corps) — I couldn’t ask for more.
What is something you love to do? And something you dislike?
I love to DJ. I am teaching my kids about music and how it can help with expressing your inner feelings through words with a beat. I dislike tardiness.
Share a story about something or someone who has been very impactful on your life or career?
My daughters inspire me to grow as I have taught them that you are never too old to learn something new. From the youngest person to the oldest, there is always someone with a little more knowledge that you can learn from.

On #VeteransDay, and every day, we give thanks to our veterans, like @networkstatic, Siobhan Casey, and Johnny Gonzalez, who were in the @MarForRes, @USArmyReserve, and @USMC. Thank you all for your service, hard work, and dedication.Click To Tweet

The post Celebrating Veterans Day: Docker Employee Profiles appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

A Roadmap for Building Modern Applications

Photo by Alvaro Reyes on Unsplash
No matter what industry you’re in, your application modernization strategy matters. Overlooking or downplaying its importance is a quick way for customers to sour and competitors to gain an edge. It’s why 91% of executives believe their revenues will take a hit without successful digital transformation.
The good news is modern applications offer a clear path forward. Creating a roadmap for your modern application strategy is a critical step toward a more agile and continuous model of software development and delivery – one that’s centered on delivering perpetually expanding value and new experiences to customers. 
This is the first of a series of blogs where we will look at industry viewpoints, different approaches, underlying platforms and real-world stories that are foundational to successful modern application development in order to provide a roadmap for application modernization.
What’s in Your Environment? 
The technology inventory at companies today is as diverse, distributed and complex as ever. It includes a variety of technology stacks, application frameworks, services and languages. During a modernization process, new Open Source technologies are often integrated with legacy solutions. Existing applications need to be maintained and enhanced, modern applications need to be developed and on-ramped, and some applications need to take the gentle off-ramp to retirement. To top that off, applications today can span on-premises, public and hybrid cloud and the edge. 
This is why we view applications as a spectrum. They are built on a variety of services – from multiple cloud resources, managed services and SaaS offerings to containers, configuration formats (Helm charts, Kubernetes YAML and Docker Compose files) and functions. Sure, they can be born in the cloud, but they don’t have to be. No matter the configuration or environment, it’s important to be able to build and manage these applications in a consistent and unified manner. 
Can You Support App Modernization?
While you need to continue supporting existing applications that rely on legacy processes, you also need to ramp up on new application platforms, languages and processes. The more different technologies there are in your environment, the harder it gets to support and maintain everything — particularly without consistent processes and a common underlying platform.
You have a modernization and digital transformation strategy, but are there sufficient resources to support it? Do you have the right talent and skill sets already in place? Is platform and process inconsistency harming your modernization efforts? 
What’s Driving Your Modernization?
Companies of all shapes and sizes have their eyes set on the cloud. It’s no longer an if, but when. In a recent report, Forrester states that nearly half of survey respondents are migrating existing workloads into cloud environments and then improving these applications as part of their current cloud strategy. This helps them prove business value quickly to then expand upon without taking an overwhelming first step. Forrester recommends identifying the compelling events to modernize now (i.e. deliver new customer experiences faster or a directive to move 50% of apps to the cloud) and then setting priorities for the modernization, tackling the highest priority “core” applications first. 
Small steps in the right direction can lead to large scale innovation within your organization. We see this across our customer base at companies including Nationwide, Carnival Corporation and Liberty Mutual.
In future posts of this blog series, we’ll take a closer look at the elements that go into spurring this innovation and bringing about positive results right away and well into the future. In the coming weeks, keep an eye out for new posts on why modern applications are at the heart of digital transformation and industry trends on the state of application development, as well as best practices and real-world customer stories that help to guide modernization strategies. We hope you will follow along!
In the meantime, to learn more about modern application development:

Check out our new eBook on real-world customer stories 
Read the full report from Forrester, “Modernize Core Applications With Cloud” 

New #Docker blog series by @marked_man: A roadmap for building #modernapplications to support #digitaltransformationClick To Tweet

The post A Roadmap for Building Modern Applications appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Depend on Docker for Kubeflow

Run Kubeflow natively on Docker Desktop for Mac or Windows
This is a guest post by Alex Iankoulski, Docker Captain and full stack software and infrastructure architect at Shell New Energies. The views expressed here are his own and are neither opposed or endorsed by Shell or Docker. 
In this blog, I will show you how to use Docker Desktop for Mac or Windows to run Kubeflow. To make this easier, I used my Depend on Docker project, which you can find on Github.
Rationale
Even though we are experiencing a tectonic shift of development workflows in the cloud era towards hosted and remote environments, a substantial amount of work and experimentation still happens on developer’s local machines. The ability to scale down allows us to mimic a cloud deployment locally and enables us to play, learn quickly, and make changes in a safe, isolated environment. A good example of this rationale is provided by Kubeflow and MiniKF.
Overview
Since Kubeflow was first released by Google in 2018, adoption has increased significantly, particularly in the data science world for orchestration of machine learning pipelines. There are various ways to deploy Kubeflow both on desktops and servers as described in its Getting Started guide. However, the desktop deployments for Mac and Windows rely on running virtual machines using Vagrant and VirtualBox. If you do not wish to install Vagrant and VirtualBox on your Mac or PC but would still like to run Kubeflow, then you can simply depend on Docker! This article will show you how to deploy Kubeflow natively on Docker Desktop. 
Setup
Prerequisites
Kubeflow has a hard dependency on Kubernetes and the Docker runtime. The easiest way to satisfy both of these requirements on Mac or Windows is to install Docker Desktop (version 2.1.x.x or higher). In the settings of Docker Desktop, navigate to the Kubernetes tab and check “Enable Kubernetes”:
Fig. 1 – Kubernetes Settings in Docker Desktop
Enabling the Kubernetes feature in Docker Desktop creates a single node Kubernetes cluster on your local machine.
This article offers a detailed walkthrough of setting up Kubeflow on Docker Desktop for Mac. Deploying Kubeflow on Docker Desktop for Windows using Linux containers requires two additional prerequisites: 

Linux shell – to run the bash commands from the Kubeflow installation instructions 
Kfctl and kubectl CLI – to initialize, generate, and apply the Kubeflow deployment

The easiest way to satisfy both of these dependencies is to run a Linux container that has the kfctl and kubectl utilities. A Depend on Docker project was created for this purpose. To start a bash shell with the two CLI’s available, just execute:
docker run -it –rm -v <kube_config_folder_path>:/root/.kube iankoulski/kfctl bash
The remaining setup steps for both Mac and Windows are the same.
Resource Requirements
The instructions for deployment of Kubeflow on a pre-existing Kubernetes cluster specify the following resource requirements:

4 vCPUs
50 GB storage
12 GB memory

The settings in Docker Desktop need to be adjusted to accommodate these requirements as shown below.
Fig. 2 – CPU and Memory settings in Docker Desktop
Fig. 3 – Disk image size setting in Docker Desktop
Note that the settings are adjusted to more than the minimum required resources to accommodate system containers and other applications that may be running on the local machine.
Deployment
We will follow instructions for the kfctl_k8s_istio configuration.

Download your preferred version from the release archive:curl -L -o kfctl_v0.6.2_darwin.tar.gz https://github.com/kubeflow/kubeflow/releases/download/v0.6.2/kfctl_
Extract the archive:tar -xvf kfctl_v0.6.2_darwin.tar.gz
Set environment variables:export PATH=$PATH:$(pwd)export KFAPP=localkfexport CONFIG= https://raw.githubusercontent.com/kubeflow/kubeflow/v0.6-branch/bootstrap/config/kfctl_k8s_istio.0.6.2.yaml
Initialize deployment:kfctl init ${KFAPP} –config=${CONFIG}cd ${KFAPP}kfctl generate all -V

Note: The above instructions are for Kubeflow release 0.6.2 and are meant to use as an example. Other releases would have slightly different archive filename, environment variable names and values, and kfctl commands. Those would be available in the release-specific deployment instructions.

Pre-pull container images (optional)

To facilitate the deployment of Kubeflow locally, we can pre-pull all required Docker images. When the container images are already present on the machine, the memory usage of Docker Desktop stays low. Pulling all images at the time of deployment may cause large spikes in memory utilization and can cause Docker Daemon to run out of resources. Pre-pulling images is especially helpful when running Kubeflow on a 16GB laptop.
To pre-pull all container images, execute the following one-line script in your $KFAPP/kustomize folder:
for i in $(grep -R image: . | cut -d ‘:’ -f 3,4 | uniq | sed -e ‘s/ //’ -e ‘s/^”//’ -e ‘s/”$//’); do echo “Pulling $i”; docker pull $i; done;
Fig. 4 – Pre-pulling Kubeflow container images
Depending on your Internet connection, this could take several minutes to complete. Even if Docker Desktop runs out of resources, restarting it and running the script again will resume pulling the remaining images from where you left off. 
If you are using the kfctl container on Windows, you may wish to modify the one-line script above so it saves the docker pull commands to a file and then execute them from your preferred Docker shell.

Apply Kubeflow deployment to Kubernetes:

cd ${KFAPP}kfctl apply all -V
Fig. 5 – Deployment output and Kubeflow pods – found by executing ‘kubectl get pods –all-namespaces’ – running in Docker Desktop.
Note: An existing deployment can be removed by executing “kfctl delete all -V”

Determine the Kubeflow entrypoint

To determine the endpoint, list all services in the istio-system namespace:kubectl get svc -n istio-system
Fig. 6 – Istio Ingress Gateway service.
The Kubeflow end-point service is through the ingress-gateway service on the NodePort connected with the default HTTP port (80). The Node Port number is 31380. To access Kubeflow use: http://127.0.0.1:31380
Using Kubeflow
The Kubeflow central dashboard is now accessible:
Fig. 7 – Kubeflow dashboard
We can run one of the sample pipelines that is included in Kubeflow. Select Pipelines, then Experiments, and choose Conditional expression (or just click the [Sample] Basic – Conditional expression link on the dashboard screen). 
Fig. 8 – Conditional execution pipeline
Next, click the +Create run button, enter a name (e.g. conditional-execution-test), choose an experiment, and then click Start to initiate the run. Navigate to your pipeline by selecting it from the list of runs.
 Fig. 9 – Conditional execution pipeline run
The completed pipeline run looks similar to Fig. 9 above. Due to the random nature of the coin flip in this pipeline, your actual output is likely to be different. Select a node in the graph to review various assets associated with that node, including its logs.
Conclusion
Docker Desktop enables you to easily run container applications on your local machine, including ones that require a Kubernetes cluster. Kubeflow is a deployment that typically targets larger clusters either in cloud or on-prem environments. In this article we’ve demonstrated how to deploy and use Kubeflow locally on your Docker Desktop. 
References

Docker Desktop
About Kubeflow
MiniKF Rationale
MiniKF
Kubernetes
Kubeflow Getting Started
Vagrant
Virtual Box
Kubeflow deployment instructions
Depend on Docker project
Kfctl container image

Credits
I’d like to thank the following people for their help with this post and related topics:

Yannis Zarkadas, Arrikto 
Constantinos Venetsanopoulos, Arrikto
Josh Bottum, Arrikto
Fabio Nonato de Paula, Shell
Jenny Burcio, Docker
David Aronchick, Microsoft
Stephen Turner, Docker
David Friedlander, Docker

To learn more about Docker Desktop and running Kubernetes with Docker:

Learn about designing your first application in Kubernetes.
Try Play with Kubernetes, powered by Docker.
Learn more about Docker Desktop and the new Docker Desktop Enterprise

How to run #Kubeflow on #DockerDesktop by #DockerCaptain Alex IankoulskiClick To Tweet

The post Depend on Docker for Kubeflow appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

For Liberty Mutual, the Openness and Flexibility of the Cloud Means Better Business Outcomes

We had the chance recently to sit down with the Liberty Mutual Insurance team at their Portsmouth, New Hampshire offices and talk about how they deliver better business outcomes with the cloud and containerization.
At this point, Liberty Mutual has moved about 30 percent of their applications to the cloud. One of big improvements the team has seen with the cloud and Docker is the speed at which developers can develop and deploy their applications. That means better business outcomes for Liberty Mutual and its customers.
Here’s what they told us. You can also catch the highlights in this two-minute video:

On how tech is central to Liberty Mutual’s business
Mark Cressey, SVP and GM, IT Hosting Services: Tech and the digitization it’s allowed has really enabled Liberty Mutual to get deeply ingrained in our customers’ lives and support them through their major life journeys. We’re able to be more predictive of what our customer’s needs and get in front of them as a proactive step. How can we help? How can we assist you? Is this the right coverage? And even to the point where using real time information, we can warn them about approaching windstorms or warn our business customers to get their fleet of vehicles out of the way of a flooding event.
On why moving to the cloud matters
Mark: We’re moving to a multi-cloud or hybrid-cloud environment to get the best set of capabilities for our developers, and in turn our customers. Our goal is to take advantage of the latest innovations in all the major cloud environments, so we need to look at how we can write and deploy our applications in the most portable way possible.
Honey Williams, Director of Engineering: Moving to the cloud has empowered our developers to make decisions about when they’re going to deploy their code, or when they’re going to take this image upgrade that fixes a problem. The fact that they have that control and they’re empowered to do it themselves means less handoffs. And it also means less points of failure.
On balancing technical debt and innovation…
Mark: One of our key challenges is balancing investment between our journey to the cloud and what we need to do to keep our on-premise environments modern. We have many applications that the business relies on that can’t be migrated to cloud or aren’t scheduled to go through a modernization effort anytime soon. We still need to achieve those same goals around digitization agility, speed to market for our existing infrastructure—that we have for our cloud environments.
Eric Drobisewski, Senior Architect: We’ve got this mixed mode in terms of dealing with the technical debt of keeping our existing systems stable and secure, but also innovating and moving things to the cloud in a more digital format so that we can succeed in the future. Balancing both of those worlds and building the bridges between them is a big challenge.
On the journey with Docker…
Eric: For us, Docker first came into our picture back in 2014, so we’ve been at it for roughly five years. In hindsight, we were early adopters of a growing and maturing technology. What we saw was an opportunity to improve application development operations and security, particularly as we looked at the cloud. And then over the last four years, we’ve really seen the transformational value of that.
Mark: At Liberty Mutual, Docker is a key part of our journey to the cloud and application modernization efforts. We’ve deployed over 6,000 business services in Docker to let us drive horizontal scale, allow portability the cloud, and simplify our environment for our developers to get them out of configuring infrastructure and get them into the job of building and deploying business functionality.
Eric: One of the things that stands out to me that containerization and Docker provided for Liberty is the openness and flexibility it’s provided around operating in this cloud native ecosystem. It has allowed us to tap into new technologies and move those quickly and securely into the hands of our dev teams to deliver better business outcomes.
On making it easier for developers…
Mallory Quaintaince, Senior Infrastructure Engineer: Some of our application images can be 5 or 6 GB, and you might say, “Why containerize it then?” But we’re really finding that where we have the biggest gains are with downtime and deploys. Instead of having long outage windows for deploys, we’re able to deploy much faster—on the order of minutes versus hours.
The application density that we can get and the container density that we can get really provide both a lot of performance value. The barrier to entry for developers is very low because being able to write a Docker file, write a Docker image, use a Docker compose file—are something that developers can easily learn in a few hours or less.
Honey: Docker has benefited developers at our company because we’re able to provide the package they need in order to deploy their code easily, really making it seem like magic. That’s really what we want for our development teams. We want them to not have to worry about the extra things associated to where they’re going to put their code and how it’s going to run, and Docker brings that for us.

To learn more about how Docker can help you move your applications to the cloud:

Read the Forrester Research report on Modernizing the Core
Download the Customer Innovation eBook

We interviewed @LibertyMutual about how they are moving 30% of apps to the #cloud with #DockerEnterprise. Here’s what they said:Click To Tweet

The post For Liberty Mutual, the Openness and Flexibility of the Cloud Means Better Business Outcomes appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Docker’s Recommended Sessions for KubeCon 2019

The Docker team is gearing up for another great KubeCon this year in San Diego, November 17-21. As a Platinum sponsor of this year’s event, we are excited to bring Docker employees, community members and Docker captains together to demonstrate and celebrate  the combined impact of Docker and Kubernetes.
Stop by Booth P37 to learn how to leverage the Docker platform to securely build, share and run modern applications for any Kubernetes environment. We will demonstrate Docker Desktop Enterprise and how it accelerates container application development while supporting developer choice. Experts will be on hand to answer questions about Docker Kubernetes Services (DKS), a secure and production-ready Kubernetes environment. Or come to learn more about Docker’s contributions to Kubernetes while picking up some great Docker swag.
Learn More from Docker Experts
KubeCon will also provide a great opportunity to learn from industry experts and hear from people who run production applications on Kubernetes. Here’s a helpful guide from the Docker team of our recommended talks:
Monday, Nov 18

Kubernetes 101 Workshop – Docker Captain Nigel Poulton

Tuesday, Nov 19

Securing the Software Supply Chain with in-toto – Justin Cappos & Marina Moore, NYU  
Introduction to Windows Containers in Kubernetes – Michael Michael, VMware & Deep Debroy, Docker 
Using TUF to Mitigate Repository Compromises – Justin Cappos, NYU 
Superpowers for Windows Containers – Deep Debroy & Jean Rouge, Docker 
Extending containerd – Samuel Karp & Maksym Pavlenko, Amazon 
Sharing is Caring: How to Begin Speaking at Conferences – Jenny Burcio & Ashlynn Polini, Docker

Wednesday, Nov 20

Application Observability for DevSecOps – Sabree Blackmon, Docker
Redesigning Notary in a Multi-registry World – Justin Cormack, Docker 

Thursday, May 23

Security Beyond Buzzwords: How to Secure Kubernetes with Empathy? – Pushkar Joglekar, Visa
containerd Mini Summit – Derek McGowen, Docker & Phil Estes, IBM & Lantao Liu, Google & Yu-Ju Hong, Google
Introduction to Notary – Justin Cormack, Docker

We hope that helps you navigate through the hundreds of sessions at KubeCon this year. See you there!
To learn more about Kubernetes and Docker:

Get your free Docker Kubernetes Service Cheatsheet
Download the eBook: Kubernetes Made Easy with Docker Enterprise

Attending #KubeCon? Here’s your #Docker guide to help you navigate the conference:Click To Tweet

The post Docker’s Recommended Sessions for KubeCon 2019 appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Learn About Modern Apps on Azure with Docker at Microsoft Ignite

The Docker team will be on the show floor at Microsoft Ignite the week of November 4. We’ll be talking about the state of modern application development, how to accelerate innovation efforts, and the role containerization, Docker, and Microsoft Azure play in powering these initiatives.
Come by booth #2414 at Microsoft Ignite to check out the latest developments in the Docker platform. Learn why over 1.8 million developers build modern applications on Docker, and over 800 enterprises rely on Docker Enterprise for production workloads. 
At Microsoft Ignite, we will be talking about:
How to Develop and Deliver Modern Applications for Azure Kubernetes Service (AKS)
Docker Enterprise 3.0 shipped back in April 2019, making it the first and only desktop-to-cloud container platform in the market that lets you build and share any application and securely run them anywhere – from hybrid cloud to the edge. At Microsoft Ignite, we’ll have demos that shows how Docker Enterprise 3.0 simplifies Kubernetes for Azure Kubernetes Service (AKS) and enables companies to more easily build modern applications with Docker Desktop Enterprise and Docker Application. 
Learn how to accelerate your journey to the cloud with Docker’s Dev Team Starter Bundle for AKS. This offer combines industry-leading Docker Desktop Enterprise (DDE) and Docker Trusted Registry (DTR) to ensure success with modern app development and delivery lifecycle.

Unifying the Dev to Ops Experience
There’s no question that modern, distributed applications are becoming more complex.  You need a seamless and repeatable way to build, share and run all of your company’s applications efficiently. A unified end-to-end platform addresses these challenges by improving collaboration, providing greater control, and ensuring security across the entire application lifecycle.
At Ignite, we’ll show you how your developers can easily build containerized applications with Docker Enterprise – without disrupting their existing workflows. And for IT ops pros, we’ll explain how you can deploy new services faster with the confidence of knowing security has been baked in from the start – all under one unified platform. Talk to a Docker expert at Microsoft Ignite about how Docker Enterprise provides the developer tooling, security and governance, and ease of deployment needed for a seamless dev to ops workflow. 
We hope to see you at the show! 
Want a quick preview? Watch the Docker Enterprise 3.0 demo:

You can also dive deeper with these resources: 

Learn more about Docker App – Docker App: Cloud Native Application Bundles (CNAB).
Watch the webinar series: Drive High-Velocity Innovation with Docker Enterprise 3.0

Learn how #Docker helps you build modern apps and modernize existing apps on #Azure at #MSIgniteClick To Tweet
 
The post Learn About Modern Apps on Azure with Docker at Microsoft Ignite appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Don’t Be Scared of Kubernetes

5 Reasons You Might Be Afraid to Get Started with Kubernetes
Kubernetes has the broadest capabilities of any container orchestrator available today, which adds up to a lot of power and complexity. That can be overwhelming for a lot of people jumping in for the first time – enough to scare people off from getting started. There are a few reasons it can seem intimidating:

It’s complicated, isn’t it? As we noted in a previous post, jumping into the cockpit of a state-of-the-art jet puts a lot of power under you, but how to actually fly the thing is not obvious. If you’ve never done more than play a flight simulator game, it can be downright scary.
Is it production-ready? Everyone is talking about Kubernetes, but it’s only emerged as a major technology in the past few years. Many companies take a wait-and-see approach on new technologies. Building out a Kubernetes deployment on your own means solving challenging problems without enterprise support. 
Do I have the people and skills to support it? IT teams are just beginning to learn Kubernetes. If it’s complicated, it means you’ll need people with the right experience to support it. According to industry data, jobs for Kubernetes were up 176 percent in 2018. Anyone with Kubernetes experience is in high demand, so they’re hard to hire.
Does it automate and replace my job in IT? Kubernetes does automate a lot of tasks tied to application infrastructure and allows developers and DevOps teams to treat infrastructure as code. Anyone who builds and maintains application infrastructure could look at it and see a future where their job isn’t relevant.
Is it just a fad? Some technologies have a brief moment where they shine, but fade into relative obscurity. Interest in Objective-C rose quickly in 2010 and 2011, but a few years later it barely registers in conversations on the popular Stack Overflow site. Kubernetes is popular now, but will it be in 5 years?

5 Reasons You Can Get Started with Kubernetes Today
Thankfully, Kubernetes is a robust platform with broad industry support both in the Open Source community and beyond. Here are 5 reasons you don’t need to be scared to get started with Kubernetes:

It doesn’t have to be complicated. Docker makes it easy to on-board and use Kubernetes for both Day 1 and Day 2 operations. With the Docker platform, Kubernetes is easy for both dev and ops teams to use as their default orchestration platform.
Big companies use it at scale, in production. GSK runs a global data science platform on Kubernetes. Visa is building a machine-learning and analytics platform on Kubernetes. McKesson, the #6 firm on the Fortune 500, has an internal developer platform based on Kubernetes. All of these companies run Kubernetes on Docker Enterprise for critical workloads.
You can get started without knowing everything. You don’t need detailed knowledge or certifications to get going. The Docker platform provides a highly available and secure set up of Kubernetes out-of-the-box, surfaces the controls and features you need at the beginning, and lets you begin using Kubernetes from the desktop to the cloud right away. As your team’s skills grow, they can still directly interact with the certified Kubernetes distribution underneath – giving them full control over the advanced configuration and settings.
It helps ops teams grow professionally. Kubernetes helps expand the role of IT ops in an organization. With Kubernetes and Docker, you can provide a complete platform to your developers that works on any machine or any cloud.
Kubernetes has a mature ecosystem. All the major cloud providers support Kubernetes. Docker, Red Hat/IBM, VMware and other vendors have Kubernetes-specific solutions. Hundreds of solutions now plug in to Kubernetes for everything from storage, networking, monitoring, and alerting to security, IoT and AI.

If you’re looking at Kubernetes, there’s never been a better time to get started – that’s after you are done with the Halloween parties and Trick or Treating!
To learn more about how Docker can help you get started with Kubernetes:

Learn about designing your first application in Kubernetes.
Read the Kubernetes Made Easy eBook.
Follow this tutorial and quickstart guide. 

Don’t be scared of #Kubernetes. Here’s 5 reasons to get started with Kubernetes today:Click To Tweet

The post Don’t Be Scared of Kubernetes appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Understanding Kubernetes Security on Docker Enterprise 3.0

This is a guest post by Javier Ramírez, Docker Captain and IT Architect at Hopla Software. You can follow him on Twitter @frjaraur or on Github.
Docker began including Kubernetes with Docker Enterprise 2.0 last year. The recent 3.0 release includes CNCF Certified Kubernetes 1.14, which has many additional security features. In this blog post, I will review Pod Security Policies and Admission Controllers.
What are Kubernetes Pod Security Policies?
Pod Security Policies are rules created in Kubernetes to control security in pods. A pod will only be scheduled on a Kubernetes cluster if it passes these rules. These rules are defined in the  “PodSecurityPolicy” resource and allow us to manage host namespace and filesystem usage, as well as privileged pod features. We can use the PodSecurityPolicy resource to make fine-grained security configurations, including:

Privileged containers.
Host namespaces (IPC, PID, Network and Ports).
Host paths and their permissions and volume types.
User and group for containers process execution and setuid capabilities inside container.
Change default containers capabilities.
Behaviour of Linux security modules.
Allow host kernel configurations using sysctl.

The Docker Universal Control Plane (UCP) 3.2 provides two Pod Security Policies by default – which is helpful if you’re just getting started with Kubernetes.These default policies will allow or prevent execution of privileged containers inside pods. To manage Pod Security Policies, you need to have administrative privileges on the cluster.
Reviewing and Configuring Pod Security Policies
To review defined Pod Security Policies in a Docker Enterprise Kubernetes cluster, we connect using an administrator’s UCP Bundle:
$ kubectl get PodSecurityPolicies
NAME           PRIV    CAPS   SELINUX    RUNASUSER   FSGROUP    SUPGROUP   READONLYROOTFS   VOLUMES                                                
privileged     true    *      RunAsAny   RunAsAny    RunAsAny   RunAsAny   false            *
unprivileged   false          RunAsAny   RunAsAny    RunAsAny   RunAsAny   false            *
These default policies control the execution of privileged containers inside pods.
Let’s create a policy to disallow execution of containers using root for main process. If you are not familiar with Kubernetes, we can reuse the “unprivileged” Pod Security Policy content as a template:
$ kubectl get psp  privileged -o yaml –export > /tmp/mustrunasnonroot.yaml
We removed non-required values and will have the following Pod Security Policy file: /tmp/mustrunasnonroot.yaml 
Change the runAsUser rule with “MustRunAsNonRoot” value:
apiVersion: extensions/v1beta1
kind: PodSecurityPolicy
metadata:  
  name: psp-mustrunasnonroot
spec:
  allowPrivilegeEscalation: false
  allowedHostPaths:
  – pathPrefix: /dev/null
    readOnly: true
  fsGroup:
    rule: RunAsAny
  hostPorts:
  – max: 65535
    min: 0
  runAsUser:
    rule: MustRunAsNonRoot
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  volumes:
  – ‘*’
We create this new policy as an administrator user in the current namespace (if none was selected, the policy will be applied to the “default” namespace):
$ kubectl create -f mustrunasnonroot.yaml                      
podsecuritypolicy.extensions/psp-mustrunasnonroot created
Now we can review Pod Security Policies:
$ kubectl get PodSecurityPolicies –all-namespaces
NAME               PRIV    CAPS   SELINUX    RUNASUSER          FSGROUP    SUPGROUP   READONLYROOTFS   VOLUMES
psp-mustrunasnonroot   true    *      RunAsAny   MustRunAsNonRoot   RunAsAny   RunAsAny   false            *
privileged         true    *      RunAsAny   RunAsAny           RunAsAny   RunAsAny   false            *
unprivileged       false          RunAsAny   RunAsAny           RunAsAny   RunAsAny   false            *
Next, we create a Cluster Role that will allow our test user to use the Pod Security Policy we just created, using role-mustrunasnonroot.yaml.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: role-mustrunasnonroot
rules:
– apiGroups:
  – policy
  resourceNames:
  – psp-mustrunasnonroot
  resources:
  – podsecuritypolicies
  verbs:
  – use
Next, we add a Cluster Role Binding to associate a new non-admin role to our user (jramirez for this example). We created rb-mustrunasnonroot-jramirez.yaml with following content:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rb-mustrunasnonroot-jramirez
  namespace: default
roleRef:
  kind: ClusterRole
  name: role-mustrunasnonroot
  apiGroup: rbac.authorization.k8s.io
subjects:
– kind: User
  name: jramirez
  namespace: default
We create both the Cluster Role and Cluster Role Binding to allow jramirez to use the defined Pod Security Policy:
$ kubectl create -f role-mustrunasnonroot.yaml
clusterrole.rbac.authorization.k8s.io/role-mustrunasnonroot created

$ kubectl create -f rb-mustrunasnonroot-jramirez.yaml
rolebinding.rbac.authorization.k8s.io/rb-mustrunasnonroot-jramirez created
Now that we’ve applied this policy, we should delete the default rules (privileged or unprivileged). In this case, the default “ucp:all:privileged-psp-role” was applied.
$ kubectl delete clusterrolebinding ucp:all:privileged-psp-role
clusterrolebinding.rbac.authorization.k8s.io “ucp:all:privileged-psp-role” deleted
We can review jramirez’s permissions to create new pods on the default namespace.
$ kubectl auth can-i create pod –as jramirez
yes
Now we can create a pod using the following manifest from nginx-as-root.yaml:
apiVersion: v1
kind: Pod
metadata:
 name: nginx-as-root
 labels:
   lab: nginx-as-root
spec:
 containers:
 – name: nginx-as-root
   image: nginx:alpine
We’ll now need to login as jramirez using ucp-bundle, our test non-admin user. We can then test deployment to see if it works:
$ kubectl create -f nginx-as-root.yaml
pod/nginx-as-root created
We will get a CreateContainerConfigError because the image doesn’t have any users defined, so the command will try to create a root container, which the policy blocks.
Events:
 Type     Reason     Age                    From               Message
 —-     ——     —-                   —-               ——-
 Normal   Scheduled  6m9s                   default-scheduler  Successfully assigned default/nginx-as-root to vmee2-5
 Warning  Failed     4m12s (x12 over 6m5s)  kubelet, vmee2-5   Error: container has runAsNonRoot and image will run as root
 Normal   Pulled     54s (x27 over 6m5s)    kubelet, vmee2-5   Container image “nginx:alpine” already present on machine
What can we do to avoid this? As a best practice,  we should not allow containers with root permissions. However, we can create an Nginx image without root permissions. Here’s a lab image that will work for our purposes (but it’s not production ready):
FROM alpine

RUN addgroup -S nginx
&& adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx -u 10001 nginx
&& apk add –update –no-cache nginx
&& ln -sf /dev/stdout /var/log/nginx/access.log
&& ln -sf /dev/stderr /var/log/nginx/error.log
&& mkdir /html

COPY nginx.conf /etc/nginx/nginx.conf

COPY html /html

RUN chown -R nginx:nginx /html

EXPOSE 1080

USER 10001

CMD [“nginx”, “-g”, “pid /tmp/nginx.pid;daemon off;”]
We created a new user nginx to launch the nginx main process under this one (in fact, the nginx installation will provide a special user www-data or nginx, depending on base operating system). We added the user under a special UID because we will use that UID on Kubernetes to specify the user that will be used to launch all containers in our nginx-as-nonroot pod.
You can see that we are using a new nginx.conf. Since we are not using root to start Nginx, we can’t use ports below 1024. Consequently, we exposed port 1080 in the Dockerfile. This is the simplest Nginx config required.
worker_processes  1;

events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;
   server {
       listen       1080;
       server_name  localhost;

       location / {
           root   /html;
           index  index.html index.htm;
       }

       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   /html;
       }

   }

}
We added a simple index.html with just one line:
$ cat html/index.html  
It worked!!
And our pod definition has new security context settings:
apiVersion: v1
kind: Pod
metadata:
 name: nginx-as-nonroot
 labels:
   lab: nginx-as-root
spec:
 containers:
 – name: nginx-as-nonroot
   image: frjaraur/non-root-nginx:1.2
   imagePullPolicy: Always
 securityContext:
   runAsUser: 10001
We specified a UID for all containers in that pod. Therefore, the Nginx main process will run under 10001 UID, the same one specified in image.
If we don’t specify the same UID, we will get permission errors because the main process will use pod-defined settings with different users and Nginx will not be able to manage files:
nginx: [alert] could not open error log file: open() “/var/lib/nginx/logs/error.log” failed (13: Permission denied)
2019/10/17 07:36:10 [emerg] 1#1: mkdir() “/var/tmp/nginx/client_body” failed (13: Permission denied)
If we do not specify any security context, it will use the image-defined UID with user 10001. It will work correctly since the process doesn’t require root access.  
We can go back to the previous situation by deleting the custom Cluster Role Binding we created earlier (rb-mustrunasnonroot-jramirez) and adding the UCP role again:
ucp:all:privileged-psp-role
Create rb-privileged-psp-role.yaml with following content:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ucp:all:privileged-psp-role
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: privileged-psp-role
subjects:
– kind: Group
  name: system:authenticated
  apiGroup: rbac.authorization.k8s.io
– kind: Group
  name: system:serviceaccounts
  apiGroup: rbac.authorization.k8s.io
And create the ClusterRoleBinding object using $ kubectl create -f rb-privileged-psp-role.yaml as administrator.
Kubernetes Admission Controllers
Admission Controllers are a feature added to Kubernetes clusters to manage and enforce default resource values or properties and prevent potential risks or misconfigurations. They occur before workload execution, intercepting requests to validate or modify its content. The Admission Controllers gate user interaction with cluster API, applying policies to any actions on Kubernetes.
We can review which Admission Controllers are defined in Docker Enterprise by taking a look at the ucp-kube-apiserver command-line used to start this Kubernetes API Server container. On any of our managers, we can describe container configuration:
$ docker inspect ucp-kube-apiserver –format ‘json {{ .Config.Cmd }}’  
json [–enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,
NodeRestriction,ResourceQuota,PodNodeSelector,PodSecurityPolicy, UCPAuthorization,CheckImageSigning,UCPNodeSelector


These are the  Admission Controllers deployed with Docker Enterprise Kubernetes:

NamespaceLifecycle will manage important namespace features. It will prevent users from removing the default, kube-system and kube-public namespaces, and it will provide the integrity for other namespaces deletion, removing all objects on it prior to deletion (for example). It will also prevent new object creation on a namespace that is in the process of being removed (it can take time because running objects must be removed).
LimitRanger will manage default resource requests to pods that don’t specify any. It also verifies that Namespace associated resources doesn’t pass its defined limit.  
ServiceAccount will associate pods to a default ServiceAccount if they don’t provide one, and ensure that one exists if it is present on Pod definition. It will also manage API account accessibility.
PersistentVolumeLabel will add special labels for regions or zones to ensure that right volumes are mounted per region or zone.
DefaultStorageClass will add a default StorageClass when none was declared, and a PersistentVolumeClaim ask for storage.
DefaultTolerationSeconds will set default pod toleration values, evicting nodes not ready or unreachable for more than 300 seconds.
NodeRestriction will allow only kubelet modifications to its own Node or Pods.
ResourceQuota will manage resource quota limits not reached within namespaces.
PodNodeSelector provides default node selections within namespaces.
PodSecurityPolicy reviews Pod Security Policies to determine if a Pod can be executed or not.
UCPAuthorization provides UCP Roles to Kubernetes integration, preventing deletion of system-required cluster roles and bindings. It will also prevents using host paths volumes or privileged containers for non-admins (or non-privileged accounts), even if it is allowed in Pod Security Policies.  
CheckImageSigning prevents execution of Pods based on unsigned images by authorized users.
UCPNodeSelector manages execution of non-system Kubernetes workloads only on non-mixed UCP hosts.

The last few are Docker designed and created to ensure UCP and Kubernetes integration and improved access and security. These Admission Controllers will be set up during installation. They can’t be disabled since doing so can compromise cluster security, or even break some unnoticeable but important functionalities.
As we learned, Docker Enterprise 3.0 now provides Kubernetes security features by default that will complement and improve users interaction with the cluster, maintaining the highest security environment out-of-box.
To learn more about you can run Kubernetes with Docker Enterprise:

Read the Kubernetes Made Easy eBook.
Try Play with Kubernetes, powered by Docker.

#Kubernetes Security on Docker Enterprise 3.0 by #DockerCaptain @frjaraurClick To Tweet

The post Understanding Kubernetes Security on Docker Enterprise 3.0 appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Designing Docker Hub Two-Factor Authentication

We recognize the central role that Docker Hub plays in modern application development and are working on many enhancements around security and content. In this blog post we will share how we are implementing two-factor authentication (2FA). 
Using Time-Based One-Time Password (TOTP) Authentication
Two-factor authentication increases the security of your accounts by requiring two different forms of validation that you are the rightful account owner. For Docker Hub, that means providing something you know (your username and a strong password) and something you have in your possession. Since Docker Hub is used by millions of developers and organizations for storing and sharing content – sometimes company intellectual property – we chose to use one of the more secure models for 2FA: software token (TOTP) authentication. 
TOTP authentication is more secure than SMS-based 2FA, which has many attack vectors and vulnerabilities. TOTP requires a little more upfront setup, but once enabled, it is just as simple (if not simpler) than text message-based verification. It requires the use of an authenticator application, of which there are many available. These can be apps downloaded to your mobile device (e.g. Google Authenticator or Microsoft Authenticator) or it can be a hardware key (e.g. YubiKey). To learn about these solutions: 

Download Google Authenticator: 

Apple App Store
Google Play

Download Microsoft Authenticator:

Apple App Store
Google Play

Learn more about YubiKeys from Yubico

Enabling Two-Factor Authentication in Docker Hub
Two-factor authentication is enabled in your Docker Hub Account Settings, under the Security tab. 

The basis of TOTP is that you will need to share a one-time secret between Docker Hub and your authenticator app – either through a unique QR code or 32-character string. After this initial synchronization, your authenticator will run an algorithm to change the passcode at a preset interval (typically under a minute) so it is now a time-sensitive piece of information only you have access to – the second component of 2FA. Subsequent logins into Docker Hub will ask for this passcode in addition to your password.

As the initial synchronization is an important part of the TOTP process, it is also a piece of information that is very sensitive; you do not want someone else gaining access to this initial secret. As a result, we do not share the code after your initial synchronization has been confirmed. If you lose your mobile device or access to your authenticator app, you will not be able to login with 2FA. 
This is why it is critical to save your recovery code. You will need the recovery code that is presented when you enable 2FA the first time. Save it somewhere safe so you can recover your account when needed! 
One additional note: Many Docker users access their Hub account through the CLI. Once you’ve enabled 2FA, you will need to create a personal access token in order to log into your Hub account from the CLI. Traditional username and password combinations will not work once you have enabled 2FA. Personal access tokens can be created from the same Security tab under Account Settings.  
For detailed instructions on enabling and using 2FA during the beta, please refer to the following:

Release notes
Documentation

What’s Next for Docker Hub
We’d love for you to try the two-factor authentication beta in Docker Hub today and give us feedback at https://github.com/docker/hub-feedback/issues 
In addition to moving 2FA to general availability in the near future, we are also preparing to add support for further authentication controls:

WebAuthn support: This allows you to use a security key or supported browsers with WebAuthn support for 2FA
Mandatory enforcement of 2FA for an organization: This allows organization administrators to enforce 2FA for all of their members and provide methods for remediating anyone who is not in compliance

To learn more about Docker Hub:

Read more about Docker Hub
Explore the Docker Hub documentation 
Get started with Docker by creating your Hub account

New! How Docker designed and implemented #DockerHub Two-Factor AuthenticationClick To Tweet

The post Designing Docker Hub Two-Factor Authentication appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/