Michael Irwin – Docker https://www.docker.com Thu, 14 Sep 2023 19:23:31 +0000 en-US hourly 1 https://wordpress.org/?v=6.5.3 https://www.docker.com/wp-content/uploads/2024/02/cropped-docker-logo-favicon-32x32.png Michael Irwin – Docker https://www.docker.com 32 32 DockerCon Workshops: What to expect https://www.docker.com/blog/dockercon-workshops-what-to-expect/ Thu, 14 Sep 2023 19:23:29 +0000 https://www.docker.com/?p=46090 DockerCon 2023 will be held October 4-5 in Los Angeles, and we are working hard to make it an incredible experience for everyone. The program is now online so you can plan your experience by day, time, and theme, including AI and Machine Learning, Web Application / Web Development, Building and Deploying Applications, Secure Software Delivery, and Open Source. This year we’re offering talks, workshops, and panel discussions, plus the usual vibrant DIY hallway track. We can’t wait to see you there — whether you’re joining virtually or in person. (If this will be your first DockerCon experience, read “4 Reasons I’m Excited to Attend DockerCon 2023” to see why I can’t wait to go to LA next month.)

On October 3, we will have several DockerCon hands-on workshops, organized by fantastic presenters, covering a variety of topics. If you’re joining in person, the workshops are included in the price of your admission. Just don’t forget to register for the workshop you’d like to attend! 

If you’ll be attending DockerCon virtually, the Getting Started with Docker workshop is free, and the other workshops cost US$150. This is a fantastic opportunity to use any learning and development allocations you might have!

What are the workshops and what will they cover? I’m glad you asked! Let’s dive in.

banner docker desktop performance update

Getting Started with Docker

Are you new to Docker? Are you overwhelmed with everything there is to learn? Are you unsure why you should learn about containers and you don’t understand their benefits? Or do you just want to help your team be more productive? If so, this workshop is for you!

This workshop will walk through the basics of containers and images, including answering the question: Why should I even care about containers? You’ll then learn how to run containers, create your own images, and set up your own development environments to enable the success of your team. The workshop will close out by introducing Docker Compose, which makes it even easier to share your dev environment — devs will only need to run git clone and docker compose up and then focus on their code.

After this session, you’ll have the basic knowledge to help your team be more productive with containerized dev environments. It’ll also be a fantastic primer to help you get the most out of the rest of DockerCon.

Docker for Machine Learning / AI / Data Science

The AI/ML space has exploded with activity and excitement over the past year. There are many great tools available, but keeping up with everything can be hard. If you want to get caught up and started with AI/ML, this is the workshop for you.

This workshop is being provided through a close collaboration with OctoML and Docker. In this workshop, you’ll start with a crash course on the latest developments in generative LLMs and image generation models, after which you’ll learn about fine-tuning your own model. You’ll then take that knowledge and create a multi-modal containerized application using Python and Docker. The workshop wraps up with a fireside chat and Q&A with the presenters and speakers, allowing you to dive in deep!

After this workshop, you’ll have a better understanding of the recent advancements in the AI/ML space and have successfully created your own AI/ML-supported application.

Secure Development with Docker

Modern applications are composed of many libraries and components from various sources being built and deployed on various systems, making it difficult for developers, platform teams, and security professionals to know what software is running and whether it is secure. Issues may arise from your own code, its dependencies, base images, and many other sources — and new vulnerabilities are being discovered all the time! If you want to secure your software supply chain, this is the workshop for you.

In this workshop, you’ll start off by learning about and remediating several common attacks against your software supply chain. From there, you’ll dive deeply into securing the software supply chain, taking a comprehensive view of the problem and possible solutions. With this knowledge, you’ll learn how Docker Scout helps you understand what’s in your images, how those images are constructed, what’s running where, and providing actionable feedback early in the process so concerns are eliminated before they become problems.

After this session, you’ll know how to take these learnings back to your organization so your team:

  • Understands and can verify how their applications are built
  • Quickly and easily identifies problems with your software supply chain and remediates them
  • Uses policies to encourage best practices across your organization without blocking fixes getting to production
  • Provides visibility into the security stance of your software to others within your organization

Docker for Web Development

