Introducing Hallway Track: Learn from People Around You at DockerCon

Photo by: Youssef Shoufan at DockerCon Austin 2017
The DockerCon Hallway Track is coming to DockerCon Europe in Copenhagen. We’ve partnered with e180.co once again to deliver the next level of conference attendee networking. Together, we believe that education is a relationship, not an institution, and that a conversation can change someone’s life. After the success of our collaboration in Austin with Moby Mingle, we’re happy to be growing this idea further for Copenhagen.
DockerCon is all about learning new things and connecting with the right people. The Hallway Track will help you meet and share knowledge with community members and practitioners at the conference.  

So, what’s a Hallway Track?
DockerCon Hallway Track is a one-on-one or group conversations based on topics of interest that you schedule with other attendees during DockerCon. Hallway Track’s recommendation algorithm curates an individualized selection of Hallway Track topics for each participant, based on their behavior and interests.
It’s simple:

Explore the knowledge Offer and Requests –where all participants post the knowledge they are willing to share.
Pick something you want to learn or create your own Offer or Request.
Book your Hallway Tracks and meet in person at the Hallway Track Lounge!

If you are interested in attending DockerCon. please register soon as we have only 100 tickets left! If you are already registered and want to book your Hallway Tracks, the platform will be launching today – look out for the email with instructions for logging into the system.

Introducing Hallway Track: Learn from People Around You at #DockerConClick To Tweet

The post Introducing Hallway Track: Learn from People Around You at DockerCon appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Your Docker Agenda for JavaOne

If you are one of the thousands that will be in San Francisco for JavaOne Oct 1-5th, don’t miss the opportunity to level-up your knowledge around container technology and Docker Community and Enterprise Edition. We’ve listed our must-attend sessions below:
Monday, October 2nd
Monday, Oct 02, 11:00 a.m. – 11:45 a.m. | Java in a World of Containers [CON4429]
Speakers: Paul Sandoz and Mikael Vidstedt, Oracle
This session explains how OpenJDK 9 fits into the world of containers, specifically how it fits with Docker images and containers. The first part of the session focuses on the production of Docker images containing a JDK. It introduces technologies, such as J-Link, that can be used to reduce the size of the JDK and discusses the inclusion of class-data-sharing (CDS) archives and ahead-of-time (AOT) shared object libraries. The second part describes how the Java process can be a good citizen when running within a Java container and obeying resource limits. The presentation also covers the role of CDS archives and AOT shared object libraries that can be shared across running containers to reduce startup time or memory usage.
 
Tuesday, October 3rd
8:30 a.m. – 10:30 a.m. |  Hands-on Lab: Docker 101 [HOL7960]
Eric Smalling, Ben Bonnefoy, Mano Marks, Docker
Dennis Foley and Richard Wark, Oracle
If you are just getting started learning about the Docker platform and want to get up to speed, this is the lab for you. Come learn the  basics including running containers, building images, and basics on networking, orchestration, security, and volumes.
8:30 a.m. – 9:15 a.m. | Modernizing Traditional Apps with Docker EE: Java Edition [CON7951]
Sophia Parafina, Docker
Most large enterprises have huge application install bases. Many have apps running in production that were written by people who have moved on to other projects, or even other companies. How do you bring older, critical apps into a new, modern containerized infrastructure? In this presentation, you’ll learn the benefits of moving to a containerized infrastructure and how to easily package a Java EE application to a Docker Enterprise Edition container without changing any code. And then begin the process of modernizing it by replacing the JavaServer Faces client with a JavaScript client written in React.
 
Wednesday, October 4th
Wednesday, Oct 04, 2:45 p.m. – 3:30 p.m. | Best Practices for Developing and Deploying Java Applications with Docker [CON7957]
Speaker: Eric Smalling, Docker
What if you could run your Java application in the same artifacts as your developer workstation, integration, and user acceptance testing environments as it does in production? With the Docker platform, your deployment artifacts conform to a common, portable standard that allows your team to do exactly that. In this session learn how to best run the JVM inside containers; ensure it is built and tested in deterministic, repeatable fashion; and deploy it in a guaranteed known-good-state in every environment. This session explores the basics of the Docker platform, how to build and run your applications in containers, how to deploy a web application using the same artifacts on workstations and servers, and best practices for managing and configuring JVM-based applications in containers.
Wednesday, Oct 04, 2:45 p.m. – 3:30 p.m. | Docker Tips and Tricks for Java Developers [CON4060]
Speaker: Ray Tsang, Google
Everyone is talking about containers—but be aware! It takes discipline to use container technology. It may not be as secure nor as optimal as you thought it would be. Although it’s relatively easy to create a new immutable container image to run everywhere, you may have fallen into many of the caveats. Is it running as the root user? Why are the images taking so much space? Why did your containers run out of space in the first place!? Most importantly, your container images may not be as immutable nor repeatable as you thought, and your Java process might be overutilizing assigned resources! Attend this session to learn how to best address these issues when building your Java container images.

It’s almost time for #JavaOne! Here’s a don’t miss guide to the best #Docker sessions!Click To Tweet

The post Your Docker Agenda for JavaOne appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Introducing the Docker Global Professional Certification Program

 Docker is excited to announce the first and only official professional certification program for the Docker Enterprise Edition (EE) platform.
The new Docker Certified Associate (DCA) certification, launching at DockerCon Europe on October 16, 2017, serves as a foundational benchmark for real-world container technology expertise with Docker Enterprise Edition. In today’s job market, container technology skills are highly sought after and this certification sets the bar for well-qualified professionals. The professionals that earn the certification will set themselves apart as uniquely qualified to run enterprise workloads at scale with Docker Enterprise Edition and be able to display the certification logo on resumes and social media profiles.
The DCA is the first in a comprehensive multi-tiered certification program and the exam was created by top practitioners using a rigorous development process. It consists of 55 questions to be completed over 80 minutes covering essential skills on Docker Enterprise Edition.  The exam can be taken anywhere in the world at any time and is delivered using remote proctoring technology to ensure exam security while creating a simple and streamlined test taking experience for candidates.
Be among the first to earn the DCA designation and gain recognition for your enterprise container skills.
Get Started now
 
Be Among the First to Get Certified, at DockerCon Europe
Be one of the first to get your DCA on-site at DockerCon Europe. If you’ve reviewed the study guide and think you’ve got what it takes, join us in Copenhagen and take the exam. Testing is offered Tuesday through Thursday and we’ve got some special gifts to hand out to our first Docker Certified Associates.

Be the first #DockerCertified Associate – #Docker launches first official certification exam for…Click To Tweet

Learn more:

Docker Professional Certification program
Docker Trainings

The post Introducing the Docker Global Professional Certification Program appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Kubernetes 1.8 release integrates with containerd 1.0 Beta

