Docker Captains – Docker https://www.docker.com Fri, 28 Oct 2022 14:41:18 +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 Docker Captains – Docker https://www.docker.com 32 32 Docker Captain Take 5 — Nelson https://www.docker.com/blog/docker-captain-take-5-nelson/ Fri, 28 Oct 2022 14:00:00 +0000 https://www.docker.com/?p=38091 Docker Captains are select members of the community that are both experts in their field and passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtles over here). Today, we’re interviewing Nelson, one of our newest Captains. He’s the founder of Amigoscode and based in London, United Kingdom. You can follow Nelson on Twitter and Instagram for updates on his programming courses, YouTube videos, and more. 

Profile image for Docker Captain Nelson.

How/when did you first discover Docker?

I discovered Docker back in 2015 while building a PoC that needed a local Postgres database. I was so impressed that with one single command I had a database up and running and was able to connect the backend to it. Ever since then, I’ve learned even more about Docker and use it in all of my projects. It has been a game-changer.

What’s your favorite Docker command?

docker exec -- it container-name/id /bin/(bash/sh)

What’s your top tip for working with Docker that others may not know?

Whenever building a PoC, you should always use Docker Compose. With this Docker tool, you can spin an entire set of applications that can talk to each other with a single command. In most cases, you can spin up your entire dev environment using Docker Compose. 

What’s the coolest Docker demo you have done/seen?

I’ve built a Golang CLI tool that transcribes all of my videos and translates captions to any language. 

What have you worked on in the past six months that you’re particularly proud of?

Serverless email marketing tool to send emails to my students and subscribers. This tool is written in Golang and deployed on AWS Lambdas running as a Docker container.

What do you anticipate will be Docker’s biggest announcement this year?

I have no idea, but I know it’ll be cool.

What are some personal goals for the next year with respect to the Docker community?

Provide end-to-end programming content that teaches real-world applications by incorporating tools such as Docker. 

What was your favorite thing about DockerCon 2022?

The diversity of software engineers. There’s always something new to take from the talks/presentations.

Looking to the distant future, what’s the technology that you’re most excited about and you think holds a lot of promise?

I think serverless technology will enable engineering teams to think less about servers and focus more on the business side. 

Rapid fire questions…

What new skill have you mastered during the pandemic?

Cooking

Cats or Dogs?

Cats

Salty, sour, or sweet?

Sweet

Beach or mountains?

Mountains

Your most often-used emoji?

😁

]]>
Creating Kubernetes Extensions in Docker Desktop https://www.docker.com/blog/creating-kubernetes-extensions-in-docker-desktop/ Mon, 26 Sep 2022 14:00:00 +0000 https://www.docker.com/?p=37661 This guest post is courtesy of one of our Docker Captains! James Spurin, a DevOps Consultant and Course/Content Creator at DiveInto, recalls his experience creating the Kubernetes Extension for Docker Desktop. Of course, every journey had its challenges. But being able to leverage the powerful open source benefits of the loft.sh vcluster Extension was well worth the effort!

docker kubernetes loft extension 900x600 1

Ever wondered what it would take to create your own Kubernetes Extensions in Docker Desktop? In this blog, we’ll walk through the steps and lessons I learned while creating the k9s Docker Extension and how it leverages the incredible open source efforts of loft.sh vcluster Extension as crucial infrastructure components.

Docker Desktop running the k9s Extension.

Why build a Kubernetes Docker Extension?

When I initially encountered Docker Extensions, I wondered:

“Can we use Docker Extensions to communicate with the inbuilt Docker-managed Kubernetes server provided in Docker Desktop?”

Docker Extensions open many opportunities with the convenient full-stack interface within the Extensions pane.

Traditionally when using Docker, we’d run a container through the UI or CLI. We’d then expose the container’s service port (for example, 8080) to our host system. Next, we’d access the user interface via our web browser with a URL such as http://localhost:8080.

Diagram directing user to run a Docker container via the UI/CLO and expose the service port. Then, the user should access the service via their web brower.

While the UI/CLI makes this relatively simple, this would still involve multiple steps between different components, namely Docker Desktop and a web browser. We may also need to repeat these steps each time we restart the service or close our browser.

Docker Extensions solve this problem by helping us visualize our backend services through the Docker Dashboard.

Diagram showing the user directing accessing the Docker Extension, instead of repeating the original steps.

Combining Docker Desktop, Docker Extensions, and Kubernetes opens up even more opportunities. This toolset lets us productively leverage Docker Desktop from the beginning stages of development to container creation, execution, and testing, leading up to container orchestration with Kubernetes.

Flow diagram beginning with code development and container build then ending with container testing and orchestration with Kubernetes.

Challenges creating the k9s Extension

Wanting to see this in action, I experimented with different ways to leverage Docker Desktop with the inbuilt Kubernetes server. Eventually, I was able to bridge the gap and provide Kubernetes access to a Docker Extension.

At the time, this required a privileged container — a security risk. As a result, this approach was less than ideal and wasn’t something I was comfortable sharing…

three padlocks
Photo by FLY:D on Unsplash

Let’s dive deeper into this.

Docker Desktop uses a hidden virtual machine to run Docker. We also have the Docker-managed Kubernetes instance within this instance, deployed via kubeadm:

Diagram demonstrating a Docker-managed Kubernetes instance within a virtual machine, deployed via kubeadm.

Docker Desktop conveniently provides the user with a local preconfigured kubeconfig file and kubectl command within the user’s home area. This makes accessing Kubernetes less of a hassle. It works and is a fantastic way to fast-tracking access for those looking to leverage Kubernetes from the convenience of Docker.

However, this simplicity poses some challenges from an extension’s viewpoint. Specifically, we’d need to find a way to provide our Docker Extension with an appropriate kubeconfig file for accessing the in-built Kubernetes service.

Finding a solution with loft.sh and vcluster

Fortunately, the team at loft.sh and vcluster were able to address this challenge! Their efforts provide a solid foundation for those looking to create their Kubernetes-based Extensions in Docker Desktop.

Loft website homepage advertising virtual Kubernetes clusters that run inside regular namespaces.

