Vulnerability Alert: Avoiding “Dirty Pipe” CVE-2022-0847 on Docker Engine and Docker Desktop

You might have heard about a new Linux vulnerability that was released last week, CVE-2022-0847, aka “Dirty Pipe”. This vulnerability overwrites supposedly read-only files in the Linux kernel host, which could enable attackers to modify files inside the host images from the container instance.

If you use Docker Engine natively, we recommend you should update your Linux OS to a version that has patched the vulnerability, e.g. Linux 5.16.11, 5.15.25, and 5.10.102. 

For those of you using Docker Desktop, we recently released a patch of our own for Mac and for Windows.

Docker Desktop for Mac – update to the latest releaseDocker Desktop for Windows – update to the latest release If you have enabled WSL2 – you need to update the kernel from Microsoft as well. 

To read more about the vulnerability itself, the blog by Max Kellerman provides the details and the blog by Rory McKune shows how this vulnerability could be exploited on containers. 
The post Vulnerability Alert: Avoiding “Dirty Pipe” CVE-2022-0847 on Docker Engine and Docker Desktop appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Speed boost achievement unlocked on Docker Desktop 4.6 for Mac

Introducing virtiofs

The 4.6 release of Docker Desktop for Mac contains a number of changes that drastically improve file sharing performance for macOS users. Firstly, developers now have the option of using a new experimental file sharing implementation called virtiofs (the current default is gRPC-FUSE). Secondly, improvements have been made to the way that files are synced between the macOS host and Docker VM. During testing with our amazing macOS community of users, we have observed that these changes have reduced the time taken to complete filesystem operations by up to 98%.

For developers, these incredible gains in speed mean less time waiting for filesystem operations to complete (or building project-specific workarounds to improve performance) and more time focusing on innovation!

Understanding common developer workflows

A common developer workflow when using technologies like Symfony or React is to edit source code located on the macOS host while running the app itself in a Docker container. The source code is shared between the host and the container by using Docker volumes, with a command like the following:

docker run -v /Users/me:/code -p 8080:8080 my-symfony-app

This allows the developer to edit their source code, save the changes and immediately see the results in their browser. Changes made to files located on the host system must propagate quickly and reliably to the container file system for the developer to optimize productivity and have a good user experience. This is where file sharing performance is absolutely critical.

Big performance improvements

Performance is vital when application source code is shared between the host and container. For example when a developer uses the Symfony PHP framework, edits the source code and then reloads the page in the browser, the web-server in the container must re-read many PHP files stored on the host. When considering that modern dependency management can easily bring 10k – 100k files into a project (which linearly increases the performance penalty), this can result in poor performance as the host and container keep in sync via the volume.

The recent changes to Docker Desktop for Mac, including the usage of virtiofs, alleviate this problem and bring drastic improvements to file system performance. Specifically, developers working with an early preview of Docker Desktop 4.6 with virtiofs enabled and changes to file syncing included have observed:

A 90% improvement in the time taken to complete a 284MB MySQL import (3m 16s to 18s)An 87% improvement in the time taken to run ‘composer install’ in a large codebase (1m 27s to 11s)An 80% improvement in the time taken to boot a monolithic Typescript app (1m 30s to 18s)

And here are some of the comments we’ve heard from users: 

“This works great on my mac mini M1!, running migrations on my laravel instance is now instant…instead of running for minutes.” (Source: Github user feedback)“My development setup is ridiculously fast now. Thanks everyone!” (Source: Github user feedback)“Looking forward to seeing this enhancement land in a released build. It was like night and day! .” (Source: Github user feedback)

How to enable virtiofs

Virtiofs is only available to users of the following macOS versions:

macOS 12.2 and above (for Apple Silicon)macOS 12.3 and above (for Intel)

To enable virtiofs in Docker Desktop:

Ensure that you are using Docker Desktop version 4.6, available hereNavigate to ‘Preferences’ (the gear icon) > ‘Experimental Features’Select the ‘Use the new Virtualization framework’ and ‘Enable VirtioFS accelerated directory sharing’ togglesClick ‘Apply & Restart’

