Docker巩固十七问

embedded/2024/12/22 22:26:45/

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


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. 如何清理批量后台停止的容器

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技术入门与实践》,版权为原作者所有


http://www.ppmy.cn/embedded/121730.html

相关文章

flink:java集成flink实现流数据处理(一)

文章目录 0. 引言1. flink安装2. 流数据处理程序依赖包简介流处理4个部分 3. 程序调用4. 总结 0. 引言 Apache Flink作为一款高性能的流处理框架,已成为企业级流数据处理的优选方案。本文将带领读者深入了解如何利用Java语言集成Flink,实现高效、可靠的…

开发微信小程序 基础02

WX模板 1.对比 ①标签名称不同 ②属性节点不同 ③提供类似vue的模板语法 2.模板语法 2.1数据动态绑定 2.1.1在data种定义数据 在页面对应的.js文件中,把数据定义到data对象中即可 例---data : { info : init data , msList : [{msg : hello}, { ms…

【PCL】Ubuntu22.04 安装 PCL 库

文章目录 前言一、更新系统软件包二、安装依赖项三、下载 PCL 源码四、编译和安装 PCL五、测试安装成功1、 pcd_write.cpp2、CMakeLists.txt3、build 前言 PCL(Point Cloud Library)是一个开源的大型项目,专注于2D/3D图像和点云处理。PCL为点…

C(十)for循环 --- 黑神话情景

前言: "踏过三界宝刹,阅过四洲繁华。笑过五蕴痴缠,舍过六根牵挂。怕什么欲念不休,怕什么浪迹天涯。步履不停,便是得救之法。" 国际惯例,开篇先喝碗鸡汤。 今天,杰哥写的 for 循环相…

负载均衡--相关面试题(六)

在负载均衡的面试中,可能会遇到一系列涉及概念、原理、实践应用以及技术细节的问题。以下是一些常见的负载均衡面试题及其详细解答: 一、什么是负载均衡? 回答:负载均衡是一种将网络请求或数据传输工作分配给多个服务器或网络资源…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02 1. APM: Large Language Model Agent-based Asset Pricing Models Authors: Junyan Cheng, Peter Chin https://arxiv.org/abs/2409.17266 APM: 基于大型语言模型的代理资产定价模型(LLM Agent-b…

版本发布 | IvorySQL 3.4 发版

[发行日期:2024年9月26日] IvorySQL 3.4基于PostgreSQL 16.4,并修复了多个问题。更多信息请参考文档网站。 >>>新版本体验链接: https://docs.ivorysql.org/cn/ivorysql-doc/v3.4/v3.4/1.html 1 增强功能 >>>PostgreSQL…

【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错

1. 运行项目 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Appl…