Are you a web developer who isn’t quite sure why you should use Docker in your development environment? Or are you just not quite sure how to get started? If so, this workshop is specifically for you.

The Docker for Web Development workshop is being presented by Timo Stark, a Docker Captain and Principal Engineer at NGINX. This hands-on workshop starts with an overview of Docker Desktop, ensuring everyone understands the basics of containers and images. With that foundational knowledge, you’ll spend the remainder of the workshop building an application, containerizing it along the way, using a combination of NodeJS and PHP backends and a React frontend. You’ll learn how to connect multiple services together and build a development environment that will require no installation and configuration (beyond Docker Desktop), helping speed up productivity and ensuring reliable environments across your development team.

After this session, you’ll have a strong understanding of how Docker can be used to speed up your web development stack and how you can help enable your team to be more productive and have more consistent environments.

Register now

DockerCon is coming up quickly! We’d love to see you in person, but you’re welcome to join us virtually as well. Visit the DockerCon site to register for the conference, see the program, and register for workshops now.

Learn more

]]>
4 Reasons I’m Excited to Attend DockerCon 2023 https://www.docker.com/blog/4-reasons-im-excited-to-attend-dockercon-2023/ Thu, 20 Jul 2023 15:21:19 +0000 https://www.docker.com/?p=43958 DockerCon is back! DockerCon is back! DockerCon is back! I can’t tell you how excited this makes me. Now, you may recognize that I work at Docker, but I haven’t always. Although I’ve worked at Docker for about 18 months, I’ve been in the Docker space for a long time. In fact, my first presentation about Docker was all the way back in December 2015.

Since then, I’ve helped organize, run, and speak at many meetups, and I was recognized as a Docker Captain in March 2017. I even received the inaugural Community Leader of the Year award for the North America region in 2018. As I look back throughout my career, many of my fondest memories can be attributed to my time at DockerCon. This will be my sixth in-person DockerCon, and here are four reasons I’m happy to be back in person this year.

Graphic with white DockerCon text on graduated blue background

Let’s go!

Photo of Michael Irwin, showing dark-haired man pointing at a DockerCon EU 2018 sign (in Barcelona) that was located outside the main keynote room.
Michael Irwin at DockerCon EU 2018 in Barcelona.

#1 — Developer-focused content

We’ve all been to many “developer-focused” conferences, only to find out most of the sessions are sponsored sessions, the keynotes are relatively boring, and there really isn’t much focus on developers. I remember going to DockerCons and learning everything about Docker’s latest features, scaling our efforts to my team and across the organization, deepening my understanding of various cloud-native design patterns and architectures, and helping my team be as productive as possible. Especially earlier in my career, this experience helped me become the developer I am today.

As I’m helping plan DockerCon this year, I’ll admit we want all of the same things from the past, just updated. We want to help each and every developer better their craft and better deliver results for their customers… whoever they might be.

Selfie of Michael Irwin, showing smiling man in front of waving audience members, taken before his “Containers for Beginners” talk at DockerCon 2019 in San Francisco.
A selfie before my “Containers for Beginners” talk at DockerCon 2019 in San Francisco.

#2 — The hallway track

Honestly, this is probably one of my favorite parts of DockerCon.The Hallway Track is a special track of DockerCon in which attendees can network and learn from each other. If you want to learn about something, simply make a request! If you want to teach others, submit a session! Then, small groups get together and just chat. These hallway moments have truly been some of the best moments of DockerCon, both learning and teaching. There’s simply no better way to learn than from others who have walked the same journey.

Photo of large green "Hallway track" banner hanging in front of a wall of windows.
The hallway track offers many chances to learn and connect.

#3 — Reconnecting with and making new friends

During my time as a Docker Captain from 2017-2022 (I had to semi-retire when I joined Docker), DockerCon was such a fun time to get together and spend time with my fellow Captains. In many ways, this felt like a family reunion. We learned together, taught each other, and provided insight and direction to the Docker product and executive teams. 

Although connecting with old friends was great, I always made new friends every year. Many of those came from the Hallway Track, but random conversations at meals, the conference party, and other one-offs have provided me with friendships and contacts I still use to this day. Whenever I’m stuck with any problem, there’s a good chance I can reach out to someone that I met at DockerCon.