Your feedback is needed!

Virtiofs is accessible today within Docker Desktop for Mac (version 4.6) and available to all users including Docker Personal free users as well as Docker Pro, Team and Business paid subscription users. 

Please download it, give it a try and let us know how it goes. If you discover any problems, please report them on the Mac filesystem performance thread on our public roadmap. For the moment, we are aware of an outstanding issue where containers running with virtiofs can fail due to permission errors. We have released a fix for this in an experimental Desktop build to the Mac filesystem performance thread and will confirm its stability in the coming days.

Likewise, we’re always interested to hear of any performance benchmarks that you may use to test out virtiofs !

Download button for Desktop 4.6

Thanks to our macOS community

We’d like to say a massive thank you to our macOS community of users for providing brilliant feedback and testing out the feature so rigorously. In particular, the excellent analysis of file system performance conducted by Konstantinos Tsanaktsidis led to valuable insights around file syncing.
The post Speed boost achievement unlocked on Docker Desktop 4.6 for Mac appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Docker: Nine Years YOUNG

Nine years ago today, March 15, 2013, Solomon Hykes, the founder of Docker, first demoed Docker publicly to the world at PyCon. On stage Solomon noted that, for developers, “shipping to the server is hard,” and thus he and the early team designed Docker to help developers more easily build, share, and run any app, anywhere. The rest, as they say, is history.

Fast forward to today, and thanks to Solomon, hundreds of Docker employees past and present, and millions of developers, community members, contributors, customers, and partners, we are able to celebrate Docker’s ninth birthday and can look forward to many more to come. And while our journey these last nine years has been anything but a straight line, our re-focusing in 2019 on the needs of developers is starting to bear fruit across our community, product, customers, and business.

Sustainably growing Docker was the critical desired outcome of our re-focusing in 2019. The changes we’ve made to our product, pricing, and licensing since then have enabled us to sustainably grow the business while continuing to grow the Docker developer community. To wit, growing sustainably enables us to continue to serve 100% for free 10 million registered Docker developers, 35 million Docker Engine downloads / month, 14 PB of container image storage, 31 PB / month in container image network egress, and much more.

In addition to investing in the community, sustainably growing our business enables us to increase our investment in our product for developers. Since 2019, you’ve seen us consistently deliver against our public product roadmap – most recently Docker Desktop for Linux and a 6X improvement in performance in Docker Desktop for Mac – and there’s much more to come! Be sure to swing by the Docker Community All Hands on March 31 for more birthday celebrations and exciting announcements, and there’s even more to share at DockerCon on May 10.

Happy ninth birthday, Docker community! Here’s to many more years in which we together build, share, and run!

sj

DockerCon Live 2022  

Join us for DockerCon Live 2022 on Tuesday, May 10. DockerCon Live is a free, one day virtual event that is a unique experience for developers and development teams who are building the next generation of modern applications. If you want to learn about how to go from code to cloud fast and how to solve your development challenges, DockerCon Live 2022 offers engaging live content to help you build, share and run your applications. Register today at https://www.docker.com/dockercon/
The post Docker: Nine Years YOUNG appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Docker Business now available for purchase on the Amazon Web Services Marketplace

Today, Docker and Amazon are happy to announce the availability of Docker Business on the Amazon Web Services (AWS) Marketplace. This is a huge step in providing more choice and flexibility to Docker and AWS customers, so you can procure the Docker Application Development Platform – including leading tools, services, integrations, and content – through your preferred channel.

Docker Business was launched in August 2021, as part of Docker’s new product subscription tiers. It addresses challenges faced by organizations that require developer management and software security at scale without impacting developer productivity and collaboration.

Now that Docker Business is on AWS Marketplace, customers will benefit from an accelerated purchase and procurement process, better visibility and control over your tech stack, and even the ability for AWS Enterprise Discount Plan (EDP) members to utilize incentives related to their committed yearly spend on a platform that millions of developers already know and love.