When launching the vcluster Docker Extension, you’ll see that it uses a control loop that verifies Docker Desktop is running Kubernetes.

From an open source viewpoint, this has tremendous reusability for those creating their own Docker Extensions with Kubernetes. The progress indicator shows vcluster checking for a running Kubernetes service, as we can see in the following:

Docker Desktop vcluster Extension pane displaying loading screen as it searches for a running Kubernetes service.

If the service is running, the UI loads accordingly:

Docker Desktop vcluster Extension pane displaying a list of any running Kubernetes services.

If not, an error is displayed as follows:

Docker Desktop vcluster Extension pane displaying an error message.

While internally verifying that the Kubernetes server is running, loft.sh’s vcluster Extension cleverly captures the Docker Desktop Kubernetes kubeconfig. The vcluster Extension does this using a javascript hostcli call out with kubectl binaries included in the extension (to provide compatibility across Windows, Mac, and Linux).

Then, it posts the captured output to a service running within the extension. The service in turn writes a local kubeconfig file for use by the vcluster Extension. 🚀

// Gets docker-desktop kubeconfig file from local and save it in container's /root/.kube/config file-system.
// We have to use the vm.service to call the post api to store the kubeconfig retrieved. Without post api in vm.service
// all the combinations of commands fail
export const updateDockerDesktopK8sKubeConfig = async (ddClient: v1.DockerDesktopClient) => {
    // kubectl config view --raw
    let kubeConfig = await hostCli(ddClient, "kubectl", ["config", "view", "--raw", "--minify", "--context", DockerDesktop]);
    if (kubeConfig?.stderr) {
        console.log("error", kubeConfig?.stderr);
        return false;
    }

    // call backend to store the kubeconfig retrieved
    try {
        await ddClient.extension.vm?.service?.post("/store-kube-config", {data: kubeConfig?.stdout})
    } catch (err) {
        console.log("error", JSON.stringify(err));
    }

How the k9 Extension for Docker Desktop works

With loft.sh’s ‘Docker Desktop Kubernetes Service is Running’ control loop and the kubeconfig capture logic, we have the key ingredients to create our Kubernetes-based Docker Extensions.

oil and flour ingredients
Photo by Anshu A on Unsplash

The k9s Extension that I released for Docker Desktop is essentially these components, with a splash of k9s and ttyd (for the web terminal). It’s the loft.sh vcluster codebase, reduced to a minimum set of components with k9s added.

The source code is available at https://github.com/spurin/k9s-dd-extension

The README.md file, found on GitHub, explains the details of the k9s extension for Docker Desktop.

While loft.sh’s vcluster stores the kubeconfig file in a particular directory, the k9s Extension expands this further by combining this service with a Docker Volume. When the service receives the post request with the kubeconfig, it’s saved as expected.

The kubeconfig file is now in a shared volume that other containers can access, such as the k9s as shown in the following example:

A snippet of code demonstrating a kubeconfig file stored in a shared volume to be accessed by other containers.

When the k9s container starts, it reads the environment variable KUBECONFIG (defined in the container image). Then, it exposes a terminal web-based service on port 35781 with k9s running.

If Kubernetes is running as expected in Docker Desktop, we’ll reuse loft.sh’s Kubernetes control loop to render an iframe, to the service on port 35781.

if (isDDK8sEnabled) {
            const myHTML = '<style>:root { --dd-spacing-unit: 0px; }</style><iframe src="http://localhost:35781" frameborder="0" style="overflow:hidden;height:99vh;width:100%" height="100%" width="100%"></iframe>';
            component = <React.Fragment>
            <div dangerouslySetInnerHTML={{ __html: myHTML }} />
            </React.Fragment>
        } else {
            component = <Box>
                <Alert iconMapping={{
                    error: <ErrorIcon fontSize="inherit"/>,
                }} severity="error" color="error">
                    Seems like Kubernetes is not enabled in your Docker Desktop. Please take a look at the <a
                    href="https://docs.docker.com/desktop/kubernetes/">docker
                    documentation</a> on how to enable the Kubernetes server.
                </Alert>
            </Box>
        }

This renders k9s within the Extension pane when accessing the k9s Docker Extension.

k9 extension running in docker desktop

Conclusion

With that, I hope that sharing my experiences creating the k9s Docker Extension inspires you. By leveraging the source code for the Kubernetes k9s Docker Extension (standing on the shoulders of loft.sh), we open the gate to countless opportunities.

You’ll be able to fast-track the creation of a Kubernetes Extension in Docker Desktop, through changes to just two files: the docker-compose.yaml (for your own container services) and the UI rendering in the control loop.

Of course, all of this wouldn’t be possible without the minds behind vcluster. I’d like to give special thanks to loft.sh’s Lian Li, who I met at Kubecon and introduced me to loft.sh/vcluster. And I’d also like to thank the development team who are referenced both in the vcluster Extension source code and the forked version of k9s!

Thanks for reading – James Spurin

Not sure how to get started or want to learn more about Docker Extensions like this one? Check out the following additional resources:

You can also learn more about James, his top tips for working with Docker, and more in his feature on our Docker Captain Take 5 series. 

]]>
Docker Captain Take 5 — Sebastien Flochlay https://www.docker.com/blog/docker-captain-take-5-sebastien-flochlay/ Fri, 02 Sep 2022 14:00:00 +0000 https://www.docker.com/?p=36835 Docker Captains are select members of the community that are both experts in their field and are passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtles over here). Today, we’re interviewing Sebastien Flochlay who recently joined the Captain’s Program. He is a Tech Ambassador and Co-Founder of Stack Labs and is based in Toulouse, France.

Headshot of Sebastien Flochlay, Tech Ambassador and co-founder of Stack Labs.

How/when did you first discover Docker?

I discovered Docker in 2016, during my first meetup. It was a Software Craftsmanship group that presented an interesting tool — Docker!

It was an amazing discovery for me! Simplicity, rapidity, portability, and scalability —  I had just discovered containerization.

