1. 容器启动时如何指定容器的主机名
通过添加参数--hostname或者-h
2. 如何在容器启动时指定hosts
可以使用--add-host 参数来向容器的 /etc/hosts 文件中添加自定义的主机名解析记录。
3. 如何在容器启动时指定dns服务器地址
可创建带有自定义DNS的网络:
docker network create --driver bridge --subnet=172.25.0.0/24 --gateway=172.25.0.1 \
--opt com.docker.network.bridge.name=br0 \
--opt com.docker.network.driver.mtu=1500 \
--opt com.docker.network.bridge.enable_ip_forwarding=true \
--opt com.docker.network.bridge.host_binding_ipv4=172.25.0.1 \
--opt com.docker.network.bridge.default_bridge=false \
--opt dns=8.8.8.8 \
my_custom_network也可在deamon.json中添加或修改dns配置项。
{
"dns": ["8.8.8.8", "114.114.114.114"]
}
4. 如何在启动容器时,让容器在后台启动
在docker run 后面加入-d参数
5. 一般情况下容器中会启动多少主进程
一般情况下只运行一个主进程。
6. 当这个主进程执行完毕后,会发生什么事情
当主进程(前台进程)执行完毕或退出后,容器会立即停止运行。这是因为容器的生命周期是与它的主进程绑定的。
7. 容器适合运行数据库吗
不适合,因为数据库需要持久化存储,而且在大环境中会导致性能瓶颈。不过在测试或者开发环境中可以使用数据库容器进行测试与开发。
8. 对一个服务进行容器化,需要注意什么
对服务进行容器化时,需确保使用合适的基础镜像、前台运行主进程、合理配置数据持久化与网络、设置自启动策略,并遵循安全、日志、监控和命名规范,以保障服务稳定、可维护且易于管理。
9. 什么是多阶构建
多阶构建 是 Docker 提供的一项功能,允许您在 一个 Dockerfile 中使用多个 FROM 指令,每个阶段可以基于不同的基础镜像,并只保留需要的文件,最终生成一个体积更小、安全性更高、适合部署的镜像。
10. 什么是悬挂镜像,如何清理
悬挂镜像是指没有标签且不被任何容器引用的 Docker 镜像,可通过 docker image prune 或 docker image prune -a 命令进行清理,以释放磁盘空间并保持镜像仓库整洁。
11. 如何清理掉所有未被使用的 Docker 对象
可以使用 docker system prune -a --volumes 命令来清理所有未被使用的 Docker 镜像、容器、网络和数据卷,释放磁盘空间并保持环境整洁。
清理没有标签的中间镜像可以使用:
docker image prune -a清理未使用的容器、镜像、网络和卷
docker system prune总而言之,清理未被使用的Docker对象可以在docker 对象后面加上 prune
12. 如何查看容器占用的资源
可以使用 docker stats 实时查看容器的 CPU、内存、网络和磁盘 I/O 使用情况,也可以通过 docker inspect 查看详细资源配置,并结合 cAdvisor 或 Prometheus 实现图形化监控。
13. 如何限制容器可使用的内存和CPU
在docker rum后面加入-m和--cpus参数。
14. 什么是Docker compose,什么场景下使用
Docker Compose 是一个用于定义和运行 多容器 Docker 应用程序 的工具。它通过一个 docker-compose.yml 文件来配置多个服务(services)、网络(networks)、数据卷(volumes)等资源,然后使用一条命令即可启动整个应用环境。
15. Docker compose有哪些局限性
Docker Compose 的局限性在于它只适合单机环境下的多容器编排,缺乏集群管理、自动扩缩容、高可用等生产级功能。
16. 什么是镜像仓库,常用的有哪些
镜像仓库是用于存储、管理和分发 Docker 镜像的服务,常用的包括 Docker Hub、阿里云 ACR、Harbor、AWS ECR、Google GCR 和 GitHub GHCR,适用于不同的部署场景和需求。
17. 本地部署一个Harbor镜像仓库
安装docker和docker-compose
sudo apt update && sudo apt install docker-compose -y从github上下载harbor安装包
wget https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz随后解压harbor,并编辑配置文件harbor.yml
tar -xvf harbor-offline-installer-v2.11.0.tgz 执行准备脚本,随后使用docker-compose启动harbor
sudo ./prepare
sudo docker-compose up -d启动完成

18. 配置机器信息Harbor仓库,并成功上传下载镜像
登录harbor
docker login 192.168.75.130:80 -u admin -p 密码给本地镜像打tag
docker tag 镜像 tagid然后我选择本地删除镜像后再次拉取
docker pull 镜像仓库端口+镜像位置
19. 普通用户可以执行docker容器吗
可以,只要普通用户在docker组里,或者启用了rootless模式
20. 如何让普通用户可以运行docker容器
1.加入docker组:
usermod -aG docker your_username2.启用rootless模式
安装扩展包
sudo apt install -y docker-ce-rootless-extras启动rootless模式
dockerd-rootless-setuptool.sh install随后systemctl启用服务。