Intent of containerd effort
When containerd was first developed it had two goals. The first was to solve the upgrade problem with running containers and provide a codebase where OCI runtimes, like runc, could be integrated into Docker.  However, as needs change in the container space and after speaking  with various members of the community at the beginning of this year, we decided to expand the scope of containerd and make it a fully functional container daemon with storage, image distribution and runtime.
containerd fully supports the OCI Runtime and Image specifications that are part of the recently released 1.0 specifications. Additionally, it was important to build a stable runtime for users and platform builders. We wanted containerd to be fully functional; but also, it needed to retain a small core codebase so that it is easy to maintain and support in the long run with an LTS release receiving backported patches on a stable API.
To demonstrate the progress made on the project,  Stephen Day presented the current status of containerd 1.0 alpha at the Moby Summit in LA two weeks ago,:

Check out the getting started with containerd guide to get your feet wet with containerd if you want to integrate it in your own container based system.

Introduction of the cri-containerd effort
Docker and Kubernetes both have similar requirements when it comes to a container runtime. They need something small, stable and easy to maintain. They also need an API that abstracts away platform and system specific details so that they can build a featureset for users without being slowed down by the messy syscalls and various driver support that is required to execute containers on a variety of operating systems.        
In order to have Kubernetes consume containerd for its container runtime we needed to implement the CRI interface.  CRI stands for “Container Runtime Interface” and is responsible for distribution and the lifecycle of pods and containers running on a cluster.
At Docker, we have a full time engineer working on the cri-containerd project along with the other maintainers to finish the cri-containerd integration to get Kubernetes running on containerd. Here is a presentation Liu Lantao from Google presented 2 weeks ago at Moby Summit LA about the status of cri-containerd:

Kubernetes CRI containerd integration by Lantao Liu (Google) from Docker, Inc.
Moby Summit LA allowed the various teams from different companies involved in these projects to meet and demo the latest about containerd, cri-containerd, bucketbench, and libnetwork CNI implementation. You can find a recap of the summit on the Moby blog, and get the latest updates from the teams at Moby Summit Copenhagen in a few weeks.

#MobySummit @APrativadi doing the first public demo of cri-containerd, @kubernetesio + @containerd + libnetwork drivers  used as CNI plugins pic.twitter.com/sMSWlS9ANM
— chanezon (@chanezon) September 14, 2017

.@Kubernetesio 1.8 release integrates w/ @containerd 1.0 Beta Click To Tweet

Learn more:

Getting started with containerd
Getting started guide for CRI-containerd
Kubernetes OS images with LinuxKit

The post Kubernetes 1.8 release integrates with containerd 1.0 Beta appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Kubernetes 1.8: Security, Workloads and Feature Depth

Editor’s note: today’s post is by Aparna Sinha, Group Product Manager, Kubernetes, Google; Ihor Dvoretskyi, Developer Advocate, CNCF; Jaice Singer DuMars, Kubernetes Ambassador, Microsoft; and Caleb Miles, Technical Program Manager, CoreOS on the latest release of Kubernetes 1.8. We’re pleased to announce the delivery of Kubernetes 1.8, our third release this year. Kubernetes 1.8 represents a snapshot of many exciting enhancements and refinements underway. In addition to functional improvements, we’re increasing project-wide focus on maturing process, formalizing architecture, and strengthening Kubernetes’ governance model. The evolution of mature processes clearly signals that sustainability is a driving concern, and helps to ensure that Kubernetes is a viable and thriving project far into the future. Spotlight on securityKubernetes 1.8 graduates support for role based access control (RBAC) to stable.RBAC allows cluster administrators to dynamically define roles to enforceaccess policies through the Kubernetes API. Beta support for filtering outbound trafficthrough network policies augments existing support for filtering inboundtraffic to a pod. RBAC and Network Policies are two powerful tools for enforcingorganizational and regulatory security requirements within Kubernetes. Transport Layer Security (TLS) certificate rotation for the Kubelet graduates to beta. Automatic certificate rotation eases secure cluster operation.Spotlight on workload supportKubernetes 1.8 promotes the core Workload APIs to beta with the apps/v1beta2 group and version. The beta contains the current version of Deployment, DaemonSet, ReplicaSet, and StatefulSet. The Workloads APIs provide a stable foundation for migrating existing workloads to Kubernetes as well as developing cloud native applications that target Kubernetes natively. For those considering running Big Data workloads on Kubernetes, the Workloads API now enables native Kubernetes support in Apache Spark. Batch workloads, such as nightly ETL jobs, will benefit from the graduation of CronJobs to beta.Custom Resource Definitions (CRDs) remain in beta for Kubernetes 1.8. A CRDprovides a powerful mechanism to extend Kubernetes with user-defined API objects.One use case for CRDs is the automation of complex stateful applications such as key-value stores, databases and storage engines through the Operator Pattern. Expect continued enhancements to CRDs such as validation as stabilization continues.Spoilers aheadvolume snapshots, PV resizing, automatic taints, priority pods, kubectl plugins, oh my!In addition to stabilizing existing functionality, Kubernetes 1.8 offers a number of alpha features that preview new functionality. Each Special Interest Group (SIG) in the community continues to deliver the most requested user features for their area. For a complete list, please visit the release notes.AvailabilityKubernetes 1.8 is available for download on GitHub. To get started with Kubernetes, check out these interactive tutorials. Release teamThe Release team for 1.8 was led by Jaice Singer DuMars, Kubernetes Ambassador at Microsoft, and was comprised of 14 individuals  responsible for managing all aspects of the release, from documentation to testing, validation, and feature completeness. As the Kubernetes community has grown, our release process has become an amazing demonstration of collaboration in open source software development. Kubernetes continues to gain new users at a rapid clip. This growth creates a positive feedback cycle where more contributors commit code creating a more vibrant ecosystem. User highlightsAccording to Redmonk, 54 percent of Fortune 100 companies are running Kubernetes in some form with adoption coming from every sector across the world. Recent user stories from the community include: Ancestry.com currently holds 20 billion historical records and 90 million family trees, making it the largest consumer genomics DNA network in the world. With the move to Kubernetes, its deployment time for its Shaky Leaf icon service was cut down from 50 minutes to 2 or 5 minutes.Wink, provider of smart home devices and apps, runs 80 percent of its workloads on a unified stack of Kubernetes-Docker-CoreOS, allowing them to continually innovate and improve its products and services.Pear Deck, a teacher communication app for students, ported their Heroku apps into Kubernetes, allowing them to deploy the exact same configuration in lots of different clusters in 30 seconds. Buffer, social media management for agencies and marketers, has a remote team of 80 spread across a dozen different time zones. Kubernetes has provided the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary.Is Kubernetes helping your team? Share your story with the community. Ecosystem updatesAnnounced on September 11, Kubernetes Certified Service Providers (KCSPs) are pre-qualified organizations with deep experience helping enterprises successfully adopt Kubernetes. Individual professionals can now register for the new Certified Kubernetes Administrator (CKA) program and exam, which requires passing an online, proctored, performance-based exam that tests one’s ability to solve multiple issues in a hands-on, command-line environment.CNCF also offers online training that teaches the skills needed to create and configure a real-world Kubernetes cluster.KubeConJoin the community at KubeCon + CloudNativeCon in Austin, December 6-8 for the largest Kubernetes gathering ever. The premiere Kubernetes event will feature technical sessions, case studies, developer deep dives, salons and more! A full schedule of events and speakers will be available here on September 28. Discounted registration ends October 6.Open Source Summit EUIhor Dvoretskyi, Kubernetes 1.8 features release lead, will present new features and enhancements at Open Source Summit EU in Prague, October 23. Registration is still open.Get involvedThe simplest way to get involved with Kubernetes is by joining one of the many Special Interest Groups (SIGs) that align with your interests. Have something you’d like to broadcast to the Kubernetes community? Share your voice at our weekly community meeting, and through the channels below.Thank you for your continued feedback and support.Post questions (or answer questions) on Stack OverflowJoin the community portal for advocates on K8sPortFollow us on Twitter @Kubernetesio for latest updatesChat with the community on SlackShare your Kubernetes story.
Quelle: kubernetes