This announcement is just another step towards our growing ecosystem partnership with AWS, which already includes the ability to build and deploy applications with Docker Desktop and Amazon ECS on AWS Fargate, the availability of Docker Official Images on AWS ECR, and Docker’s Graviton ready designation.

What do I get with Docker Business?

Docker Business helps organizations build modern, secure, and reliable applications without compromising on development speed, flexibility, or trust. It includes the Docker Application Development Platform with added enterprise-grade features like:

Centralized user management and visibility controlsRegistry and image access managementSingle sign-onAdvanced securityPrioritized support

Read more about Docker Business here.

How do I purchase on AWS Marketplace?

You can access the Docker Business listing on AWS Marketplace. After signing into your AWS account, “Configure your Software Contract” and follow the steps from there. 

Once your purchase is complete, activate your subscription and you’re good to go!

Resellers looking to purchase via AWS Marketplace will need to work through our distributor, Nuaware. For more information about purchasing with a Docker reseller, read this blog.

As mentioned, we will continue to work with Amazon to increase the collaboration between Docker and AWS. Check out what we have coming in our public roadmap.

DockerCon Live 2022  

Join us for DockerCon Live 2022 on Tuesday, May 10. DockerCon Live is a free, one day virtual event that is a unique experience for developers and development teams who are building the next generation of modern applications. If you want to learn about how to go from code to cloud fast and how to solve your development challenges, DockerCon Live 2022 offers engaging live content to help you build, share and run your applications. Register today at https://www.docker.com/dockercon/
The post Docker Business now available for purchase on the Amazon Web Services Marketplace appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Docker’s Response to the Invasion of Ukraine

Docker is closely following the events surrounding the Russian invasion of Ukraine. The community of Docker employees, Docker Captains, developers, customers, and partners is committed to creating an open, collaborative environment that fosters the free and peaceful exchange of ideas. The tragedy unfolding in Ukraine is in opposition to what our community stands for and weighs heavily on our minds and hearts.

Docker stands with the members in our Ukrainian community and the sovereign nation of Ukraine. As the situation continues to evolve, we want to provide an update on Docker’s response. We will not do business with Russian companies during this period. As such, we have removed the ability to purchase Docker subscriptions from Russia and Belarus. We are continuing to monitor the situation and will keep you informed with updates from Docker. 

Additionally, we are committed to supporting Ukraine’s fight for continued sovereignty and independence. On behalf of all Docker employees, we are making donations to UNICEF , Razom and Doctors without Borders earmarked to help Ukrainian citizens. 

#StandWithUkraine

The post Docker’s Response to the Invasion of Ukraine appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

How Kubernetes works under the hood with Docker Desktop

Docker Desktop makes developing applications for Kubernetes easy. It provides a smooth Kubernetes setup experience by hiding the complexity of the installation and wiring with the host. Developers can focus entirely on their work rather than dealing with the Kubernetes setup details. 

This blog post covers development use cases and what happens under the hood for each one of them. We analyze how Kubernetes is set up to facilitate the deployment of applications, whether they are built locally or not, and the ease of access to deployed applications.

1. Kubernetes setup

Kubernetes can be enabled from the Kubernetes settings panel as shown below.

Checking the Enable Kubernetes box and then pressing Apply & Restart triggers the installation of a single-node Kubernetes cluster. This is all a developer needs to do.

What exactly is happening under the hood? 

Internally, the following actions are triggered in the Docker Desktop Backend and VM:

Generation of certificates and cluster configurationDownload and installation of Kubernetes internal componentsCluster bootupInstallation of additional controllers for networking and storage

The diagram below shows the interactions between the internal components of Docker Desktop for the cluster setup.

Generating cluster certs, keys and config files

Kubernetes requires certificates and keys for authenticated connections between its internal components, and with the outside. Docker Desktop takes care of generating these server and client certificates for the main internal services: kubelet (node manager), service account management, frontproxy, api server, and etcd components.

