Skip to content

Commit 184561a

Browse files
Tim Bannistershannonxtreme
andcommitted
Update dockershim removal FAQ for v1.24 release
Co-authored-by: Shannon Kularathna <[email protected]>
1 parent e1f79ef commit 184561a

File tree

1 file changed

+62
-58
lines changed

1 file changed

+62
-58
lines changed

content/en/blog/_posts/2022-02-17-updated-dockershim-faq.md

Lines changed: 62 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,35 @@ slug: dockershim-faq
77
aliases: [ '/dockershim' ]
88
---
99

10-
**This is an update to the original [Dockershim Deprecation FAQ](/blog/2020/12/02/dockershim-faq/) article,
10+
**This supersedes the original [Dockershim Deprecation FAQ](/blog/2020/12/02/dockershim-faq/) article,
1111
published in late 2020.**
1212

13+
---
14+
1315
This document goes over some frequently asked questions regarding the
14-
deprecation and removal of _dockershim_, that was
16+
removal of _dockershim_ from Kubernetes. The removal was originally
1517
[announced](/blog/2020/12/08/kubernetes-1-20-release-announcement/)
16-
as a part of the Kubernetes v1.20 release. For more detail
17-
on what that means, check out the blog post
18+
as a part of the Kubernetes v1.20 release. The Kubernetes
19+
[v1.24 release](/releases/#release-v1-24) actually removed the dockershim
20+
from Kubernetes.
21+
22+
For more on what that means, check out the blog post
1823
[Don't Panic: Kubernetes and Docker](/blog/2020/12/02/dont-panic-kubernetes-and-docker/).
1924

20-
Also, you can read [check whether dockershim removal affects you](/docs/tasks/administer-cluster/migrating-from-dockershim/check-if-dockershim-removal-affects-you/)
21-
to determine how much impact the removal of dockershim would have for you
22-
or for your organization.
25+
To determine the impact that the removal of dockershim would have for you or your organization,
26+
you can read [Check whether dockershim removal affects you](/docs/tasks/administer-cluster/migrating-from-dockershim/check-if-dockershim-removal-affects-you/).
2327

24-
As the Kubernetes 1.24 release has become imminent, we've been working hard to try to make this a smooth transition.
28+
In the months and days leading up to the Kubernetes 1.24 release, Kubernetes contributors worked hard to try to make this a smooth transition.
2529

26-
- We've written a blog post detailing our [commitment and next steps](/blog/2022/01/07/kubernetes-is-moving-on-from-dockershim/).
27-
- We believe there are no major blockers to migration to [other container runtimes](/docs/setup/production-environment/container-runtimes/#container-runtimes).
28-
- There is also a [Migrating from dockershim](/docs/tasks/administer-cluster/migrating-from-dockershim/) guide available.
29-
- We've also created a page to list
30+
- A blog post detailing our [commitment and next steps](/blog/2022/01/07/kubernetes-is-moving-on-from-dockershim/).
31+
- Checking if there were major blockers to migration to [other container runtimes](/docs/setup/production-environment/container-runtimes/#container-runtimes).
32+
- Adding a [migrating from dockershim](/docs/tasks/administer-cluster/migrating-from-dockershim/) guide.
33+
- Creating a list of
3034
[articles on dockershim removal and on using CRI-compatible runtimes](/docs/reference/node/topics-on-dockershim-and-cri-compatible-runtimes/).
3135
That list includes some of the already mentioned docs, and also covers selected external sources
3236
(including vendor guides).
3337

34-
### Why is the dockershim being removed from Kubernetes?
38+
### Why was the dockershim removed from Kubernetes?
3539

3640
Early versions of Kubernetes only worked with a specific container runtime:
3741
Docker Engine. Later, Kubernetes added support for working with other container runtimes.
@@ -49,26 +53,52 @@ In fact, maintaining dockershim had become a heavy burden on the Kubernetes main
4953

5054
Additionally, features that were largely incompatible with the dockershim, such
5155
as cgroups v2 and user namespaces are being implemented in these newer CRI
52-
runtimes. Removing support for the dockershim will allow further development in
53-
those areas.
56+
runtimes. Removing the dockershim from Kubernetes allows further development in those areas.
5457

5558
[drkep]: https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/2221-remove-dockershim
5659

60+
### Are Docker and containers the same thing?
61+
62+
Docker popularized the Linux containers pattern and has been instrumental in
63+
developing the underlying technology, however containers in Linux have existed
64+
for a long time. The container ecosystem has grown to be much broader than just
65+
Docker. Standards like OCI and CRI have helped many tools grow and thrive in our
66+
ecosystem, some replacing aspects of Docker while others enhance existing
67+
functionality.
68+
69+
### Will my existing container images still work?
70+
71+
Yes, the images produced from `docker build` will work with all CRI implementations.
72+
All your existing images will still work exactly the same.
73+
74+
#### What about private images?
75+
76+
Yes. All CRI runtimes support the same pull secrets configuration used in
77+
Kubernetes, either via the PodSpec or ServiceAccount.
78+
5779
### Can I still use Docker Engine in Kubernetes 1.23?
5880

5981
Yes, the only thing changed in 1.20 is a single warning log printed at [kubelet]
60-
startup if using Docker Engine as the runtime. You'll see this warning in all versions up to 1.23. The dockershim removal occurs in Kubernetes 1.24.
82+
startup if using Docker Engine as the runtime. You'll see this warning in all versions up to 1.23. The dockershim removal occurred
83+
in Kubernetes 1.24.
84+
85+
If you're running Kubernetes v1.24 or later, see [Can I still use Docker Engine as my container runtime?](#can-i-still-use-docker-engine-as-my-container-runtime).
86+
(Remember, you can switch away from the dockershim if you're using any supported Kubernetes release; from release v1.24, you
87+
**must** switch as Kubernetes no longer incluides the dockershim).
6188

6289
[kubelet]: /docs/reference/command-line-tools-reference/kubelet/
6390

64-
### When will dockershim be removed?
91+
### Which CRI implementation should I use?
6592

66-
Given the impact of this change, we are using an extended deprecation timeline.
67-
Removal of dockershim is scheduled for Kubernetes v1.24, see [Dockershim Removal Kubernetes Enhancement Proposal][drkep].
68-
The Kubernetes project will be working closely with vendors and other ecosystem groups to ensure
69-
a smooth transition and will evaluate things as the situation evolves.
93+
That’s a complex question and it depends on a lot of factors. If Docker Engine is
94+
working for you, moving to containerd should be a relatively easy swap and
95+
will have strictly better performance and less overhead. However, we encourage you
96+
to explore all the options from the [CNCF landscape] in case another would be an
97+
even better fit for your environment.
98+
99+
[CNCF landscape]: https://landscape.cncf.io/card-mode?category=container-runtime&grouping=category
70100

71-
### Can I still use Docker Engine as my container runtime?
101+
#### Can I still use Docker Engine as my container runtime?
72102

73103
First off, if you use Docker on your own PC to develop or test containers: nothing changes.
74104
You can still use Docker locally no matter what container runtime(s) you use for your
@@ -78,26 +108,9 @@ Mirantis and Docker have [committed][mirantis] to maintaining a replacement adap
78108
Docker Engine, and to maintain that adapter even after the in-tree dockershim is removed
79109
from Kubernetes. The replacement adapter is named [`cri-dockerd`](https://github.com/Mirantis/cri-dockerd).
80110

81-
[mirantis]: https://www.mirantis.com/blog/mirantis-to-take-over-support-of-kubernetes-dockershim-2/
82-
83-
### Will my existing container images still work?
84-
85-
Yes, the images produced from `docker build` will work with all CRI implementations.
86-
All your existing images will still work exactly the same.
87-
88-
#### What about private images?
111+
You can install `cri-dockerd` and use it to connect the kubelet to Docker Engine. Read [Migrate Docker Engine nodes from dockershim to cri-dockerd](/docs/tasks/administer-cluster/migrating-from-dockershim/migrate-dockershim-dockerd/) to learn more.
89112

90-
Yes. All CRI runtimes support the same pull secrets configuration used in
91-
Kubernetes, either via the PodSpec or ServiceAccount.
92-
93-
### Are Docker and containers the same thing?
94-
95-
Docker popularized the Linux containers pattern and has been instrumental in
96-
developing the underlying technology, however containers in Linux have existed
97-
for a long time. The container ecosystem has grown to be much broader than just
98-
Docker. Standards like OCI and CRI have helped many tools grow and thrive in our
99-
ecosystem, some replacing aspects of Docker while others enhance existing
100-
functionality.
113+
[mirantis]: https://www.mirantis.com/blog/mirantis-to-take-over-support-of-kubernetes-dockershim-2/
101114

102115
### Are there examples of folks using other runtimes in production today?
103116

@@ -135,16 +148,6 @@ provide an end-to-end standard for managing containers.
135148
[runc]: https://github.com/opencontainers/runc
136149
[containerd]: https://containerd.io/
137150

138-
### Which CRI implementation should I use?
139-
140-
That’s a complex question and it depends on a lot of factors. If Docker is
141-
working for you, moving to containerd should be a relatively easy swap and
142-
will have strictly better performance and less overhead. However, we encourage you
143-
to explore all the options from the [CNCF landscape] in case another would be an
144-
even better fit for your environment.
145-
146-
[CNCF landscape]: https://landscape.cncf.io/card-mode?category=container-runtime&grouping=category
147-
148151
### What should I look out for when changing CRI implementations?
149152

150153
While the underlying containerization code is the same between Docker and most
@@ -153,24 +156,25 @@ common things to consider when migrating are:
153156

154157
- Logging configuration
155158
- Runtime resource limitations
156-
- Node provisioning scripts that call docker or use docker via it's control socket
157-
- Kubectl plugins that require docker CLI or the control socket
159+
- Node provisioning scripts that call docker or use Docker Engine via its control socket
160+
- Plugins for `kubectl` that require the `docker` CLI or the Docker Engine control socket
158161
- Tools from the Kubernetes project that require direct access to Docker Engine
159162
(for example: the deprecated `kube-imagepuller` tool)
160-
- Configuration of functionality like `registry-mirrors` and insecure registries
163+
- Configuration of functionality like `registry-mirrors` and insecure registries
161164
- Other support scripts or daemons that expect Docker Engine to be available and are run
162165
outside of Kubernetes (for example, monitoring or security agents)
163166
- GPUs or special hardware and how they integrate with your runtime and Kubernetes
164167

165168
If you use Kubernetes resource requests/limits or file-based log collection
166-
DaemonSets then they will continue to work the same, but if youve customized
169+
DaemonSets then they will continue to work the same, but if you've customized
167170
your `dockerd` configuration, you’ll need to adapt that for your new container
168171
runtime where possible.
169172

170173
Another thing to look out for is anything expecting to run for system maintenance
171174
or nested inside a container when building images will no longer work. For the
172-
former, you can use the [`crictl`][cr] tool as a drop-in replacement (see [mapping from docker cli to crictl](https://kubernetes.io/docs/tasks/debug-application-cluster/crictl/#mapping-from-docker-cli-to-crictl)) and for the
173-
latter you can use newer container build options like [img], [buildah],
175+
former, you can use the [`crictl`][cr] tool as a drop-in replacement (see
176+
[mapping from docker cli to crictl](https://kubernetes.io/docs/tasks/debug-application-cluster/crictl/#mapping-from-docker-cli-to-crictl))
177+
and for the latter you can use newer container build options like [img], [buildah],
174178
[kaniko], or [buildkit-cli-for-kubectl] that don’t require Docker.
175179

176180
[cr]: https://github.com/kubernetes-sigs/cri-tools
@@ -204,7 +208,7 @@ discussion of the changes.
204208

205209
[dep]: https://dev.to/inductor/wait-docker-is-deprecated-in-kubernetes-now-what-do-i-do-e4m
206210

207-
### Is there any tooling that can help me find dockershim in use
211+
### Is there any tooling that can help me find dockershim in use?
208212

209213
Yes! The [Detector for Docker Socket (DDS)][dds] is a kubectl plugin that you can
210214
install and then use to check your cluster. DDS can detect if active Kubernetes workloads

0 commit comments

Comments
 (0)