The Docker Modernize Traditional Apps (MTA) Program Adds Microsoft Azure Stack

In April of this year, Docker announced the Modernize Traditional Apps (MTA) POC program with partners Avanade, Booz Allen, Cisco, HPE and Microsoft. The MTA program is designed to help IT teams flip the 80% maintenance to 20% innovation ratio on it’s head. The combination of Docker Enterprise Edition (EE), services and infrastructure into a turnkey program delivers portability, security and efficiency for the existing app portfolio to drive down total costs and make room for innovation like cloud strategies and new app development. The program starts by packaging of existing apps into isolated containers, providing the opportunity to migrate them to new on-prem or cloud environments, without any recoding.
 
Docker customers have already been taking advantage of the program to jumpstart their migration to Azure and are experiencing dramatically reduced deployment and scaling times — from weeks to minutes —  and cutting their total costs by 50% or more.
 
The general availability of Microsoft Azure Stack provides IT with the ability to manage their datacenters in the same way they manage Azure. The consistency in hybrid cloud infrastructure deployment combined with consistency in application packaging, deployment and management only further enhance operational efficiency. Docker is pleased to announce the addition of Azure Stack to the MTA Program for hybrid cloud environments. Docker will provide partners with a Technical Preview of the Docker EE template for Azure Stack as an easy and quick way to deploy and manage containers for the MTA project.

The Docker MTA Program is available from the partners:
 

Microsoft and Avande have been actively delivering MTA PoCs to containerize and deploy legacy workloads to Azure cloud and will be applying those same skills to Azure Stack and help further modernize apps to microservices.
“With expertise in Microsoft Azure Stack and great success leading the Modernize Traditional Application program [MTA] with Docker, Avanade is excited to bring these technologies together for clients via a single provider,” said Pat Cimprich, Executive, Cloud and Application Transformation, Avanade. “The Avanade solution provides a turnkey, fully managed Azure-consistent experience so enterprises can quickly move applications to Microsoft Azure or Microsoft Azure Stack via Docker container technology. This combination enables clients to migrate applications to the cloud today to realize significant cost savings immediately and then modernize them over time at their own pace.”
 

Booz Allen Hamilton specializes in modernizing apps to any infrastructure specifically for federal agency IT (civilian and department of defense) with a deep understanding of unique  compliance requirements and continues the transformation to devops and microservices.
 

Cisco Data Center solutions help organizations develop, deploy, and run their business-essential applications and workloads quickly, securely, and reliably across the multi-cloud domain. The Cisco MTA program is an end-to-end “Proof of Value” offer that demonstrates the ease and savings of containerizing traditional applications on Cisco UCS and Docker Enterprise Edition.
“Cisco and Microsoft offer a turnkey hybrid cloud solution built on the power of Cisco UCS and Microsoft Azure Stack and it is orderable starting today. With the expansion of the MTA program, our customers can now confidently deploy containerized applications on a validated solution jointly developed by Cisco and Microsoft, taking advantage of the agile and scalable cloud infrastructure provided by the Cisco Integrated System for Microsoft Azure Stack.” said Satinder Sehti, VP Data Center Solutions Engineering & UCS Product Management.
 

The HPE MTA Program is driving engagements to help customers modernize traditional applications on HPE Proliant for Azure Stack integrated solution and a wide range of other datacenter systems available.
“Customers have been asking for more choice in the way they manage and deliver applications. Our goal is to help customers move to modern application architectures that best suit their needs,” said McLeod Glass, Vice President, Product Management, Software-Define and Cloud Group, HPE. “With the integration of HPE ProLiant for Microsoft Azure Stack and Windows Server 2016 validated solutions into Docker’s Modernize Traditional Apps Program, customers now have more options to deploy and manage containerized legacy apps to help them simplify hybrid IT.”
Whether on-premises or in the cloud, the Docker MTA program delivers immediate benefits of portability, security and efficiency for existing applications without recoding the application. Now with Azure Stack, consistency and simplicity of hybrid cloud infrastructures services go hand in hand with consistency and agility of application container deployment. 
Visit www.docker.com/MTA or contact Docker sales.

Modernize Traditional Apps (MTA) to #Azure + #AzureStack with #DockerClick To Tweet

To learn more about Docker solutions for IT:

Visit IT Starts with Docker and learn more about MTA
Learn more about Docker Enterprise Edition
Start a hosted trial
Sign up for upcoming webinars

The post The Docker Modernize Traditional Apps (MTA) Program Adds Microsoft Azure Stack appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Kubernetes StatefulSets & DaemonSets Updates

