Docker 实践问题汇总

【问题1】 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

—————————————

【解决】 没有启动 docker 服务,执行启动docker服务 


【问题2】 Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details

—————————————

【解决】 Docker启动异常的可能原因:

  • 1、内存不够:Docker 启动至少需要2G内存,首先执行free -mh命令查看剩余内存是否足够
  • 2、端口冲突:该docker监听端口已经被其他进程占用,一般此种问题容易出现在新部署的服务,或在原有机器上部署新的后台服务,所以在部署之前应该执行命令检查端口是否已经被占用,如果上线后发现占有则应改为可用端口再重启之。

【问题3】 默认配置下,如果在 CentOS 使用 Docker CE 看到下面的这些警告信息: WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled

—————————————

【解决】 请添加内核配置参数以启用这些功能。

然后重新加载 sysctl.conf 即可 $ sudo sysctl -p

【问题4】docker容器中没有vim工具

—————————————

【解决】
首先检查这个镜像是基于什么系统


现在docker-hup上大部分都是基于Debian linux构建的,主要是因为这个Debian系统内核比较小。可以通过执行如下命令完成vim安装。

【docker 使用注意事项】

1、制作镜像尽量避免使用docker commit命令,原因这样制作的镜像像一个黑盒操作,开发人员不知道里面具体改动了那些内容。 docker commit 可以用于被攻击后记录轨迹
2、docker run 宿主机端口:docker虚拟机端口 注意:在冒号前面的端口为宿主机的端口,后面的为虚拟机端口
3、强烈建议将容器加入自定义的 Docker 网络来连接多个容器,而不是使用 –link 参数。
4、使用docker image prune 可以清除无用的虚悬镜像
5、docker run –name 最好使用name参数配置,给启动的docker镜像起一个名字,否则docker每次回自动给其命名,且每次的名字不 一样。


【dockerfile 编写注意事项】

1、使用dockerfile制作docker镜像时,同类命令尽量使用&&拼接,减少创建的镜像层数,提高镜像创建速度 注意:docker最大镜像层数127
2、dockerfile中记录使用的cmd命令,会被docker run 后面的执行的命令覆盖
3、dockerfile中ADD命令可以实现自动解压的效果。注意,虽然ADD和COPY都可以复制文件,但建议只有在需要对复制文件进行自动解压时使用add。

发表评论