Selfie showing Michael Irwin (wearing nautical hat) with other Docker Captains at DockerCon EU 2017 in Copenhagen.
Docker Captains gathered at DockerCon EU 2017 in Copenhagen.
Group photo showing people wearing bike helmets, sunglasses, and riding gear, taken during a pre-conference bike ride at DockerCon 2019 in San Francisco.
Group selfie taken during a pre-conference bike ride at DockerCon 2019 in San Francisco.

#4 — Fun all around!

I may or may not be known for roaming around the DockerCon EU 2017 vendor hall in an inflatable dinosaur suit or using that same suit to start my “Containers for Beginners” talk at DockerCon 2019. Why? To be completely honest, because it’s fun! And while a conference isn’t only about having fun, it’s certainly a lot easier to be a part of a community when you’re doing so. DockerCon is not afraid to have a little bit of fun.

Photo of person in brown dinosaur suit behind seated people at DockerCon booth.
Me wearing a dino suit at the Docker booth at DockerCon EU 2017 in Copenhagen.

While these are some of the reasons I’m excited to have DockerCon back in person this year, and I’m sure there are tons more! We’d love to hear what makes you excited. Tweet #DockerCon why you’re excited, and we just might highlight you.

Learn more at the DockerCon 2023 website and register by August 31 to take advantage of early bird pricing. 

Learn more

]]>
Introducing the Docker+Wasm Technical Preview https://www.docker.com/blog/docker-wasm-technical-preview/ Mon, 24 Oct 2022 14:00:00 +0000 https://www.docker.com/?p=38243 Editor’s note: With the release of Docker Desktop 4.15, Docker+Wasm is now in beta! Check out the documentation to learn more.


The Technical Preview of Docker+Wasm is now available! Wasm has been producing a lot of buzz recently, and this feature will make it easier for you to quickly build applications targeting Wasm runtimes.

As part of this release, we’re also happy to announce that Docker will be joining the Bytecode Alliance as a voting member. The Bytecode Alliance is a nonprofit organization dedicated to creating secure new software foundations, building on standards such as WebAssembly and WebAssembly System Interface (WASI).

bytecode alliance logo

What is Wasm?

WebAssembly, often shortened to Wasm, is a relatively new technology that allows you to compile application code written in over 40+ languages (including Rust, C, C++, JavaScript, and Golang) and run it inside sandboxed environments.

The original use cases were focused on running native code in web browsers, such as Figma, AutoCAD, and Photoshop. In fact, fastq.bio saw a 20x speed improvement when converting their web-based DNA sequence quality analyzer to Wasm. And Disney built their Disney+ Application Development Kit on top of Wasm! The benefits in the browser are easy to see.

But Wasm is quickly spreading beyond the browser thanks to the WebAssembly System Interface (WASI). Companies like Vercel, Fastly, Shopify, and Cloudflare support using Wasm for running code at the edge, and Fermyon is building a platform to run Wasm microservices in the cloud.

Why Docker?

At Docker, our goal is to help developers bring their ideas to life by conquering the complexity of app development. We strive to make it easy to build, share, and run your application, regardless of the underlying technologies. By making containers accessible to all, we proved our ability to make the lives of developers easier and were recognized as the #1 most-loved developer tool.

We see Wasm as a complementary technology to Linux containers where developers can choose which technology they use (or both!) depending on the use case. And as the community explores what’s possible with Wasm, we want to help make Wasm applications easier to develop, build, and run using the experience and tools you know and love.

How do I get the technical preview?

Ready to dive in and try it for yourself? Great! But before you do, a couple quick notes to keep in mind as you start exploring:

  • Important note #1: This is a technical preview build of Docker Desktop, and things might not work as expected. Be sure to back up your containers and images before proceeding.
  • Important note #2: This preview has the containerd image store enabled and cannot be disabled. If you’re not currently using the containerd image store, then pre-existing images and containers will be inaccessible.

WASM is no longer in beta. Download Docker Desktop to start using it.

Are there any known limitations?