Editor’s note: today’s post is by Janet Kuo and Kenneth Owens, Software Engineers at Google.GoogleThis post talks about recent updates to the DaemonSet and StatefulSet API objects for Kubernetes. We explore these features using Apache ZooKeeper and Apache Kafka StatefulSets and a Prometheus node exporter DaemonSet.In Kubernetes 1.6, we added the RollingUpdate update strategy to the DaemonSet API Object. Configuring your DaemonSets with the RollingUpdate strategy causes the DaemonSet controller to perform automated rolling updates to the Pods in your DaemonSets when their spec.template are updated. In Kubernetes 1.7, we enhanced the DaemonSet controller to track a history of revisions to the PodTemplateSpecs of DaemonSets. This allows the DaemonSet controller to roll back an update. We also added the RollingUpdate strategy to the StatefulSet API Object, and implemented revision history tracking for the StatefulSet controller. Additionally, we added the Parallel pod management policy to support stateful applications that require Pods with unique identities but not ordered Pod creation and termination.StatefulSet rolling update and Pod management policyFirst, we’re going to demonstrate how to use StatefulSet rolling updates and Pod management policies by deploying a ZooKeeper ensemble and a Kafka cluster.PrerequisitesTo follow along, you’ll need to set up a Kubernetes 1.7 cluster with at least 3 schedulable nodes. Each node needs 1 CPU and 2 GiB of memory available. You will also need either a dynamic provisioner to allow the StatefulSet controller to provision 6 persistent volumes (PVs) with 10 GiB each, or you will need to manually provision the PVs prior to deploying the ZooKeeper ensemble or deploying the Kafka cluster.Deploying a ZooKeeper ensembleApache ZooKeeper is a strongly consistent, distributed system used by other distributed systems for cluster coordination and configuration management. Note: You can create a ZooKeeper ensemble using this zookeeper_mini.yaml manifest. You can learn more about running a ZooKeeper ensemble on Kubernetes here, as well as a more in-depth explanation of the manifest and its contents.When you apply the manifest, you will see output like the following.$ kubectl apply -f zookeeper_mini.yaml service “zk-hs” createdservice “zk-cs” createdpoddisruptionbudget “zk-pdb” createdstatefulset “zk” createdThe manifest creates an ensemble of three ZooKeeper servers using a StatefulSet, zk; a Headless Service, zk-hs, to control the domain of the ensemble; a Service, zk-cs, that clients can use to connect to the ready ZooKeeper instances; and a PodDisruptionBugdet, zk-pdb, that allows for one planned disruption. (Note that while this ensemble is suitable for demonstration purposes, it isn’t sized correctly for production use.)If you use kubectl get to watch Pod creation in another terminal you will see that, in contrast to the OrderedReady strategy (the default policy that implements the full version of the StatefulSet guarantees), all of the Pods in the zk StatefulSet are created in parallel. $ kubectl get po -lapp=zk -wNAME      READY     STATUS     RESTARTS   AGEzk-0      0/1       Pending    0          0szk-0      0/1       Pending   0          0szk-1      0/1       Pending   0          0szk-1      0/1       Pending   0          0szk-0      0/1       ContainerCreating    0          0szk-2      0/1       Pending    0          0szk-1      0/1       ContainerCreating   0          0szk-2      0/1       Pending    0          0szk-2      0/1       ContainerCreating    0          0szk-0      0/1       Running   0          10szk-2      0/1       Running   0          11szk-1      0/1       Running    0          19szk-0      1/1       Running    0          20szk-1      1/1       Running    0          30szk-2      1/1       Running    0          30sThis is because the zookeeper_mini.yaml manifest sets the podManagementPolicy of the StatefulSet to Parallel.apiVersion: apps/v1beta1kind: StatefulSetmetadata:  name: zkspec:  serviceName: zk-hs  replicas: 3  updateStrategy:    type: RollingUpdate  podManagementPolicy: Parallel …Many distributed systems, like ZooKeeper, do not require ordered creation and termination for their processes. You can use the Parallel Pod management policy to accelerate the creation and deletion of StatefulSets that manage these systems. Note that, when Parallel Pod management is used, the StatefulSet controller will not block when it fails to create a Pod. Ordered, sequential Pod creation and termination is performed when a StatefulSet’s podManagementPolicy is set to  OrderedReady.Deploying a Kafka ClusterApache Kafka is a popular distributed streaming platform. Kafka producers write data to partitioned topics which are stored, with a configurable replication factor, on a cluster of brokers. Consumers consume the produced data from the partitions stored on the brokers. Note: Details of the manifests contents can be found here. You can learn more about running a Kafka cluster on Kubernetes here. To create a cluster, you only need to download and apply the kafka_mini.yaml manifest. When you apply the manifest, you will see output like the following:$ kubectl apply -f kafka_mini.yaml service “kafka-hs” createdpoddisruptionbudget “kafka-pdb” createdstatefulset “kafka” createdThe manifest creates a three broker cluster using the kafka StatefulSet, a Headless Service, kafka-hs, to control the domain of the brokers; and a PodDisruptionBudget, kafka-pdb, that allows for one planned disruption. The brokers are configured to use the ZooKeeper ensemble we created above by connecting through the zk-cs Service. As with the ZooKeeper ensemble deployed above, this Kafka cluster is fine for demonstration purposes, but it’s probably not sized correctly for production use.If you watch Pod creation, you will notice that, like the ZooKeeper ensemble created above, the Kafka cluster uses the Parallel podManagementPolicy.$ kubectl get po -lapp=kafka -wNAME      READY     STATUS     RESTARTS   AGEkafka-0   0/1       Pending    0          0skafka-0   0/1       Pending    0          0skafka-1   0/1       Pending    0          0skafka-1   0/1       Pending    0          0skafka-2   0/1       Pending    0          0skafka-0   0/1       ContainerCreating   0          0skafka-2   0/1       Pending    0          0skafka-1   0/1       ContainerCreating   0          0skafka-1   0/1       Running   0          11skafka-0   0/1       Running   0          19skafka-1   1/1       Running   0          23skafka-0   1/1       Running   0          32sProducing and consuming dataYou can use kubectl run to execute the kafka-topics.sh script to create a topic named test.$ kubectl run -ti –image=gcr.io/google_containers/kubernetes-kafka:1.0-10.2.1 createtopic –restart=Never –rm — kafka-topics.sh –create > –topic test > –zookeeper zk-cs.default.svc.cluster.local:2181 > –partitions 1 > –replication-factor 3Now you can use kubectl run to execute the kafka-console-consumer.sh command to listen for messages.$ kubectl run -ti –image=gcr.io/google_containers/kubnetes-kafka:1.0-10.2.1 consume –restart=Never –rm — kafka-console-consumer.sh –topic test –bootstrap-server kafka-0.kafka-hs.default.svc.cluster.local:9093In another terminal, you can run the kafka-console-producer.sh command. $kubectl run -ti –image=gcr.io/google_containers/kubernetes-kafka:1.0-10.2.1 produce –restart=Never –rm >  — kafka-console-producer.sh –topic test –broker-list kafka-0.kafka-hs.default.svc.cluster.local:9093,kafka-1.kafka-hs.default.svc.cluster.local:9093,kafka-2.kafka-hs.default.svc.cluster.local:9093Output from the second terminal appears in the first terminal. If you continue to produce and consume messages while updating the cluster, you will notice that no messages are lost. You may see error messages as the leader for the partition changes when individual brokers are updated, but the client retries until the message is committed. This is due to the ordered, sequential nature of StatefulSet rolling updates which we will explore further in the next section.Updating the Kafka clusterStatefulSet updates are like DaemonSet updates in that they are both configured by setting the spec.updateStrategy of the corresponding API object. When the update strategy is set to OnDelete, the respective controllers will only create new Pods when a Pod in the StatefulSet or DaemonSet has been deleted. When the update strategy is set to RollingUpdate, the controllers will delete and recreate Pods when a modification is made to the spec.template field of a DaemonSet or StatefulSet. You can use rolling updates to change the configuration (via environment variables or command line parameters), resource requests, resource limits, container images, labels, and/or annotations of the Pods in a StatefulSet or DaemonSet. Note that all updates are destructive, always requiring that each Pod in the DaemonSet or StatefulSet be destroyed and recreated. StatefulSet rolling updates differ from DaemonSet rolling updates in that Pod termination and creation is ordered and sequential.You can patch the kafka StatefulSet to reduce the CPU resource request to 250m.$ kubectl patch sts kafka –type=’json’ -p='[{“op”: “replace”, “path”: “/spec/template/spec/containers/0/resources/requests/cpu”, “value”:”250m”}]’statefulset “kafka” patchedIf you watch the status of the Pods in the StatefulSet, you will see that each Pod is deleted and recreated in reverse ordinal order (starting with the Pod with the largest ordinal and progressing to the smallest). The controller waits for each updated Pod to be running and ready before updating the subsequent Pod.$kubectl get po -lapp=kafka -wNAME      READY     STATUS    RESTARTS   AGEkafka-0   1/1       Running   0          13mkafka-1   1/1       Running   0          13mkafka-2   1/1       Running   0          13mkafka-2   1/1       Terminating   0         14mkafka-2   0/1       Terminating   0         14mkafka-2   0/1       Terminating   0         14mkafka-2   0/1       Terminating   0         14mkafka-2   0/1       Pending   0         0skafka-2   0/1       Pending   0         0skafka-2   0/1       ContainerCreating   0         0skafka-2   0/1       Running   0         10skafka-2   1/1       Running   0         21skafka-1   1/1       Terminating   0         14mkafka-1   0/1       Terminating   0         14mkafka-1   0/1       Terminating   0         14mkafka-1   0/1       Terminating   0         14mkafka-1   0/1       Pending   0         0skafka-1   0/1       Pending   0         0skafka-1   0/1       ContainerCreating   0         0skafka-1   0/1       Running   0         11skafka-1   1/1       Running   0         21skafka-0   1/1       Terminating   0         14mkafka-0   0/1       Terminating   0         14mkafka-0   0/1       Terminating   0         14mkafka-0   0/1       Terminating   0         14mkafka-0   0/1       Pending   0         0skafka-0   0/1       Pending   0         0skafka-0   0/1       ContainerCreating   0         0skafka-0   0/1       Running   0         10skafka-0   1/1       Running   0         22sNote that unplanned disruptions will not lead to unintentional updates during the update process. That is, the StatefulSet controller will always recreate the Pod at the correct version to ensure the ordering of the update is preserved. If a Pod is deleted, and if it has already been updated, it will be created from  the updated version of the StatefulSet’s spec.template. If the Pod has not already been updated, it will be created from the previous version of the StatefulSet’s spec.template. We will explore this further in the following sections.Staging an updateDepending on how your organization handles deployments and configuration modifications, you may want or need to stage updates to a StatefulSet prior to allowing the roll out to progress. You can accomplish this by setting a partition for the RollingUpdate. When the StatefulSet controller detects a partition in the updateStrategy of a StatefulSet, it will only apply the updated version of the StatefulSet’s spec.template to Pods whose ordinal is greater than or equal to the value of the partition.You can patch the kafka StatefulSet to add a partition to the RollingUpdate update strategy. If you set the partition to a number greater than or equal to the StatefulSet’s spec.replicas (as below), any subsequent updates you perform to the StatefulSet’s spec.template will be staged for roll out, but the StatefulSet controller will not start a rolling update.$ kubectl patch sts kafka -p ‘{“spec”:{“updateStrategy”:{“type”:”RollingUpdate”,”rollingUpdate”:{“partition”:3}}}}’statefulset “kafka” patchedIf you patch the StatefulSet to set the requested CPU to 0.3, you will notice that none of the Pods are updated.$ kubectl patch sts kafka –type=’json’ -p='[{“op”: “replace”, “path”: “/spec/template/spec/containers/0/resources/requests/cpu”, “value”:”0.3″}]’statefulset “kafka” patchedEven if you delete a Pod and wait for the StatefulSet controller to recreate it, you will notice that the Pod is recreated with current CPU request.$  kubectl delete po kafka-1pod “kafka-1″ deleted$ kubectl get po kafka-1 -wNAME      READY     STATUS              RESTARTS   AGEkafka-1   0/1       ContainerCreating   0          10skafka-1   0/1       Running   0         19skafka-1   1/1       Running   0         21s$ kubectl get po kafka-1 -o yamlapiVersion: v1kind: Podmetadata:  …    resources:      requests:        cpu: 250m        memory: 1GiRolling out a canaryOften, we want to verify an image update or configuration change on a single instance of an application before rolling it out globally. If you modify the partition created above to be 2, the StatefulSet controller will roll out a canary that can be used to verify that the update is working as intended.$ kubectl patch sts kafka -p ‘{“spec”:{“updateStrategy”:{“type”:”RollingUpdate”,”rollingUpdate”:{“partition”:2}}}}’statefulset “kafka” patchedYou can watch the StatefulSet controller update the kafka-2 Pod and pause after the update is complete.$  kubectl get po -lapp=kafka -wNAME      READY     STATUS    RESTARTS   AGEkafka-0   1/1       Running   0          50mkafka-1   1/1       Running   0          10mkafka-2   1/1       Running   0          29skafka-2   1/1       Terminating   0         34skafka-2   0/1       Terminating   0         38skafka-2   0/1       Terminating   0         39skafka-2   0/1       Terminating   0         39skafka-2   0/1       Pending   0         0skafka-2   0/1       Pending   0         0skafka-2   0/1       Terminating   0         20skafka-2   0/1       Terminating   0         20skafka-2   0/1       Pending   0         0skafka-2   0/1       Pending   0         0skafka-2   0/1       ContainerCreating   0         0skafka-2   0/1       Running   0         19skafka-2   1/1       Running   0         22sPhased roll outsSimilar to rolling out a canary, you can roll out updates based on a phased progression (e.g. linear, geometric, or exponential roll outs).If you patch the kafka StatefulSet to set the partition to 1, the StatefulSet controller updates one more broker. $ kubectl patch sts kafka -p ‘{“spec”:{“updateStrategy”:{“type”:”RollingUpdate”,”rollingUpdate”:{“partition”:1}}}}’statefulset “kafka” patchedIf you set it to 0, the StatefulSet controller updates the final broker and completes the update.$ kubectl patch sts kafka -p ‘{“spec”:{“updateStrategy”:{“type”:”RollingUpdate”,”rollingUpdate”:{“partition”:0}}}}’statefulset “kafka” patchedNote that you don’t have to decrement the partition by one. For a larger StatefulSet–for example, one with 100 replicas–you might use a progression more like 100, 99, 90, 50, 0. In this case, you would stage your update, deploy a canary, roll out to 10 instances, update fifty percent of the Pods, and then complete the update.Cleaning upTo delete the API Objects created above, you can use kubectl delete on the two manifests you used to create the ZooKeeper ensemble and the Kafka cluster.$ kubectl delete -f kafka_mini.yaml service “kafka-hs” deletedpoddisruptionbudget “kafka-pdb” deletedStatefulset “kafka” deleted$ kubectl delete -f zookeeper_mini.yaml service “zk-hs” deletedservice “zk-cs” deletedpoddisruptionbudget “zk-pdb” deletedstatefulset “zk” deletedBy design, the StatefulSet controller does not delete any persistent volume claims (PVCs): the PVCs created for the ZooKeeper ensemble and the Kafka cluster must be manually deleted. Depending on the storage reclamation policy of your cluster, you many also need to manually delete the backing PVs.DaemonSet rolling update, history, and rollbackIn this section, we’re going to show you how to perform a rolling update on a DaemonSet, look at its history, and then perform a rollback after a bad rollout. We will use a DaemonSet to deploy a Prometheus node exporter on each Kubernetes node in the cluster. These node exporters export node metrics to the Prometheus monitoring system. For the sake of simplicity, we’ve omitted the installation of the Prometheus server and the service for communication with DaemonSet pods from this blogpost. PrerequisitesTo follow along with this section of the blog, you need a working Kubernetes 1.7 cluster and kubectl version 1.7 or later. If you followed along with the first section, you can use the same cluster.DaemonSet rolling update: Prometheus node exportersFirst, prepare the node exporter DaemonSet manifest to run a v0.13 Prometheus node exporter on every node in the cluster:$ cat >> node-exporter-v0.13.yaml <<EOFapiVersion: extensions/v1beta1kind: DaemonSetmetadata:  name: node-exporterspec:  updateStrategy:    type: RollingUpdate  template:    metadata:      labels:        app: node-exporter      name: node-exporter    spec:      containers:      – image: prom/node-exporter:v0.13.0        name: node-exporter        ports:        – containerPort: 9100          hostPort: 9100          name: scrape      hostNetwork: true      hostPID: trueEOFNote that you need to enable the DaemonSet rolling update feature by explicitly setting DaemonSet .spec.updateStrategy.type to RollingUpdate.Apply the manifest to create the node exporter DaemonSet:$ kubectl apply -f node-exporter-v0.13.yaml –recorddaemonset “node-exporter” createdWait for the first DaemonSet rollout to complete:$ kubectl rollout status ds node-exporterdaemon set “node-exporter” successfully rolled outYou should see each of your node runs one copy of the node exporter pod:$ kubectl get pods -l app=node-exporter -o wideTo perform a rolling update on the node exporter DaemonSet, prepare a manifest that includes the v0.14 Prometheus node exporter:$ cat node-exporter-v0.13.yaml | sed “s/v0.13.0/v0.14.0/g” > node-exporter-v0.14.yamlThen apply the v0.14 node exporter DaemonSet:$ kubectl apply -f node-exporter-v0.14.yaml –recorddaemonset “node-exporter” configuredWait for the DaemonSet rolling update to complete:$ kubectl rollout status ds node-exporter …Waiting for rollout to finish: 3 out of 4 new pods have been updated…Waiting for rollout to finish: 3 of 4 updated pods are available…daemon set “node-exporter” successfully rolled outWe just triggered a DaemonSet rolling update by updating the DaemonSet template. By default, one old DaemonSet pod will be killed and one new DaemonSet pod will be created at a time. Now we’ll cause a rollout to fail by updating the image to an invalid value:$ cat node-exporter-v0.13.yaml | sed “s/v0.13.0/bad/g” > node-exporter-bad.yaml$ kubectl apply -f node-exporter-bad.yaml –recorddaemonset “node-exporter” configuredNotice that the rollout never finishes:$ kubectl rollout status ds node-exporter Waiting for rollout to finish: 0 out of 4 new pods have been updated…Waiting for rollout to finish: 1 out of 4 new pods have been updated…# Use ^C to exitThis behavior is expected. We mentioned earlier that a DaemonSet rolling update kills and creates one pod at a time. Because the new pod never becomes available, the rollout is halted, preventing the invalid specification from propagating to more than one node. StatefulSet rolling updates implement the same behavior with respect to failed deployments. Unsuccessful updates are blocked until it corrected via roll back or by rolling forward with a specification.$ kubectl get pods -l app=node-exporter NAME                  READY     STATUS         RESTARTS   AGEnode-exporter-f2n14   0/1       ErrImagePull   0          3m…# N = number of nodes$ kubectl get ds node-exporterNAME            DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGEnode-exporter   N         N         N-1       1            N           <none>          46mDaemonSet history, rollbacks, and rolling forwardNext,  perform a rollback. Take a look at the node exporter DaemonSet rollout history:$ kubectl rollout history ds node-exporter daemonsets “node-exporter”REVISION        CHANGE-CAUSE1               kubectl apply –filename=node-exporter-v0.13.yaml –record=true2               kubectl apply –filename=node-exporter-v0.14.yaml –record=true3               kubectl apply –filename=node-exporter-bad.yaml –record=trueCheck the details of the revision you want to roll back to:$ kubectl rollout history ds node-exporter –revision=2daemonsets “node-exporter” with revision #2Pod Template:  Labels:       app=node-exporter  Containers:   node-exporter:    Image:      prom/node-exporter:v0.14.0    Port:       9100/TCP    Environment:        <none>    Mounts:     <none>  Volumes:      <none>You can quickly roll back to any DaemonSet revision you found through kubectl rollout history:# Roll back to the last revision$ kubectl rollout undo ds node-exporter daemonset “node-exporter” rolled back# Or use –to-revision to roll back to a specific revision$ kubectl rollout undo ds node-exporter –to-revision=2daemonset “node-exporter” rolled backA DaemonSet rollback is done by rolling forward. Therefore, after the rollback, DaemonSet revision 2 becomes revision 4 (current revision):$ kubectl rollout history ds node-exporter daemonsets “node-exporter”REVISION        CHANGE-CAUSE1               kubectl apply –filename=node-exporter-v0.13.yaml –record=true3               kubectl apply –filename=node-exporter-bad.yaml –record=true4               kubectl apply –filename=node-exporter-v0.14.yaml –record=trueThe node exporter DaemonSet is now healthy again:$ kubectl rollout status ds node-exporterdaemon set “node-exporter” successfully rolled out# N = number of nodes$ kubectl get ds node-exporter NAME            DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGEnode-exporter   N         N         N         N            N           <none>          46mIf current DaemonSet revision is specified while performing a rollback, the rollback is skipped: $ kubectl rollout undo ds node-exporter –to-revision=4daemonset “node-exporter” skipped rollback (current template already matches revision 4)You will see this complaint from kubectl if the DaemonSet revision is not found:$ kubectl rollout undo ds node-exporter –to-revision=10error: unable to find specified revision 10 in historyNote that kubectl rollout history and kubectl rollout status support StatefulSets, too! Cleaning up$ kubectl delete ds node-exporterWhat’s next for DaemonSet and StatefulSetRolling updates and roll backs close an important feature gap for DaemonSets and StatefulSets. As we plan for Kubernetes 1.8, we want to continue to focus on advancing the core controllers to GA. This likely means that some advanced feature requests (e.g. automatic roll back, infant mortality detection) will be deferred in favor of ensuring the consistency, usability, and stability of the core controllers. We welcome feedback and contributions, so please feel free to reach out on Slack, to ask questions on Stack Overflow, or open issues or pull requests on GitHub.Post questions (or answer questions) on Stack OverflowJoin the community portal for advocates on K8sPortFollow us on Twitter @Kubernetesio for latest updatesConnect with the community on SlackGet involved with the Kubernetes project on GitHub
Quelle: kubernetes

