自学内容网 自学内容网

Docker巩固十七问

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


1. 如何批量清理临时镜像文件?

  • 所谓的“临时镜像”或“虚悬镜像”(dangling images)是指那些没有被任何容器引用的层,通常是在构建新镜像时遗留下来的中间层。可以使用sudo docker rmi $(sudo docker images -q -f "dangling=true")命令。

2. 如何查看镜像支持的环境变量?

  • 可以使用sudo docker run ${IMAGE} env命令,如:sudo docker run nginx env

3. 本地的镜像文件都存放在哪里?

  • 与Docker相关的本地资源默认都存放在/var/lib/docker/目录下,其中containers目录存放容器信息;image目录存放镜像信息;aufs/overlay2目录下存放具体的镜像层文件;network存储Docker网络相关信息;volumes存储 Docker 卷的数据;swarm存储 Swarm 集群的状态和配置等。

4. 构建 Docker 镜像应该遵循哪些原则?

整体原则上,尽量保持镜像功能的明确和内容的精简,要点包括:

  • 尽量选取满足需求但较小的基础系统镜像;

  • 清理编译生成文件、安装包的缓存等临时文件。

  • 安装各个软件时候要指定准确的版本号,并避免引人不需要的依赖。

  • 从安全角度考虑,应用要尽量使用系统的库和依赖。

  • 如果安装应用时候需要配置一些特殊的环境变量,在安装后要还原不需要保持的变量值

  • 使用 Dockerfle 创建镜像时候要添加 .dockerignore 文件或使用干净的工作目录。

5. 容器退出后,通过 docker ps命令查看不到,数据会丢失么?

  • 容器退出后会处于终止(exited)状态,此时可以通过docker ps -a查看。其中的数据也不会丢失,还可以通过docker start命令来启动它。只有删除掉容器才会清除所有数据。

6. 如何停止所有正在运行的容器?

  • 可以使用sudo docker kill $(sudo docker ps -g)命令。

7. 如何清理批量后台停止的容器?

  • 可以使用sudo dockerrm$(sudo docker ps-a -q)命令

8. 如何给容器指定一个固定IP地址,而不是每次重启容器IP地址都会变?

  • 先创建一个自定义网络,然后再固定IP:

docker network create --subnet=192.168.1.0/24 my_custom_networkdocker run -d --name my_container --network my_custom_network --ip 192.168.1.100 my_image

9. 如何临时退出一个正在交互的容器的终端,而不终止它?

  • 先按Ctrl-p,然后按ctrl-q即可。如果按Ctr1-c往往会让容器内应用进程终止,进而会终止容器。

10. 可以在一个容器中同时运行多个应用进程吗?

  • 一般并不推荐在同一个容器内运行多个应用进程。如果有类似需求,可以通过一些额外的进程管理机制,比如supervisordrunitsystemd等来管理所运行的进程。

11. 使用“docker port”命令映射容器的端口时,系统报错Error:No public port '80'published for e7d817698b6f,是什么意思?

  • 创建镜像时 Dockerfle 要指定正确的 EXPOSE 的端口;

  • 容器启动时指定 PublishAllPort=true;

12. 如何控制容器占用系统资源(CPU、内存)的份额?

  • 在使用docker create命令创建容器或使用docker run 创建并启动容器的时候,可以使用-cl--cpu-shares[=0]参数来调整容器使用 CPU 的权重;使用 -m|-memory[=MEMORY]参数来调整容器使用内存的大小。

13. 从非官方仓库(例如dldockerpool.com)下载镜像时候,有时候会提示“Error:Invalid registry endpoint https://dl.dockerpool.com:5000/v1/......”?

  • Docker自1.3.0版本往后,加强了对镜像安全性的验证,需要手动添加对非官方仓库的信任。编辑 Docker 配置文件,在其中添加:DOCKER OPTS="--insecure-registry dl.dockerpool.com:5000"之后,重启 Docker 服务即可。

14. Docker 的配置文件放在哪里,如何修改配置?

  • Centos 系统的配置文件放在/etc/docker,关键的配置文件是 daemon.json。这个文件用于配置Docker守护进程(Docker Daemon)的各项参数,包括但不限于数据存储位置、网络设置、日志配置、信任代理等。

15. 如何更改Docker的默认存储位置?

  • Docker的默认存储位置是/var/lib/docker,如果希望将Docker的本地文件存储到其他分区,可以使用Linux软连接的方式来完成。

16. Docker、podman、containerd的相同和不同点?

相同点:

  • 这三者都用于管理容器的创建、运行和操作,允许用户在隔离的环境中运行应用程序;

  • Docker、Podman 和containerd都遵循Open Container Initiative (OCI) 的容器镜像和运行时规范,这确保了容器镜像的兼容性和可移植性;

  • 它们都支持容器的生命周期管理,包括容器的创建、启动、停止、删除等基本操作;

不同点:

  • Docker是一个全功能的容器平台,包含了容器的创建、运行、构建和编排功能。

  • Podman是一个无守护进程、rootless支持的容器管理工具,强调安全性和对 Pod 的支持。

  • containerd是一个专注于容器运行时的低层次组件,主要用于与其他容器管理工具的集成。

17. 如何将一台宿主主机的 docker 环境迁移到另外一台宿主主机?

  • 停止 Docker 服务。将整个 docker 存储文件夹复制到另外一台宿主主机,然后调整另外一台宿主主机的配置即可。

出处:《Docker技术入门与实践》,版权为原作者所有


原文地址:https://blog.csdn.net/WF_crystal/article/details/142693189

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!