Yes! This is an early technical preview and we’re still working on making the experience as smooth as possible. But here are a few things you should be aware of:

  1. Docker Compose may not exit cleanly when interrupted
    • Workaround: Clean up docker-compose processes by sending them a SIGKILL (killall -9 docker-compose).
  2. Pushes to Hub might give an error stating server message: insufficient_scope: authorization failed, even after logging in using Docker Desktop
    • Workaround: Run docker login in the CLI

Okay, so how does the Wasm integration actually work?

We’re glad you asked! First off, we need to remind you that since this is a technical preview, things may change quite rapidly. But here’s how it currently works.

  1. We’re leveraging our recent work to migrate image management to containerd, as it provides the ability to use both OCI-compatible artifacts and containerd shims.
  2. We collaborated with WasmEdge to create a containerd shim. This shim extracts the Wasm module from the OCI artifact and runs it using the WasmEdge runtime.
  3. We added support to declare the Wasm runtime, which will enable the use of this new shim.
docker containerd wasm diagram

Let’s look at an example!

After installing the preview, we can run the following command to start an example Wasm application:

docker run -dp 8080:8080 --name=wasm-example --runtime=io.containerd.wasmedge.v1 --platform=wasi/wasm32 michaelirwin244/wasm-example

Since a few of the flags might be unfamiliar, let’s explain what they’re doing:

  • --runtime=io.containerd.wasmedge.v1 – This informs the Docker engine that we want to use the Wasm containerd shim instead of the standard Linux container runtime
  • --platform=wasi/wasm32 – This specifies the architecture of the image we want to use. By leveraging a Wasm architecture, we don’t need to build separate images for the different architectures. The Wasm runtime will do the final step of converting the Wasm binary to machine instructions.

After the image is pulled, the runtime reads the ENTRYPOINT of the image to locate and extract the Wasm module. The module is then loaded into the Wasm runtime, started, and networking is configured. We now have a Wasm app running on our machine!

This particular application is a simple web server that says “Hello world!” and echos data back to us. To verify it’s working, let’s first view the logs.

docker logs wasm-example
Server is now running

We can get the “Hello world” message by either opening to http://localhost:8080 or using curl.

curl localhost:8080

And our response will give us a Hello world message:

Hello world from Rust running with Wasm! Send POST data to /echo to have it echoed back to you

To send data to the echo endpoint, we can use curl:

curl localhost:8080/echo -d '{"message":"Hi there"}' -H "Content-type: application/json"

And we’ll see the data sent back to use in the response:

{"message":"Hi there"}

To remove the application, you can remove it as you do any other Docker service:

docker rm -f wasm-example

The new integration means you can run a Wasm application alongside your Linux containers (even with Compose). To learn more, check out the docs!

What’s next for Wasm and Docker?

Another great question! Wasm is rapidly growing and evolving, including exploration on how to support multi-threading, garbage collection, and more. There are also many still-to-tackle challenges, including shortening the developer feedback loop and possible paths to production.

So try it out yourself and then let us know your thoughts or feedback on the public roadmap. We’d love to hear from you!

]]>
Creating the KubeCon Flappy Dock Extension https://www.docker.com/blog/creating-the-kubecon-flappy-dock-extension/ Mon, 13 Jun 2022 15:20:46 +0000 https://www.docker.com/?p=33978 During KubeCon EU 2022, our Docker team was able to show off many of our latest releases, including Docker Desktop for Linux and Docker Extensions. Community feedback on these has been overwhelmingly positive! To help demonstrate the types of extensions available, we demoed the Disk Usage extension and built our own extension just for the conference: Flappy Dock! Let’s dive into the extension and how we built it.

 

image3

 

The Makeup of an Extension

In case you haven’t built your own extension, extensions are simply specially formatted Docker images that contain a frontend and optional backend services. The frontend is simply a web app that’s extracted from the image and rendered within Docker Desktop. Therefore, anything that can run in a web browser can run as an extension! The extension’s metadata.json (more on that later) configuration file tells Docker Desktop how to install and use it.

As we looked around for fun ideas for KubeCon, we decided to run a simple game. Fortunately, we found a web adaptation of Flappy Bird on GitHub — thanks nebez/floppybird! This would be a perfect starting point.

Converting Flappy Bird to Flappy Dock