Docker Desktop installs Kubernetes using kubeadm, therefore it needs to create the kubeadm runtime and cluster-wide configuration. This includes configuration for the cluster’s network topology, certificates, control plane endpoint etc.  It uses Docker Desktop-specific naming and is not customizable by the user. The current-context, user and cluster names are always set to docker-desktop while the global endpoint of the cluster is using the DNS name https://kubernetes.docker.internal:6443. Port 6443 is the default port the Kubernetes control plane is bound to. Docker Desktop forwards this port on the host which facilitates the communication with the control plane as it would be installed directly on the host.

Download and installation of Kubernetes components 

Inside the Docker Desktop VM, a management process named Lifecycle service takes care of deploying and starting services such as Docker daemon and notifying their state change.

Once the Kubernetes certificates and configuration have been generated, a request is made to the Lifecycle service to install and start Kubernetes. The request contains the required certificates (Kubernetes PKI) for the setup.

The lifecycle service then starts pulling all the images of the Kubernetes internal components from Docker Hub. These images contain binaries such as kubelet, kubeadm, kubectl, crictl etc which are extracted and placed in `/usr/bin`.

Cluster bootup

Once these binaries are in place and the configuration files have been written to the right paths, the Lifecycle service runs `kubeadm init` to initialize the cluster and then start the kubelet process. As this is a single-node cluster setup, only one kubelet instance is being run.

The Lifecycle service then waits for the following system pods to be running in order to notify Docker Desktop host service that Kubernetes is started: coredns, kube-controller-manager and the kube-apiserver. 

Install additional controllers

Once Kubernetes internal services have started, Docker Desktop triggers the installation of additional controllers such as storage-provisioner and vpnkit-controller. Their roles concern persisting application state between reboots/upgrades and how to access applications once deployed.

Once these controllers are up and running, the Kubernetes cluster is fully operational and the Docker Dashboard is notified of its state.

We can now run kubectl commands and deploy applications.

$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 1m

Checking system pods at this state should return the following:

$ kubectl get pods -n kube-systemNAME                                     READY   STATUS    RESTARTS       AGEcoredns-78fcd69978-7m52k                 1/1     Running   0              99mcoredns-78fcd69978-mm22t                 1/1     Running   0              99metcd-docker-desktop                      1/1     Running   1              99mkube-apiserver-docker-desktop            1/1     Running   1              99mkube-controller-manager-docker-desktop   1/1     Running   1              99mkube-proxy-zctsm                         1/1     Running   0              99mkube-scheduler-docker-desktop            1/1     Running   1              99mstorage-provisioner                      1/1     Running   0              98mvpnkit-controller                        1/1     Running   0              98m

2. Deploying and accessing applications

Let’s take as an example a Kubernetes yaml for the deployment of docker/getting-started, the Docker Desktop tutorial. This is a generic Kubernetes yaml deployable anywhere, it does not contain any Docker Desktop-specific configuration.


apiVersion: v1
kind: Service
metadata:
name: tutorial
spec:
ports:
– name: 80-tcp
port: 80
protocol: TCP
targetPort: 80
selector:
com.docker.project: tutorial
type: LoadBalancer
status:
loadBalancer: {}


apiVersion: apps/v1
kind: Deployment
metadata:
labels:
com.docker.project: tutorial
name: tutorial
spec:
replicas: 1
selector:
matchLabels:
com.docker.project: tutorial
strategy:
type: Recreate
template:
metadata:
labels:
com.docker.project: tutorial
spec:
containers:
– image: docker/getting-started
name: tutorial
ports:
– containerPort: 80
protocol: TCP
resources: {}
restartPolicy: Always
status: {}

On the host of Docker Desktop, open a terminal and run:

$ kubectl apply -f tutorial.yaml
service/tutorial created
deployment.apps/tutorial created

Check services:

$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 118m
tutorial LoadBalancer 10.98.217.243 localhost 80:31575/TCP 12m