Yes to databases in containers – Microsoft SQL Server available on Docker Store

Microsoft SQL Server 2017 is now available for the first time on multiple platforms: Windows, Linux and Docker. Your databases can be in containers with no lengthy setup and no prerequisites, and using Docker Enterprise Edition (EE) to modernize your database delivery. The speed and efficiency benefits of Docker and containerizing apps that IT Pros and developers have been enjoying for years are now available to DBAs.
 
Try the Docker SQL Server lab now and see how database containers start in seconds, and how you can package your own schemas as Docker images.
 
If you’ve ever sat through a SQL Server install, you know why this is a big deal: SQL Server takes a while to set up, and running multiple independent SQL Server instances on the same host is not simple. This complicates maintaining dev, test and CI/CD systems where tests and experiments might break the SQL Server instance.
With SQL Server in Docker containers, all that changes. Getting SQL Server is as simple as running `docker image pull`, and you can start as many instances on a host as you want, each of them fresh and clean, and tear them back down when you’re done.
Database engines are just like any other server-side application: they run in a process that uses CPU and memory, they store state to disk, and they make services available to clients over the network. That all works the same in containers, with the added benefit that you can limit resources, manage state with volume plugins and restrict network access.
Many Docker customers are already running highly-available production databases in containers, using technologies like Postgres. Now the portability, security and efficiency you get with Docker EE is available to SQL Server DBAs.
 