Today, Docker is an integral part of my daily life as a developer. I deliver my applications in Docker images. I build and run my CI/CD pipelines into Docker containers. I deploy locally my development environments using Docker compose or Kind. And I use Kubernetes or Google Cloud Run for release.

What is your favorite Docker command?

My favorite command is definitely this one: docker run.

It’s the most complete and interesting, yet it’s certainly with this one that you started.

In fact, it’s through this command that we discover the world of Docker. It’s with this command that we learn how and why to publish container ports, manage volumes, or define environment variables. It’s with her that we learn to play with the Network or to control how much memory, or CPU a container can use.

In short, it’s definitely my favorite docker command line.

What is your top tip for working with Docker that others may not know?

I don’t have any secret pro tips, just simple advice: learn how to write Dockerfiles correctly.

Most of the time, when I help a team on their Docker usage, the errors are focused on the Dockerfiles and their writing. There are tons of best practices for writing a Dockerfile (ex. exclude files with a .dockerignore, use multi-stage builds, minimize the number of layers, and so many more), so use them!

If you are interested, there is an amazing documentation page on the subject: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

What’s the coolest Docker demo you have done/seen?

I’ve seen so many that I can’t choose. But I take this opportunity to thank all those who work to share their knowledge on Docker.

What have you worked on in the past six months that you’re particularly proud of?

I created a 3-day training on Flutter. I put a lot of time and energy into it, and finally, I had the chance to perform it several times, and I liked it. I’m really proud of it! 😋

What do you anticipate will be Docker’s biggest announcement this year?

I would say Docker extensions, but that’s cheating. Eva Bojorges told me about it at the Devoxx2022 conference. 🤫

What are some personal goals for the next year with respect to the Docker community?

I’d like to create some training resources on Docker such as videos, blog posts, workshops, or meetups. I don’t know yet, but I want to participate in the Docker community.

What was your favorite thing about DockerCon 2022?

There are two things that I really liked. The first is Shy Ruparel’s excellent workshop “Getting Started with Docker“. It’s a perfect and very complete introduction to Docker. It’s only been a month, and I’ve already recommended it to three development teams.

The second is Amy Bass’ “What are Docker Extensions” presentation, which gave me a quick understanding of what it was.

Looking to the distant future, what is the technology that you’re most excited about and that you think holds a lot of promise?

I’m excited to see how Flutter develops over the next few years. It is an easy-to-access, very comprehensive technology that opens up many possibilities. 

Rapid fire questions…

What new skill have you mastered during the pandemic?

I learned to develop on Flutter with Dart.

Soon after, I worked on different projects for different clients. 

Then, I created a training on Flutter to pass on what I had learned. Now I have the chance to do many talks on this subject.

Cats or Dogs?

Cats, dogs, lizards, snakes, octopuses, or spiders. I love all animals!! ❤️
Except centipedes! I hate centipedes!! 🐛😱

Salty, sour or sweet?

Salty or Malty (I like beers 😋)

Beach or mountains?

Mountains! I like hiking in the mountains, walking in the forest, or strolling along the rivers. 

Your most often used emoji?

😋

]]>
Docker Captain Take 5 — James Spurin https://www.docker.com/blog/docker-captain-take-5-james-spurin/ Fri, 19 Aug 2022 14:00:00 +0000 https://www.docker.com/?p=36661 Docker Captains are select members of the community that are both experts in their field and are passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtles over here). Today, we’re interviewing James Spurin who recently joined the Captain’s Program. He is a DevOps Consultant and Course/Content Creator at DiveInto and is based in Hertfordshire, United Kingdom. Check out James’ socials on LinkedIn and Twitter!

A picture of James Spurin wearing a black Docker Captain jacket.

How/when did you first discover Docker?

I’m part of the earlier ISP generation, so my early career involved working at Demon Internet, one of the first internet providers in the UK back in 1998-2000.

Back then, it was cool to host and serve your personal ISP services on your own managed system (generally hidden in a cupboard at home and served via a cable modem to the world) for the likes of Web/DNS/Email and other services.

Whilst times have changed, and I’ve moved to more appropriate cloud-based solutions for essential services and hosting, I’ve always been passionate about cosplaying with systems administration. A friend with the same passion recommended linuxserver.io to me. It’s a great resource that manages and maintains a fleet of common Docker images.

I transitioned many of the services I was manually running to Docker, either using their images or their Dockerfiles as a reference for learning how to create my own Docker images.

If you’re looking for a great way of starting with Docker, I highly recommend looking at the resources available on linuxserver.io.

The advice we would share with new starters back in my early ISP career days was to create and self-host an ISP in a box.

In essence, we’d combine a Web Server (using Apache at the time), Email (using Exim), and a DNS server (using Bind), alongside a custom domain name, to make it available on the internet. It provided a great learning opportunity for understanding how these protocols work.

Today my advice would be to try this out, but also with Docker in the mix!

What is your favorite Docker command?

My favorite Docker command would be docker buildx. With the growth of arm architecture, docker buildx is an excellent resource that I rely on tremendously. Being a content creator I leverage Docker extensively for creating lab environments that anyone can utilize with their own resources. See my “Dive Into Ansible” repository for an example that utilizes docker-compose and has had over 250k pulls.

Just a few years ago, building images for arm alongside AMD64 could have been considered a niche in my area. Only a tiny percentage of my students were using a Raspberry Pi for personal computing.

These days, however, especially with the growth of Apple Silicon, cross-built images are much more of a necessity when providing community container images. As a result, Buildx is one of my favorite CLI Plugins and is a step I consider essential as a milestone in a successful Docker project.

What is your top tip for working with Docker that others may not know?

Consider Dockerfiles (or automated image builds) and guided instructions as a standard part of your projects from Day 1. Your users will thank you and your likelihood of open source contributors will grow.

Take, for example, the Python programming language. When browsing GitHub/Gitlab for Python projects, it’s common to see a requirements.txt file with dependencies related to the project.

The expectation is then for the consumer to install dependencies via pip. An experienced developer may utilize virtual environments, whereas a less experienced developer may install this straight into their running system (thus, potential cross-contamination).