While Flappy Bird is fun, why don’t we make it match our nautical theme while using Moby and Molly? Luckily, that’s a pretty easy change to make with the following steps.

1) Using the NGINX Container

After cloning the repo locally, we can launch the app using an nginx container. Using the new Featured Images page, I can start my container with a few clicks. If I start an nginx container, select the directory I cloned the repo into, and open the site, I get Flappy Bird! Feel free to play a game or two (use either the mouse or spacebar to play the game)!

 

image1

 

2) Swapping Out Our Images

To customize the game, we need to swap out some images with some Docker-themed images! Each of the following images go into the assets folder.

 

3) Changing Your CSS

We’ll modify the css/main.css and replace the original sky, ceiling, and land assets with our new images. If we refresh our browser, we should have the following now!

 

image6

 

Our images are now in place, but we’ll need to tweak the colors where the images aren’t being used. We’ll do that next!

In the css/main.css file, make the following changes:

  1. In the #sky declaration, set the background color value to #222D6D
  2. In the #land declaration, set the background color value to #094892

 

You can see our game coming together!

 

image4

 

4) Updating Your Game Code

With both CSS classes in place, let’s update the game code to randomly choose a character. We also must clear out the previous character choice, since you can play the game multiple times without refreshing the page. In the js/main.js file, locate the showSplash function. At the top of that function, add the following:

const useMolly = Math.floor(Math.random() * 2) === 0;
$("#player")
  .removeClass("moby").removeClass("molly")
  .addClass(useMolly ? "molly" : "moby");

 

Finally, check out your game. You should now successfully have either Moby or Molly as your main character while playing Flappy Dock!

 

image2

 

 

Turning Flappy Dock into an Extension

Now that we have our web-based game ready to go, it’s time to turn it into an extension! As we mentioned earlier, an extension is simply a specialized image that contains a metadata.json with configurations.

To use the docker extension commands, first install the Docker Extension SDK plugin (instructions can be found here). This is currently the only method to install an extension not listed in the Extensions Marketplace.

1) Adding Configurations to the Root

In the root of our project, we’re then going to create a metadata.json file with the following contents:

{
 "icon": "docker.svg",
 "ui": {
   "dashboard-tab": {
     "title": "Flappy Dock",
     "root": "ui",
     "src": "index.html"
   }
 }
}

 

This configuration specifies the extension title and the location within the container image that contains the web-based application.

2) Creating an Image

Now, all that’s left is to create a container image. We can use the following Dockerfile to do so!

FROM alpine
LABEL org.opencontainers.image.title="Flabby Dock" \
   org.opencontainers.image.description="A fun extension to play Flappy Bird, but Docker style!" \
   org.opencontainers.image.vendor="Your name here" \
   com.docker.desktop.extension.api.version=">= 0.2.3" \
   com.docker.extension.screenshots="" \
   com.docker.extension.detailed-description="" \
   com.docker.extension.publisher-url="" \
   com.docker.extension.additional-urls="" \
   com.docker.extension.changelog=""
 
COPY metadata.json .
COPY index.html ui/
COPY assets ui/assets
COPY css ui/css
COPY js ui/js

 

The Dockerfile here simply puts the metadata.json at the root and copies other key files in the locations we specified in our config. You can also use various labels to describe the image (which is helpful for images in the Marketplace).

At this point, we can build our image and install it with the following commands:

docker build -t flappy-dock .
docker extension install flappy-dock

 

3) Confirming Within Docker Desktop

Within Docker Desktop, we should now see Flappy Dock in the sidebar! If you click on it, you can play the game!

 

image5

 

 

For KubeCon, we added a few additional changes to the app — including a running total score, run count, and an available “easy mode” with extra space between the pipes. Want to learn more? Check out our version of the code in this GitHub code repo.

Recap

While a fairly basic example — by building Flappy Dock into an extension — we demonstrated how to turn any web-based interface into an extension. If you have ideas for your own tools, documentation, or even games, we hope this blog post helped out!

If you want to dive deeper into Docker Extensions and explore the additional capabilities provided through the SDK (including running Docker commands, listing containers and images, and more), visit the resources below. We’d love to hear your feedback and about what you want to build with Docker Extensions!

 

]]>