Modernize your database delivery with Docker

Traditional database delivery is difficult to fit into a modern CI/CD pipeline, but Docker makes it easy. You use Microsoft’s SQL Server Docker image and package your own schema on top, using an automated process. Anyone can run any version of the database schema, just by starting a container – they don’t even need to have SQL Server installed on their machine.
This is the database delivery workflow with Docker:

DBA pushes schema changes to source control
CI process packages the schema into a Docker image based on Microsoft-published SQL Server base images
CI process runs test suites using disposable database containers created from the new image
CD process upgrades the persistent database container in the test environment to the new image
CD process runs a database container to upgrade the production database, applying diff scripts to align the schema to the new image

The whole process of packaging, testing, distributing and upgrading databases can be automated with Docker. You run database containers in development and test environments which are fast, isolated, and have identical schema versions. You can continue using your existing production database, but use the tested Docker image to deploy updates to production.
Support and availability
Docker Enterprise Edition is a supported platform for running SQL Server in Linux in containers in production. SQL Server for Linux is a certified container image which means you have support from Microsoft and Docker to resolve any issues.
On Windows Server and Windows 10 you can run SQL Server Express in containers with Docker, to modernize your database delivery process for existing SQL Server deployments, without changing your production infrastructure.
The new SQL containers will be available for download in Docker Store in October – but you can start testing with the pre-GA containers in Store today. Already there have been over 1 million downloads from Docker Hub of the SQL Server preview for Linux containers.