Whilst Python 3+ is the standard for most common Python projects, there may be nuances between a version of Python locally installed and that used within a codebase. We should also consider that some dependencies require compilation, which presents another obstacle for general usage, especially if the likes of Developer Compilation Tools aren’t available.

By providing a Dockerfile that utilizes a trusted Python image and offering automated prebuilt images using the likes of DockerHub in conjunction with GitHub/Gitlab (to trigger automated builds), individuals can get involved and run projects as a single command in a matter of minutes. Such efforts also provide great reuse opportunities with Kubernetes, CI/CD pipelines, and automated testing.

What’s the coolest Docker demo you have done/seen?

The Flappy Moby efforts that took place at KubeCon Valencia. I liked this so much that I captured this at the time and created a video!

The project was novel; after all, who doesn’t love these types of games? It was a fantastic showpiece at the event. As a content creator and someone who has worked on creating games to demonstrate and teach technical concepts, I was also very appreciative of the efforts involved around the graphical elements to bring this to life.

Seeing Docker Desktop extensions in action inspired my own Docker Desktop extension journey and follow-ups. When I returned from Kubecon, I created a Docker Desktop extension that instantly provides an Ansible-based lab with six nodes and web terminals. Check out the related video of how this extension was made!

What have you worked on in the past six months that you’re particularly proud of?

I created a free Kubernetes Introduction course available on YouTube and Udemy which is receiving an incredible amount of views and positive feedback. This was a very personal project for me that focused on community giveback.

James Spurin next to the blue and white, ship helm Kubernetes logo.

When I first started learning Kubernetes there were areas that I found frustrating. Learning resources in this space often show theoretical overviews of core Kubernetes architecture but lack hands-on demonstrations. I made this course to ensure that anyone could get a good understanding of Kubernetes alongside hands-on use of the essential components in just one hour.

The course also provided me with a unique opportunity to share perspectives on overlooked areas relating to Docker Inc. For example, I cover the positive efforts made by Docker to Cloud Native with their contributions of containerd and runC to the Cloud Native Computing Foundation and the Open Container Initiative, respectively.

It was a pleasure to work on a project that covered many of my favorite passions in one go, including, Kubernetes, Docker, Cloud Native, content, and community.

What do you anticipate will be Docker’s biggest announcement this year?

I’ve already mentioned this above, but it’s Docker Desktop extensions for me. When considered alongside Docker Desktop (now native for Windows, Mac, and Linux), we have a consistent Docker Desktop environment and Extension platform that can provide a consistent development resource on all major OS platforms.

What are some personal goals for the next year with respect to the Docker community?

My aims are focused on community, and I’m already working on content that will heavily emphasize Docker in conjunction with Kubernetes (there’s so much opportunity to do more with the Docker Desktop Kubernetes installation.) As the tagline in the Docker Slack announcement channel says… Docker, Docker, Docker!!!

What was your favorite thing about DockerCon 2022?

Community. While watching the various talks and discussions, I was active in the chat rooms.

The participants were highly engaged, and I made some great connections with individuals who were mutually chatting at the time.

There were also some very unexpected moments. For example, Justin Cormack and Ajeet Singh Raina were using some interesting vintage microphones that kicked off some good chat room and post-event discussions.

Looking to the distant future, what is the technology that you’re most excited about and that you think holds a lot of promise?

A technology that has blown my mind is Dall-E 2, an AI solution that can automatically create images based on textual information. If you haven’t heard of this, you must check this video out.

It’s possible at the moment to try out Dall-E Mini. Whilst this isn’t as powerful as Dall-E 2, it can be fun to use.

For example, this is a unique image created by AI using the input of “Docker”. Considering that this technology is not re-using existing images and has learnt the concept of “Docker” to make this, it is truly remarkable.

AI drawing of the term Docker, depicting an abstract whale topped with containers.

Rapid fire questions…

What new skill have you mastered during the pandemic?

Coffee is a personal passion and a fuel that I both depend upon and enjoy! The Aeropress is a cheap, simple, and effective device with many opportunities. I’ve explored how to make a fantastic Aeropress coffee, and I think I’ve nailed it! For those interested, check out some feeds from the Aeropress Barista Championships.

Cats or Dogs?

Cats. I have two, one named Whisper Benedict and the other named Florence Rhosyn. Whisper is a British Blue, and Flo is a British Blue and White. At the time, we only intended to get one cat, but the lady at the cattery offered us Flo at a discount, and we couldn’t resist.

The lady at the cattery was a breeder of British Blues and British Whites, and the Dad from the Blues had snuck in with the Mum of the Whites; alas, you can guess what happened. This gives Flo her very unique mottled colors.

The two of them are extraordinary characters. Although Whisper is the brawn of the two and would be assumed to be the Alpha cat, he’s an absolute softie and doesn’t mind anybody picking him up.

On the other hand, what Flo lacks in physique, she makes up with brains and agility.

Both my children Lily (11) and Anwen (4) can hold Flo, and nothing will happen. They’ve all grown up together, and it’s as if she knows that they are children. However, should you try to pick her up as an adult, you’re not getting away unscathed. Flo also seems to have this uncanny ability to know when we’re intending on taking her to the vets, even without a carry basket in sight!

Despite their characteristics, we wouldn’t have our furry family members any other way.

Salty, sour, or sweet?

Sweet!

Beach or mountains?

Beaches (with some favouritism towards Skiathos) please!

Your most often used emoji?

🚀

]]>
Docker Captain Take 5 — Julien Maitrehenry https://www.docker.com/blog/docker-captain-take-5-julien-maitrehenry/ Fri, 29 Jul 2022 14:00:40 +0000 https://www.docker.com/?p=36230 Docker Captains are select members of the community that are both experts in their field and are passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtles over here). Today, we’re interviewing Julien who recently joined the Captains Program. He is a developer and devops at Kumojin and is based in Quebec City.

Headshot of Julien Maitrehenry

How/when did you first discover Docker?

I don’t remember how, but, back in 2014, I was working in a PHP shop, and we had our dev environment running inside a VM (with Vagrant). But, it wasn’t really easy to share and maintain. So, we started experimenting with Docker for our dev env. After that, I learned about (legacy/classic) Swarm in Docker, and these tools resolved some of my issues in production for handling load balancer reconfiguration, deployment, and new version management. Check out my first conference about Docker here.

