Docker常见问题总结(持续更新)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker常见问题总结(持续更新)相关的知识,希望对你有一定的参考价值。
一、镜像相关问题
1、如何批量清理临时镜像文件?
#docker rmi $(DOCKER IMAGES -qf dangling=true)
2、如何查看镜像支持的环境变量?
#docker run IMAGE env
3、本地的镜像文件都存放在哪里?
与Docker相关的本地资源都存放在/var/lib/docker/目录直,以aufs文件系统为例,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的镜像层文件。
4、构建Docker像应该遵循哪些原则?
整体原则上,尽量保持镜像功能的明确和内容的精简,要点包括:
尽量选取满足需求但较小的基础系统镜像,例如大部分时候可以选反地debian:wheezy或debian:jessie镜像,仅有不足百兆大小;
清理编译生成文件、安装包的缓存等临时文件;
安装各个软件时候指定准确的版本号,并避免引入不需要的依赖;
从安全角度考虑,应用要尽量使用系统的库和依赖;
如果安装应用时候需要配置一些特殊的环境变量,在安装后要还原不需要保持的变量值;
使用Dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录。
5、碰到网络问题,无法pull镜像,命令行指定http_proxy无效,怎么办?
在Docker配置文件中添加export http_proxy="http://<PROXY_HOST>:<PROXY_PORT>",之后重启Docker服务即可。
二、容器相关问题
1、容器退出后,通过docker ps命令查看不到,数据会丢失么?
容器退出后会处于终止(exited)状态,此时可以能过docker ps -a 命令查看。其中的数据也不会丢失,还可以通过docker start命令来启动它。只有删除掉容器才会清除所有数据。
2、如何停止所有正地运行的容器?
docker kill $(docker ps -q)
3、如何清理批量后台停止的容器?
docker rm -f $(docker ps -qa)
4、如何获取某个容器的PID信息?
docker inspect --format '{{ .State.Pid }}' <CONTANINERID or NAME>
5、如何获取某个容器的IP地址?
dpcler inspect --format '{{ >NetworkSettings.IPAddress }}' <CONTANINERID or NAME>
6、如何给容器指定一个固定IP地址,而不是每次重启容器IP地址都会变?
目前Docker并没有提供直接的对容器IP地址的管理支持,可以在网上查找容器网络配置创建点对点连接的案例,来手动配置容器的静态IP。或者在容器启动后,再手动进行修改。
7、如何临时退出一个正在交互的容器的终端,而不终止它?
按Ctrl-p Ctrl-q。如果按Ctil-c往往会让容器内应用进程终止,进而会终止容器。
8、使用docker port 命令映射容器的时,系统报错“Error: No Public port '80' published for xxx” ,怎么办?
创建镜像时Dockerifle要通过EXPOSE命令指定正确的开放端口;容器启动时指定PublishAllPort=true。
9、可以在一个容器中同进运行多个应用进程么?
一般并不推荐在同一个容器内运行多个应用进程。如果有需求,可以通过一些额外的进程管理机制,比如supervisord来管理所运行的进程。可以参考https://docs.docker.com/articles/using_supervisord/
10、如何控制容器占用系统资源(CPU MEM)的份额?
在使用docker create命令创建容器或使用docker run创建并启动容器的时候,可以使用-c | --cpu-shares[=0] 参数来调整容器使用CPU的权重;使用 -m | --memory[=MEMORY]参数来调整容器使用内存的大小。
参考资料:《Docker技术入门与实战 第2版》
以上是关于Docker常见问题总结(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章