Yes you can run databases in containers – #SQLServer on #Docker EEClick To Tweet

To learn more about Docker solutions for IT:

Try out the SQL Server Docker lab and run your own database containers
Visit IT Starts with Docker and sign up for ongoing alerts
Learn more about Docker Enterprise Edition and start a hosted trial
Sign up for upcoming webinars

The post Yes to databases in containers – Microsoft SQL Server available on Docker Store appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

Exciting new things for Docker with Windows Server 17.09

What a difference a year makes… last September, Microsoft and Docker launched Docker Enterprise Edition (EE), a Containers-as-a-Service platform for IT that manages and secures diverse applications across disparate infrastructures, for Windows Server 2016. Since then we’ve continued to work together and Windows Server 1709 contains several enhancements for Docker customers.
Docker Enterprise Edition Preview
To experiment with the new Docker and Windows features, a preview build of Docker is required. Here’s how to install it on Windows Server 1709 (this will also work on Insider builds):
Install-Module DockerProvider
Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview
To run Docker Windows containers in production on any Windows Server version, please stick to Docker EE 17.06.
Docker Linux Containers on Windows
A key focus of Windows Server version 1709 is support for Linux containers on Windows. We’ve already blogged about how we’re supporting Linux containers on Windows with the LinuxKit project.
To try Linux Containers on Windows Server 1709, install the preview Docker package and enable the feature. The preview Docker EE package includes a full LinuxKit system (all 13MB of it) for use when running Docker Linux containers.
[Environment]::SetEnvironmentVariable(“LCOW_SUPPORTED”, “1”, “Machine”)
Restart-Service Docker
To disable, just remove the environment variable:
[Environment]::SetEnvironmentVariable(“LCOW_SUPPORTED”, $null, “Machine”)
Restart-Service Docker
Docker Linux containers on Windows is in preview, with ongoing joint development by Microsoft and Docker. Linux Containers is also available on Windows 10 version 1709 (“Creators Update 2”). To try it out, install the special Docker for Windows preview available here.
Docker ingress mode service publishing on Windows
Parity with Linux service publishing options has been highly requested by Windows customers. Adding support for service publishing using ingress mode in Windows Server 1709 enables use of Docker’s routing mesh, allowing external endpoints to access a service via any node in the swarm regardless of which nodes are running tasks for the service.
These networking improvements also unlock VIP-based service discovery when using overlay networks so that Windows users are not limited to DNS Round Robin.
Named pipes in Windows containers
A common and powerful Docker pattern is to run Docker containers that use the Docker API of the host that the container is running on, for example to start more Docker containers or to visualize the containers, networks and volumes on the Docker host. This pattern lets you ship, in a container, software that manages or visualizes what’s going on with Docker. This is great for building software like Docker Universal Control Plane.
Running Docker on Linux, the Docker API is usually hosted on Unix domain socket, and since these are in the filesystem namespace, sockets can be bind-mounted easily into containers. On Windows, the Docker API is available on a named pipe. Previously, named pipes where not bind-mountable into Docker Windows containers, but starting with Windows 10 and Windows Server 1709, named pipes can now bind-mounted.
Jenkins CI is a neat way to demonstrate this. With Docker and Windows Server 1709, you can now:

Run Jenkins in a Docker Windows containers (no more hand-installing and maintaining Java, Git and Jenkins on CI machines)
Have that Jenkins container build Docker images and run Docker CI/CD jobs on the same host

I’ve built a Jenkins sample image (Windows Server 1709 required) that uses the new named-pipe mounting feature. To run it, simple start a container, grab the initial password and visit port 8080. You don’t have to setup any Jenkins plugins or extra users:
> docker run -d -p 8080:8080 -v .pipedocker_engine:.pipedocker_engine friism/jenkins
3c90fdf4ff3f5b371de451862e02f2b7e16be4311903649b3fc8ec9e566774ed
> docker exec 3c cmd /c type c:.jenkinssecretsinitialAdminPassword
<password>
Now create a simple freestyle project and use the “Windows Batch Command” build step. We’ll build my fork of the Jenkins Docker project itself:
git clone –depth 1 –single-branch –branch add-windows-dockerfile https://github.com/friism/docker-3 %BUILD_NUMBER%
cd %BUILD_NUMBER%
docker build -f Dockerfile-windows -t jenkins-%BUILD_NUMBER% .
cd ..
rd /s /q %BUILD_NUMBER%
Hit “Build Now” and see Jenkins (running in a container) start to build a CI job to build a container image on the very host it’s running on!
Smaller Windows base images
When Docker and Microsoft launched Windows containers last year, some people noticed that Windows container base images are not as small as typical Linux ones. Microsoft has worked very hard to winnow down the base images, and with 1709, the Nanoserver download is now about 70MB (200MB expanded on the filesystem).
One of the things that’s gone from the Nanoserver Docker image is PowerShell. This can present some challenges when authoring Dockerfiles, but multi-stage builds make it fairly easy to do all the build and component assembly in a Windows Server Core image, and then move just the results into a nanoserver image. Here’s an example showing how to build a minimal Docker image containing just the Docker CLI:
# escape=`
FROM microsoft/windowsservercore as builder
SHELL [“powershell”, “-Command”, “$ErrorActionPreference = ‘Stop'; $ProgressPreference = ‘SilentlyContinue';”]
RUN Invoke-WebRequest -Uri https://download.docker.com/win/static/test/x86_64/docker-17.09.0-ce-rc1.zip -OutFile ‘docker.zip’
RUN Expand-Archive -Path docker.zip -DestinationPath .

FROM microsoft/nanoserver
COPY –from=builder [“dockerdocker.exe”, “C:Program Filesdockerdocker.exe”]
RUN setx PATH “%PATH%;C:Program Filesdocker”
ENTRYPOINT [“docker”]
You now get the best of both worlds: Easy-to-use, full-featured build environment and ultra-small and minimal runtime images that deploy and start quickly, and have minimal exploit surface area. Another good example of this pattern in action are the .NET Core base images maintained by the Microsoft .NET team.
Summary
It’s hard to believe that Docker Windows containers GA’d on Windows Server 2016 and Windows 10 just one year ago. In those 12 months, we’ve seen lots of adoption by the Docker community and lots of uptake with customers and partners. The latest release only adds more functionality to smooth the user experience and brings Windows overlay networking up to par with Linux, with smaller container images and with support for bind-mounting named pipes into containers.
To learn more about Docker solutions for IT:

Learn more about Docker for Windows
Visit IT Starts with Docker and sign up for ongoing alerts
Learn more about Docker Enterprise Edition
Sign up for upcoming webinars

Exciting new things for #Docker with @Windows Server 17.09 Click To Tweet

The post Exciting new things for Docker with Windows Server 17.09 appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

A Day in the Life of a Docker Admin

About two months ago, we celebrated SysAdmin Day and kicked off our learning series for IT professionals. So far we’ve gone through the basics of containers and how containers are delivering value back to the company through cost savings. Now we begin the next stage of the journey by introducing how to deploy and operate containerized applications.
For the next few weeks, we are going to relate typical IT administrative tasks that many of you are familiar with to the tasks of a Docker admin. In the end, containerized applications are still applications and it is still primarily the responsibility of IT to secure and manage them. That is the same regardless of if the application runs in a container or not.
In this “A Day in the LIfe of a Docker Admin” series, we will discuss how common IT tasks translate to the world of Docker, such as:

Managing .NET apps and migrating them off Windows Server 2008
How networking with containers work and how to build an agile and secure network for containers
How to achieve a secure and compliant application environment for any industry
Integrating Docker with monitoring and logging tools

As a first step, let’s make sure we know how to deliver and deploy your first container.
Hello World!
Just like the first time you installed ESXi and built a virtual machine, or when you opened an account on AWS or Azure and spun up your first cloud instance, one of the first things anyone wants to do is deploy their first working Docker container.

With Docker, there are great hands-on systems you can use to get started right away, with nothing to download or install. The best place to start is the Play With Docker online classroom (PWD). PWD was started by a couple of our Docker Captains to do exactly what the name implies: get hands-on experience and learn. We have gathered together several labs geared towards IT pros into 3 stages, with a handful of short tutorials in each stage.
Stage 1: Hello World!
Create and run your first Docker containers, learn about images and layers, and then turn on Swarm Mode to run a multi-service / multi-container application in a cluster.
Stage 2: Dig Deeper
Learn about Docker platform security, securing containers, and Docker networking, and then combine all of your knowledge of Swarm Mode, Services, and Security in an Orchestration Workshop. Plus, there’s a link to our hosted Docker Enterprise Edition trial so you can try it all in the full system on our hosted site (still, free, of course).
Stage 3: Moving to Production
After you have seen and played with all the pieces, it is time to learn how to bring Docker in to your own environment. You can also download Docker for your own system on both Windows and Mac.
To learn more about Docker for IT Pros, be sure to check out these resources:

Watch this webinar on Docker + vSphere: Two Great Tools That Work Great Together
Sign up for our Docker for IT Pros newsletter for occasional updates on new assets and resources
Register for an upcoming Docker webinar

Follow our new blog series – A Day in the Life of a #Docker AdminClick To Tweet

The post A Day in the Life of a Docker Admin appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/