Since then, I continue to learn, use, and share about Docker. It’s useful in so many use cases — it’s amazing!

What is your favorite Docker command?

Docker help. I still need to check the documentation sometimes!

But also, when I need more space on Docker Desktop, I’ll choose docker buildx prune!

What is your top tip for working with Docker that others may not know?

If your team uses ARM (Apple M1, for example) and intel CPU and you want to share a docker image with your team, build a cross platform image:

docker buildx build --push --platform linux/arm64/v8,linux/amd64 --tag xxx/nginx-proxy:1.21-alpine

What’s the coolest Docker demo you have done/seen?

Back during the 2018 Dockercon, I was impressed by the usage of Docker for the DART (Double Asteroid Redirection Test) project. A project as easy as building an aircraft, hitting an asteroid with it, and saving the world!

You should check how they use Docker for space hardware emulation and testing — it’s brilliant to see how Docker could be used to help save the world: https://www.youtube.com/watch?v=RnWXOAplvjY

What have you worked on in the past six months that you’re particularly proud of?

Being a mentor for a developer school in Quebec (42 Quebec). It’s amazing to see the new generation of developers and help them with all their questions, fears, and concerns! And it’s cool when someone calls you “Mister Docker” because he watches a docker conference I gave to answer questions about usage and more.

What do you anticipate will be Docker’s biggest announcement this year?

After Docker Extension and SBOM? It’s really hard to say. I need more time to explore and create my first extension, but, I’m sure the Docker team will find something.

What are some personal goals for the next year with respect to the Docker community?

Give my first conference in English as I always give them in French. I’d also like to update my blog with more content.

What was your favorite thing about DockerCon 2022?

The French community room. It was a pleasure to engage with Aurélie and Rachid and have so many great speakers with us! I would do it again anytime!

Looking to the distant future, what is the technology that you’re most excited about and that you think holds a lot of promise?

7 years from now, I still think Docker will continue to innovate and find new ways to simplify the life of the developer community!

Rapid fire questions…

What new skill have you mastered during the pandemic?

Using a face mask and forgetting about it! Or traveling between different countries during the pandemic with all different kinds of restrictions and rules.

Cats or Dogs?

Cats! I’m sorry, but a dog requires too much time, and I already have 3 young kids.

Salty, sour or sweet?

Salty or Umami

Beach or mountains?

Mountains!

Your most often used emoji?

🤣 or 😄

]]>
Docker Captains Take 5 — Thorsten Hans https://www.docker.com/blog/docker-captains-take-5-thorsten-hans/ Fri, 22 Jul 2022 14:00:33 +0000 https://www.docker.com/?p=34959 Docker Captains are select members of the community that are both experts in their field and are passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtles over here). Today, we’re interviewing Thorsten, who recently joined as a Docker Captain. He’s a Cloud-Native Consultant at Thinktecture and is based in Saarbrücken, Germany.

Docker Captain Thorsten Hans

How/when did you first discover Docker?

I started using Docker when I got a shiny new MacBook Pro back in 2015. Before unboxing the new device, I was committed to keeping my new rig as clean and efficient as possible. I didn’t want to mess up another device with numerous databases, SDKs, or other tools for every project. Docker sounded like the perfect match for my requirements. (Spoiler: It was!)

When using macOS as an operating system, Docker Toolbox was the way to go back in those days.

Although quite some time has passed since 2015, I still remember how amazed I was by Docker’s clean CLI design and how Docker made underlying (read: way more complicated) concepts easy to understand and adopt.

What’s your favorite Docker command?

To be honest, I think “favorite” is a bit too complicated to answer! Based on hard facts, it’s docker run.

According to my ZSH history, it’s the command with most invocations. By the way, if you want to find yours, use this command:


bash

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3,$4}' | sort | uniq -c | sort -nr | grep docker | head -n 10

Besides docker run, I would go with docker sbom and docker scan. Those help me to address common requirements when it comes to shift-left security.

What’s your top tip for working with Docker that others may not know?

From a developer’s perspective, it’s definitely docker context in combination with Azure and AWS.

Adding Azure Container Instances (ACI) or Amazon Elastic Container Service (ECS) as a Docker context and running your apps straight in the public cloud within seconds is priceless.

Perhaps you want to quickly try out your application, or you have to verify that your containerized application works as expected in the desired cloud infrastructure. Serverless contexts from Azure and AWS with native integration in Docker CLI provide an incredible inner-loop experience for both scenarios.

What’s the coolest Docker demo you’ve done/seen?

It might sound a bit boring these days. However, I still remember how cool the first demo on debugging applications running in Docker containers from people at Microsoft was.

Back in those days, they demonstrated how to debug applications running in Docker containers on the local machine and attach the local debugger to Docker containers running in the cloud. Seeing the debugger stopping at the desired breakpoint, showing all necessary contextual information, and knowing about all the nitty-gritty infrastructure in-between was just mind blowing.

That was the “now we’re talking” moment for many developers in the audience.

What have you worked on in the past six months that you’re particularly proud of?

As part of my daily job, I help developers understand and master technologies. The most significant achievement is when you recognize that they don’t need your help anymore. It’s that moment when you realize they’ve grasped the technologies — which ultimately permits them to master their technology challenges without further assistance.

What do you anticipate will be Docker’s biggest announcement this year?

Wait. There is more to come? Really!? TBH, I have no clue. We’ve had so many significant announcements already in 2022. Just take a look at the summary of DockerCon 2022 and you’ll see what I mean.

Personally, I hope to see handy extensions appearing in Docker Desktop, and I would love to see new features in Docker Hub when it comes to automations.

What are some personal goals for the next year with respect to the Docker community?

I want to help more developers adopt Docker and its products to improve their day-to-day workflow. As we start to see more in-person conferences here in Europe, I can’t wait to visit new communities, meetups, and conferences to demonstrate how Docker can help them take their productivity to a whole new level.