Services of type LoadBalancer are exposed outside the Kubernetes cluster. Opening a browser and navigating to localhost:80 displays the Docker tutorial.

What needs to be noticed here is that service access is trivial as if running directly on the host. Developers do not need to concern themselves with any additional configurations. 

This is due to Docker Desktop taking care of exposing service ports on the host to make them directly accessible on it. This is done via the additional controller installed previously.

Vpnkit-controller is a port forwarding service which opens ports on the host and forwards

connections transparently to the pods inside the VM. It is being used for forwarding connections

to LoadBalancer type services deployed in Kubernetes.

3. Speed up the develop-test inner loop

We have seen how to deploy and access an application in the cluster. However, the development cycle consists of developers modifying the code of an application and testing it continuously. 

Let’s take as an example an application we are developing locally. 

$ cat main.go
package main

import (
“fmt”
“log”
“net/http”
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Println(r.URL.RawQuery)
fmt.Fprintf(w, `
## .
## ## ## ==
## ## ## ## ## ===
/”””””””””””””””””___/ ===
{ / ===-
______ O __/
__/
___________/

Hello from Docker!

`)
}
func main() {
http.HandleFunc(“/”, handler)
log.Fatal(http.ListenAndServe(“:80″, nil))
}

The Dockerfile to build and package the application as a Docker image:

$ cat Dockerfile
FROM golang:1.16 AS build

WORKDIR /compose/hello-docker
COPY main.go main.go
RUN CGO_ENABLED=0 go build -o hello main.go

FROM scratch
COPY –from=build /compose/hello-docker /usr/local/bin/hello
CMD [”/usr/local/bin/hello”]

To build the application, we run docker build as usual:

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

$ docker build -t hellodocker .
[+] Building 0.9s (10/10) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 38B 0.0s
. . .
=> => naming to docker.io/library/hellodocker 0.0s

We can see the image resulting from the build stored in the Docker engine cache.

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hellodocker latest 903fe47400c8 4 hours ago 6.13MB

But now we have a problem!

Kubernetes normally pulls images from a registry, which would mean we would have to push and pull the image we have built after every change. Docker Desktop removes this friction by using  dockershim to share the image cache between the Docker engine and Kubernetes. Dockershim is an internal component of Kubernetes that acts like a translation layer between kubelet and Docker Engine.

For development, this provides an essential advantage: Kubernetes can create containers from images stored in the Docker Engine image cache. We can build images locally and test them right away without having to push them to a registry first. 

In the kubernetes yaml from the tutorial example, update the image name to hellodocker and set the image pull policy to IfNotPresent. This ensures that the image from the local cache is going to be used.


containers:
– name: hello
image: hellodocker
ports:
– containerPort: 80
protocol: TCP
resources: {}
imagePullPolicy: IfNotPresent
restartPolicy: Always

Re-deploying applies the new updates:

$ kubectl apply -f tutorial.yaml
service/tutorial configured
deployment.apps/tutorial configured

$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
tutorial LoadBalancer 10.109.236.243 localhost 80:31371/TCP 4s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6h56m

$ curl localhost:80

