Docker镜像构建运行基础问题:持久化、警告处理与端口配置问询
问题1:构建持久化镜像、避免冗余容器/镜像的方法
- 最佳实践是把所有软件安装、配置步骤全部写进Dockerfile,每次构建时给镜像打带语义版本的明确标签,比如执行
docker build -t rstudio_env:v202405 .,标签可以按版本、更新日期来命名,后续直接调用对应标签的镜像即可,不需要每次进容器改配置。 - 如果确实需要交互式修改容器后持久化,操作完容器不要直接删除,执行
docker commit <运行完成的容器ID> 自定义镜像名:标签,就能把修改后的容器保存为带标签的正式镜像。 - 你在
docker ps -a里看到的大量无明确标识的条目是停止后的冗余容器,启动容器时加上--name 自定义容器名参数,就能给容器设置固定名称方便区分;不需要的停止容器可执行docker container prune -f批量清理,无用的无标签<none>镜像可执行docker image prune -f批量删除;构建时加上--force-rm参数也能自动删除构建过程的中间容器,减少冗余文件。
问题2:docker scan警告的处理
- 该警告只是Docker官方的安全提示,没有任何不良影响,也不会影响镜像的正常构建和使用。
- 不需要额外处理,直接忽略即可。如果想彻底关闭该提示,可在Docker配置文件
/etc/docker/daemon.json中添加配置项"scan-disable": true,保存后重启Docker服务就不会再弹出该警告。 - 如果你有镜像安全扫描需求,直接执行
docker scan 你的镜像名即可触发漏洞扫描,个人自用场景完全不需要执行该操作。
问题3:开放RStudio端口的配置方法
- 首先在Dockerfile中添加一行
EXPOSE 8787,该配置为镜像的元数据声明,用于标注该镜像需要使用8787端口。 - 启动容器时添加端口映射参数即可实现和docker-compose相同的端口暴露效果,命令示例:
docker run -it -p 8787:8787 some_docker,启动后访问本地的8787端口就能访问RStudio服务。 - 如果需要固定配置,也可以直接写docker-compose.yml文件,把构建规则和端口配置都写进去,后续执行
docker-compose up -d就能一键完成构建和启动,不需要每次手动打长命令。
内容的提问来源于stack exchange,提问作者Sos
相关产品推荐
相关产品推荐