Speaking to all the event organizers: If you want me to address inner-loop performance and shift-left security at your event, ping me on Twitter and we’ll figure out how I can contribute.

What was your favorite thing about DockerCon 2022?

I won’t pick a particular announcement. It’s more the fact that Docker as a company continually sharpens its communication, marketing, and products to address the specific needs of developers. Those actions help us as an industry build faster inner-loop workflows and address shift-left security’s everyday needs.

Looking to the distant future, what’s the technology that you’re most excited about and that you think holds a lot of promise?

Definitely cloud-native. Although the term cloud-native has been around for quite some time now, I think we haven’t nailed it yet. Vendors will abstract complex technologies to simplify the orchestration, administration, and maintenance of cloud-native applications.

Instead of thinking about technical terms, we must ensure everyone thinks about this behavior when the term cloud-native is referenced.

Additionally, the number of tools, CLIs, and technologies developers must know and master to take an idea into an actual product is too high. So I bet we’ll see many abstractions and simplifications in the cloud-native space.

Rapid fire questions…

What new skill have you mastered during the pandemic?

Although I haven’t mastered it (yet), I would answer this question with Rust. During the pandemic, I looked into some different programming languages. Rust is the language that stands out here. It has an impressive language design and helps me write secure, correct, and safe code. The compiler, the package manager, and the entire ecosystem are just excellent.

IMO, every developer should dive into new programming languages from time to time to get inspired and see how other languages address common requirements.

Cats or Dogs?

Dogs. We thought about and discussed having a dog for more than five years. Finally, in December 2022, we found Marley, the perfect dog to complete our family.

Thorsten dog

Salty, sour, or sweet?

Although I would pick salty, I love sweet Alabama sauce for BBQ.

Beach or mountains?

Beach, every time.

Your most often used emoji?

Phew, There are tons of emojis I use quite frequently. Let’s go with 🚀.

]]>
Docker Captain Take 5 – Damian Naprawa https://www.docker.com/blog/docker-captain-take-5-damian-naprawa/ Mon, 27 Jun 2022 15:00:48 +0000 https://www.docker.com/?p=34158 Docker Captains are select community members that are both experts in their field and passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions, ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtles over here). Today, we’re interviewing Damian Naprawa, who recently became a Docker Captain. He’s a Software Architect at Capgemini and is based in Mielec, Poland.

Damian Naprawa

How/when did you first discover Docker?

It was a long time ago! 

For the first time, I saw some blog posts about Docker and also participated in Docker introductory workshops (thanks to Bart & Dan!). However, I do remember that at the beginning I couldn’t understand how it works and what the benefits are from the developer’s perspective. Since I always want to not only use, but also understand how the technology I use works under the hood, I spent a lot of time on learning and practicing. 

After some time, the “aha” moment happened. I remember telling myself, “That’s awesome!”

After a couple of years, I decided to launch my own blog dedicated to the Polish community: szkoladockera.pl (in English it means “Docker School”). I wanted to help others understand Docker and containers, and hoped to share this great technology across the Polish community. I still remember how difficult it was for me – before that “aha” moment came, and before I started to know what I’m doing while using docker run commands.

What is your favorite Docker command?

It used to be docker exec (to see the container file system or for debugging purposes), but now the winner is docker sbom.

Why? Because one of my top interests is container security. 

With docker sbom, I can see every installed package inside my final Docker image – which I couldn’t see before. Every time we use a FROM command in the Dockerfile, we’re referring to some base image. In most cases, we don’t create them ourselves, and we aren’t aware of what packages are installed on an OS level (like curl) and application level (like Log4j). There could be a lot of packages that your app doesn’t need anymore, and you should be aware of that.

What is your top tip for working with Docker that others may not know?

Using Docker in combination with Ngrok lets developers expose their containerized, microservices-based apps to the internet directly from their machines. It’s very helpful when we want to present what code changes we made to our teammates, stakeholders, and clients, plus how it works from a user perspective – without needing to build and publish the app in the destination environment. You can find an example here.

What’s the coolest Docker demo you have done/seen?

I have seen and done a lot of demos. However, if I need to mention just one, there’s one I’m really proud of.

In 2021, I organized an online conference for the Polish community called “Docker & Kubernetes Festival”. During that, I held a talk called  “Docker for Developers”, where I presented quite a large amount of tips for working with Docker and how to speed up developer productivity. 

There were around 700 Polish community members watching it live and thousands who watched the recording.

What have you worked on in the past six months that you’re particularly proud of?

I’ve been working closely with developer teams on containerizing microservices-based apps written in Java and Python (ML). Since I used to code mostly with JavaScript and the .NET platform, it was a very interesting experience. I had to dive deeply into the Java and Python code to understand architecture and implementation details. I then advised developers on refactoring the code and smoothly migrating to containers.

What do you anticipate will be Docker’s biggest announcement this year?

Docker SBOM. It’s a game changer for me to have an overview of packages installed in my final docker image both on OS-level (like curl) and application level (like Log4j)

What are some personal goals for the next year with respect to the Docker community ?

I’d like to share more knowledge on my blog about specific technologies (like NestJS, Java, Python etc.) – how to prepare the Dockerfiles using best practices, and how to refactor apps to smoothly migrate them into containers.

What was your favorite thing about DockerCon 2022?

Since I’m working closely with development teams, everything related to microservices and speeding up developer productivity.

Looking to the distant future, what is the technology that you’re most excited about and that you think holds a lot of promise?

Containers, of course! I do see a huge demand for container experts and I predict this demand will increase. While speaking with the clients or with my students (of online courses), I’ve learned that companies have started to appreciate the benefits of containers, and they just want them in their workflows. 

Apart from that, I’m excited about web3 and NFT. I guess there’ll also be a demand for blockchain/web3 developers and security specialists in the next few years.

Rapid fire questions…

What new skill have you mastered during the pandemic?

I gave a lot of online demos and conducted a lot of webinars, but now I’m really keen to meet with people offline! I also started my podcast, More Than Containers, but I need to go back to regular recordings!

Cats or Dogs?

Both!

Salty, sour or sweet?