## .
## ## ## ==
## ## ## ## ## ===
/”””””””””””””””””___/ ===
{ / ===-
______ O __/
__/
___________/

Hello from Docker!

To delete the application from the cluster run:

$ kubectl delete -f tutorial.yaml

4. Updating Kubernetes

When this is the case, the Kubernetes version can be upgraded after a Docker Desktop update. However, when a new Kubernetes version is added to Docker Desktop, the user needs to reset its current cluster in order to use the newest version.

As pods are designed to be ephemeral, deployed applications usually save state to persistent volumes. This is where the storage-provisioner helps in persisting the local storage data.

Conclusion

Docker Desktop offers a Kubernetes installation with a solid host integration aiming to work without any user intervention. Developers in need of a Kubernetes cluster without concerning themselves about its setup can simply install Docker Desktop and enable the Kubernetes cluster to have everything in place in a matter of a few minutes. 

To get Docker Desktop, follow the instructions in the Docker documentation. It also contains a dedicated guide on how to enable Kubernetes.

Join us at DockerCon 2022

DockerCon is the world’s largest development conference of its kind and it’s coming to you virtually and completely free on May 10th, 2022. DockerCon 2022 is an amazing opportunity for you and your developers to learn directly from the community, get tips, tricks, and best practices that will elevate your Docker knowledge, and to learn about what’s coming up on the Docker Roadmap. You can register for DockerCon now, pre-registration is free and open.
The post How Kubernetes works under the hood with Docker Desktop appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

What you need to know about macOS X 10.14 Deprecation

Docker supports Docker Desktop on the most recent versions of macOS. That is, the current release of macOS and the previous two releases. As new major versions of macOS are made generally available, Docker stops supporting the oldest version and supports the newest version of macOS (in addition to the previous two releases). Keeping with our version support policy, Docker Desktop expanded macOS versions support with the Apple’s launch of  macOS Monterey (12) in October of 2021 and dropped support for version macOS Mojave (10.14).

Currently less than 3% of users of Docker Desktop on version 4.0 or above are on mac OS version 10.14. In order to continue to give the best experience to the majority of users, we need  to focus our efforts on support for the more recent OS versions. 

What does this mean for 10.14 users?

Starting with the April 2022 release of Docker Desktop, users on macOS 10.14 will be warned that support of OS X 10.14 has been deprecatedUsers that want to stay on OS X 10.14 can do so, but will not be able to update to new versions of Docker Desktop that are released in April of 2022 or after. We will not be addressing bug fixes or security issues for this OS version. Users that want to use the latest versions of Docker Desktop must have macOS version 10.15 or higher. That is, Catalina, Big Sur, or Monterey. We recommend upgrading to the latest version of macOS.

Learning from our 10.13 deprecation

We know that when we dropped support for macOS version 10.13, we missed the mark as users were frequently interrupted by the check for updates pop up, but were then told that the new version was not supported on their OS version. There were two issues here: users couldn’t turn this off and  it was not clear that this was coming from Docker.

With this deprecation, Docker Desktop won’t check for updates at all if you are on OS X 10.14. If you choose to manually check for updates it will be clear that Docker Desktop is the source of this message. 
The post What you need to know about macOS X 10.14 Deprecation appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

AppDev Challenges and Trends to Watch in 2022

Over the last few years, development teams have been pushed to do a lot more with less. The global supply chain disruptions caused by the pandemic and the chip manufacturing shortage in particular impacted the tech industry. These factors have moved developer workloads toward the cloud, created a more asynchronous and remote workforce, and increased demand for modern applications. 

All of these changes have come with their own set of challenges. In our recent webinar, AppDev Challenges and Trends to Watch in 2022 (available to watch on-demand) Docker Captain and Solutions Architect for BoxBoat (an IBM company) Brandon Mitchell shared his insights on the critical challenges and trends he’s been seeing from his work helping companies through their containerization journey. Throughout the webinar, Brandon identified valuable opportunities where development teams can continue to build modern and innovative solutions that are also secure and compliant with their organizations’ policies. 

Keep reading for a recap of the webinar and to learn more about our new market report, The State of Application Development in 2022 and Beyond.

Today’s AppDev Challenges

Brandon identified the top challenges he’s been seeing in the software development space including: 

Updating legacy systemsModerning components without disrupting software delivery pipelinesKeeping up with demand for cloud-native apps

To address these challenges, many industry leaders have moved their applications to containers. 

Trend #1: Containerization as the norm

According to Brandon, “If you haven’t already started your containerization journey, you’re probably already behind your industry peers so now is the time to jump on that. Yesterday was the time, but there’s no time like the present.” Organizations are migrating everything in containers, including legacy applications, in order to standardize a more efficient software delivery pipeline. 

One of the nice things about this trend is that developers get to move toward managing a single workflow, rather than having to manage multiple workflows–one for developers managing the old legacy model and the other for managing all of the different microservices in the new system. Managing multiple workflows leads to friction both in production and in development environments. 

Trend #2: CI/CD as the building block to software

CI/CD tends to be the core environment that everyone depends on because everything goes through it–from developer code check-ins to deployments to production. Brandon stated that he’s been seeing a transition away from domain specific language and toward a declarative environment. Developers are spinning up ephemeral containers–when they have a new version, they spin up a new container. The new design for how organizations are deploying out to production is a clean environment that resets to a clean state with all data mapped in terms of volumes. 

Modernizing the application stack requires modernizing the CI/CD pipeline. The first step toward this is to try to break things into microservices. One challenge Brandon has seen organizations run into is the combination of services that teams test in development doesn’t always match the combination of services they run in production. 

Brandon also described seeing a shift left in security checks. Security tooling is moving earlier in the CI/CD pipeline for faster feedback; ideally, this is happening right on developers’ desktops. Docker Scan is a great tool which allows developers to scan for vulnerabilities right on their machines so they can test their code before they commit it to the Git repo. This process gives the security awareness right to developers when they commit their code and empowers them with the tools they need to be proactive. 

Trend #3: Secure Software Supply Chain with DevSecOps

Brandon discussed the trend he’s been seeing of moving security left in further detail. This major shift is driven by a combination of government regulations (e.g., the White House Executive Order) and recent attacks like the SolarWinds attack, Heartbleed, and the OpenSSL vulnerability. 

Attackers are going after the supply chain and are looking for vulnerabilities upstream or in build infrastructure. Potentially malicious developers are finding ways to push code into upstream builds, and that code gets pulled into environments and deployed in applications as if it is trusted code because dependencies aren’t being checked. This code can get pulled in with a single command on the developer environment, and is then deployed out to production environments. Some solutions to this that Brandon suggested include:

Hardening build environmentsGenerating software bill of materials (SBOMs)Adding signingLooking to reproducible buildsShifting scanning earlier in the workflow

You can think of SBOMs as an ingredient list where teams can track what they have in all of their compiled applications. Development teams can use SBOMs to identify if what they’ve deployed has a vulnerability, and if it does, they can easily track down every area where this vulnerability in the code is deployed in production. Another important solution is image signing and, along with that, making sure that teams are only signing images that are trusted and verified.

Brandon refers to reproducible builds as the “holy grail” because they’re effective but difficult to implement in a production environment. After building all the way through on an organization’s normal build infrastructure, reproducible builds require running that build in a completely new and separate environment. If the builds don’t match byte for byte, the organization knows something went wrong and needs to investigate. That something could just be a weird configuration, but it could also be an indication that an attacker got in and injected malicious code that needs to be stopped before it goes into production. 

The State of Application Development in 2022 and Beyond

During the webinar, Brandon went into more detail on each of the above topics and had a live discussion with Docker Product Marketing Manager, Cat Siemer. He also addressed live Q&A from webinar attendees so be sure to check out the full webinar recording to catch these additional insights. 

If you want to learn more about this topic, check out the new market report that we just published, The State of Application Development in 2022 and Beyond which highlights six trends that we predict will be key to the success of any development team and developer centered organizations in 2022. Read the report to learn how development teams keep a competitive edge by modernizing the way they build, share, and run their applications with Docker Business and our other subscription offerings.

Join us at DockerCon 2022

DockerCon is the world’s largest development conference of its kind and it’s coming to you virtually and completely free on May 10th, 2022. DockerCon 2022 is an amazing opportunity for you and your developers to learn directly from the community, get tips, tricks, and best practices that will elevate your Docker knowledge, and to learn about what’s coming up on the Docker Roadmap. You can register for DockerCon now, pre-registration is free and open. If you’re interested in speaking at DockerCon, the DockerCon 2022 Call for Papers is also open, submit your talk here. 

Additional resources from the webinar

SPDXCycloneDXNotary v2OCI Reference Types Working GroupCNCF Supply Chain Security Working GroupOpenSSFSLSAReproducible Builds

The post AppDev Challenges and Trends to Watch in 2022 appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Black Innovators That Paved the Way

While diverse experiences and perspectives should be sought after and celebrated every day, Black History Month is a wonderful opportunity to reflect on and celebrate the many contributions of Black Americans. Recognizing the ingenuity of Black people in technology is incredibly important –  especially when a large diversity gap of historically overrepresented groups is so prevalent in the sector. Today, we are highlighting a few among the many incredible Black innovators that play a profound role in shaping the world’s technology.

Alan Emtage conceived of and implemented Archie, the world’s first Internet search engine in 1989 while he was student. In doing so, he pioneered many of the techniques used by public search engines today. In 2017, he was inducted into the Internet Society’s Internet Hall of Fame.

Marie Van Brittan Brown invented the first closed-circuit television security system and paved the way for modern home security systems used today. In 1969, Brown received a U.S. patent and her contribution to home security led her invention to be cited in 32 subsequent patent applications. Her invention formed a system that is still relevant in today’s society with use in places such as banks, office buildings, and apartment complexes.

Mark Dean spent his career working to make computers more accessible and powerful and played a pivotal role at IBM developing the personal computer (PC). He holds three of nine PC patents for being the co-creator of the IBM personal computer released in 1981. He is also responsible for creating the ISA bus technology that allows devices, such as keyboards, mice, and printers, to be plugged into a computer and communicate with each other.

Clarence Ellis was the first Black man to receive a Ph.D. in Computer Science (1969). After his Ph.D., he continued his work on supercomputers at Bell Telephone Laboratories and worked as a researcher and developer at IBM, Xerox, Microelectronics, and Computer Technology Corporation.

Dr. Marian Croak is best known for developing Voice Over Internet Protocols (VoIP). VoIP is technology that converts your voice into a digital signal, allowing you to make a call directly from a computer or other digital device, which she received the first of many patents for in 2006. She also invented the technology that allows people to send text-based donations to charity. She holds hundreds of patents that are still in use today and is currently the VP of Engineering at Google. 

Gerald A. Lawson pioneered home video gaming in the 1970s by helping create the Fairchild Channel F, the first home video game system with interchangeable games. Lawson was largely a self-taught engineer and the first major Black figure in the video game industry.

Janet E. Bashen is the first Black woman to hold a patent for a web-based software invention. The patented software, LinkLine, created in 1994, is a web-based application for Equal Employment Opportunity (EEO) claims intake and tracking, claims management, and document management. As a result of her work with equal employment opportunity and diversity and inclusion, Bashen is regarded as a social justice advocate.

Black innovators that continue to lead the way 

Tope Awotona is the founder and CEO of Calendly, the scheduling platform for high-performing teams and individuals. Awotona grew up in Lagos, Nigeria and came to the US in 1996, where he eventually founded Calendly in 2013.  Docker is a proud customer of Calendly!

David Steward is the chairman and founder of World Wide Technology Inc., one of the largest Black-owned businesses in America. World Wide Technology Inc helps customers discover, evaluate, architect, and implement advanced technology lab testing. WWT even employs Docker with their own technology!

Kelsey Hightower is a principal engineer for Google Cloud Computing and an advocate for open-source software. In an even less diverse space within the tech industry, Hightower has become a leading voice on cloud computing and software infrastructure. In 2015, he co-founded the Kubernetes-focused conference KubeCon, and is one of the most well-known speakers on Kubernetes. 

DockerCon2022

Join us for DockerCon2022 on Tuesday, May 10. DockerCon is a free, one day virtual event that is a unique experience for developers and development teams who are building the next generation of modern applications. If you want to learn about how to go from code to cloud fast and how to solve your development challenges, DockerCon 2022 offers engaging live content to help you build, share and run your applications. Register today at https://www.docker.com/dockercon/
The post Black Innovators That Paved the Way appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/