Salty. Nobody believes me, but I can live without sweet 😀 

Beach or mountains?

I love to travel, discover new things, and visit new places. Life is too short to choose between beach and mountains 😀

Your most often used emoji?

Captain emoji!  :male-pilot:

]]>
Docker Captain Take 5 – Lee Calcote https://www.docker.com/blog/docker-captain-take-5-lee-calcote/ Fri, 22 Apr 2022 14:00:32 +0000 https://www.docker.com/?p=33163 Docker Captains are select members of the community that are both experts in their field and are passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtles over here). Today, we’re interviewing Lee Calcote who has been a Docker Captain since March 2017. Based in Austin, TX, he is the Founder of Layer5.

Lee Calcote Headshot

How/when did you first discover Docker?

While managing engineering teams at Cisco, I was delivering Cisco’s cloud management platform in 2014 when I was bitten by the Docker bug. I was up to my neck in IaaS and beastly-sized VMs. Our ability to deliver innovative solutions was largely constrained by the static nature of vertically-scaled application design and deployment. At the start of Docker’s popularization of containerization, I knew the way software sausage factory works would never be the same, so I created the Docker@Cisco community

Since then, I’ve taken Docker with me wherever I go.

What is your favorite Docker command?

By far, my favorite command is docker extension install meshery/docker-extension-meshery, which installs the Docker Extension for Meshery. This command puts the power of any service mesh onto the desktops of modern software developers and operators in need of local development environments and the ability to manage remote Kubernetes and service mesh workloads.

What is your top tip for working with Docker that others may not know?

Docker’s set of GitHub Actions are phenomenal. Each of them are highly configurable, well-documented, and powerful. These can be used independently or combined into the same workflow. Their use has consolidated disparate workflows into a singular flow to facilitate two release channels (edge and stable) and new ARM64-based images for Meshery. Often, changes to GitHub workflows can’t be tested unless they are executed within GitHub’s hosted runners. Use of Docker’s GitHub Actions helps bridge the tooling gap when trying to execute GitHub Actions locally. 

What’s the coolest Docker demo you have done/seen?

I particularly enjoyed delivering a DockerCon talk on the power of Meshery and Docker Desktop to configure and manage WebAssembly-based Envoy filters to rate limit pull requests of a Docker Hub fake: Image Hub. Expanding on this example, the possibilities of what can be accomplished by intelligent infrastructure are most intriguing.

What have you worked on in the past six months that you’re particularly proud of?

Along with a number of others, I have poured a fair bit of time these past months into Layer5 MeshMap – the world’s only visual designer for Kubernetes, service mesh, and their workloads. With service mesh patterns close at-hand, MeshMap takes a low code, GitOps-centric approach for engineers to design, deploy, and manage Kubernetes-based workloads running on or off of a service mesh.

What do you anticipate will be Docker’s biggest announcement this year?

Outside of Docker’s Series C funding? Gosh, I can only hope this year might be the year of Linux on the (Docker) Desktop.

What are some personal goals for the next year with respect to the Docker community ?

Whether in-person or virtually, I’d like to see Docker Austin meeting regularly. I would also like to see the Meshery version of Play with Docker running at https://play.meshery.io. Each of these venues provides an opportunity to learn and share with your fellow community members. There is sooo much technology for people in the community to explore and digest. It all starts with the Docker community.

What talk would you most love to see at DockerCon 2022?

You can never go wrong with the Black Belt track. It’s perpetually packed with brain-tickling talks.

Looking to the distant future, what is the technology that you’re most excited about and that you think holds a lot of promise?

Service mesh, WebAssembly, eBPF all have some great things going for them. There is much power in the network, much that can be accomplished in-between requests.

Rapid fire questions…

What new skill have you mastered during the pandemic?

The fine art of being encouragingly critical of others’ works. As a maintainer of three CNCF projects, I’ve had plenty of opportunities to strike the right balance.

Cats or Dogs?

Skunks. While they smell anything, but sweet, they are the mildest, sweetest little critters. 🦨

My wife is a wildlife rehabilitator. Each Spring, our cats and dogs inevitably get pushed to the side as we try to caretake over an innumerable amount of newborn and traumatized, wild animals.

Lee Calcote Racoon

Salty, sour or sweet?

Salty, please, with barbeque sauce on the side. 

Beach or mountains?

I could certainly go for the beach. 🏝

Your most often used emoji?

I have favored this one as of late: 🤠

]]>
Docker Captain Take 5 – Sebastián Ramírez https://www.docker.com/blog/docker-captain-take-5-sebastian-ramirez/ Fri, 18 Mar 2022 15:00:00 +0000 https://www.docker.com/?p=32576 Docker Captains are select members of the community that are both experts in their field and are passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtlesover here). Today, we’re interviewing Sebastián Ramírez who has been a Docker Captain since 2022. He is a Staff Software Engineer at Forethought and is based in Berlin, Germany.

alba

How/when did you first discover Docker?

Several years ago, I was working in a company with a team of developers, handling servers manually. We would connect to the servers via SSH, install packages, configure files by hand… it was a whole mess. We had lots of SnowflakeServers, which is really bad. 😅

I was trying to figure out ways to automatize that process, so that we could remove a server and rebuild it from scratch in very little time. I tried many tools, starting with simple Bash scripts, going to packages to handle deployments like Ansible, Salt, Chef, Puppet, etc.

At that point, when I was getting a bit overwhelmed with the complexity of the alternatives, I discovered Docker. I had seen many Dockerfiles in many GitHub repositories, but I had no idea what it was yet. I studied it, started using it, and immediately fell in love.

What is your favorite Docker command?

It’s probably docker ps, I’m always checking if the stack is already up, if there’s any other container up, if there are any exited containers with errors, the ports used by containers, etc. I feel it’s the command I’m using most frequently.

What is your top tip for working with Docker that others may not know?

It’s probably that you can override the default command of a Docker image, in Docker or Docker Compose. And you can use a command to just keep the container alive, like sleep infinity.

And then you can combine that with mounting the volume of your code as a host volume.

And then you can get inside the container with docker exec, and from inside, run your app. This way you can develop live from your code without even having to build the image again. And if you get an error you can just fix it and run the command again. And the sleep infinity will make sure the container stays alive even after the error, so you can continue developing very quickly, without even having to restart the container.

What’s the coolest Docker demo you have done/seen?

I have seen and done so many! One of the things that always amazes me is how easy it is to try out a new system, a new database, a new tool.

I have been able to learn and use many databases, SQL and NoSQL, search engines, job queues, etc. Docker always plays a key role in it. I know that for almost anything I want to try there will be an official image in the Docker Hub, with sensible defaults, simple configurations (in most of the cases just environment variables), and with the security and isolation benefits of containers you get used to love when working with Docker.

What have you worked on in the past six months that you’re particularly proud of?

That will probably be FastAPI! A Python framework for building web APIs using type annotations. And also my other open source projects, like Typer, SQLModel, Asyncer.

I’m also proud of contributing to other open source packages, and writing documentation that seems to help other developers use tools and be more efficient. 🤓

What do you anticipate will be Docker’s biggest announcement this year?

I wouldn’t know! Docker always has a way to bring simple but clever ideas, I’m looking forward to seeing what’s next!

What are some personal goals for the next year with respect to the Docker community ?

I’ve been a Docker fan for a long time, I feel it helps developers a lot improving all the workflows and making us more efficient. I hope more developers can learn how to use it, at least the basics, and improve their work with it.

What talk would you most love to see at DockerCon 2022?

So many things! Probably tips and tricks from developers using Docker.

For example, only recently I discovered there’s a Linux command that you can use with Docker: sleep infinity. Before discovering that, I would do complex things like bash -c “while true; sleep 10; done”, both of those achieve the same, but the first one is so much simpler! I just didn’t know it existed, and it’s super useful during development.

I would love to learn what other tricks are there.

Looking to the distant future, what is the technology that you’re most excited about and that you think holds a lot of promise?

I love Python, the programming language. I feel it’s evolving and maturing more and more, in a way that makes it extremely convenient to work with and to develop advanced applications in a simple way. And it works very well with Docker!

Rapid fire questions…

What new skill have you mastered during the pandemic?

Getting delivery groceries without leaving the house. I’m not necessarily proud of that. 😅

Cats or Dogs?

Both! And snakes! 🐍

Salty, sour or sweet?

First salty with sour and then sweet, please.

Beach or mountains?

Is there WiFi?

Your most often used emoji?

I would like to say 🚀, but I would probably be lying. It’s most certainly this one: 😅.

]]>
Docker Captain Take 5 – Martin Terp https://www.docker.com/blog/docker-captain-take-5-martin-terp/ Fri, 18 Feb 2022 17:04:59 +0000 https://www.docker.com/blog/docker-captain-take-5-martin-terp/ Docker Captains are select members of the community that are both experts in their field and are passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtles over here). Today, we’re interviewing Martin Terp who just joined as a Docker Captain. Martin is a Splunk Consultant at Netic.dk and is based in Aalborg, Denmark.

martin

How/when did you first discover Docker?

I was working as a Sysadmin for a big Danish ISP, and when you work with IT, you always try to expand your knowledge: How can I improve this application? How can I make deployments easier? What is the next big thing? So back in 2016, I came across Docker, and instantly fell in love with it and containerization in general. I started testing it out, on my own little projects and quickly I could see the benefits for it in the way we deploy and maintain applications.

What is your favorite Docker command?

I must say “docker scan”, making images and running containers is pretty sweet, but you also need to think about the vulnerabilities that can (will) occur. Looking back at the log4j vulnerability, it’s pretty important to detect it, also when running your own, and building your own images. Docker scan provides this functionality and I love it, also its great to see that https://hub.docker.com/ also have implemented a vulnerability scanner 💙

What is your top tip for working with Docker that others may not know?

Use Dockerfiles! I have seen many, mainly newcomers, that are building containers by “docker exec” into the container, and executing commands/scripts that they need. Do the right thing from the start, and do yourself a favor by looking into Dockerfiles, it’s worth it.

What’s the coolest Docker demo you have done/seen ?

Dockercon 2017, docker captains Marcos Nils and Jonathan Leibiusky showcased “Play With Docker” (https://labs.play-with-docker.com/). I was really impressed and thought it would be really handy for people to get into docker.

What have you worked on in the past six months that you’re particularly proud of?

I don’t think there is a particular project, something I’m personally proud of, is that I switched jobs after being in the same place for 14 years, and started specializing in another awesome analytics tool called Splunk. Also a feel-good thing, is my contribution to the community forums. I have spent a lot of time on the forums trying to help others with their issues.

What do you anticipate will be Docker’s biggest announcement this year?

It’s really hard to tell, surprise me 😉

What are some personal goals for the next year with respect to the Docker community?

I spend a lot of time on the community forums, and there are questions that get asked again and again with “how do i”, so the plan is to create some blog posts, addressing some of the common things that get asked on the forums.

What talk would you most love to see at DockerCon 2022?

I love to see when they are presenting real-world scenarios. It’s always very interesting to see what people have come up with, how they solved their head-scratching projects, and every year I’m amazed!
But I also hope to see myself at Dockercon in the future, I hope that covid hasn’t put a complete stop to events where we can attend IRL. I would like to meet some of my fellow docker enthusiasts.

Looking to the distant future, what is the technology that you’re most excited about and that you think holds a lot of promise?

I love containers and I’m very excited to see where it will go in the future, its evolving constantly, there is always a new way to doing this, doing that, doing things smarter, and that’s also something I like with this community, people want to share their findings, we occasionally see posts on the forums with “Look what I made!” and those are the most fun to see 😊 

Rapid fire questions…

What new skill have you mastered during the pandemic?

I have on and off tried learning to play the guitar, but couldn’t really find the time for it, so I tried picking it up again doing the pandemic, and after all this time, I can proudly say; I suck at it! 😅

Cats or Dogs?

Why not both? 😊

Salty, sour or sweet?

Salty

Beach or mountains?

Beach!

Your most often used emoji?

😅

]]>