使用docker-sync解决docker for mac 启动的虚拟容器程序运行缓慢的问题
背景:
新入职的公司有个非常OG的大项目,为了避免新同学重复造轮子,有哥们已经把项目需要的所有打好了一个镜像供我们启动docker。
初次启动docker 使用的命令如下:
docker run -itd -p 80:80 -v /web/docker:/web/docker centos
(ps: docker run 相关-i -p -v 等的含义不再此处赘述)
可见启动容器时,使用了docker自带的 -v (-volume) 方式进行mac本地和docker容器内的路径映射。
问题:
1.容器启动正常,环境正常,但是项目的运行非常慢,别人mac本地搭建的环境运行一个页面1-2秒,容器内跑,直接15-20秒不止。
2. 容器内项目git status 也巨慢 十几秒有余。
十分影响开发效率,初期在项目入口直接die('111'); 之后 发现响应很快,基本排除了nginx - php之间交互的问题。又顺带百度google了一通,最终定位到,mac本地的文件系统和docker容器内的文件系统(osxfs)不一致,需要频繁的进行文件格式转换。
解决:
使用docker-sync以挂载容器的形式进行路径映射。 docker-sync详细介绍可自行google百度,本文只记录下使用方式。
安装:
gem install docker-sync
brew install fswatch
brew install unison
brew install eugenmayer/dockersync/unox
(ps 没权限时请自行sudo)
使用:
cd /web/docker/xxx # 项目根路径
vim docker-sync.yml # docker-sync 配置文件
内容如下:
version: '2'
syncs:
xxx-sync: #ps: 生成的挂载容器的name,一般是开发容器-sync
sync_strategy: 'unison'
src: '.'
docker-sync start # 启动 此时已经生成了一个xxx-sync 名称的文件容器 , 可自行docker ps 查看。
接下来本地任何修改,可 xxx-sync 容器内的文件已经自行同步。
这时候启动容器
docker run -itd -p 80:80 -v xxx-sync:/web/docker centos
新容器的文件同步耗时问题已经基本解决。
ps1: 电脑重启或者偶发性双向同步有问题时,去本地项目根目录 执行一次docker-sync clean 以及 docker-sync start 即可。
ps2: 已经run起来的容器,若是想解决此问题,需要自行百度下容器运行的配置文件,改一下-v的路径参数即可。
使用docker-sync解决docker for mac 启动的虚拟容器程序运行缓慢的问题的更多相关文章
- 【docker】解决docker pull镜像 拉取镜像龟速的问题,docker拉取镜像使用阿里云docker镜像加速器
在docker拉取mysql镜像过程中,出现龟速的问题,解决这个问题的方法: 这个页面 停留了好久好久,依旧没有下载完成. 碰上这种情况 1.先退出Ctrl+C 2.在浏览器上进入阿里云docker库 ...
- 如何解决weblogic server启动中在IIOP后运行缓慢
WebLogic Server在Linux环境中,有时因为linux OS的安全包没有安装,导致weblogic server 在启动的时候会在长时间的停留在 <2/07/2009 08:54: ...
- Codeblock解决注释乱码问题及在ubuntu中程序运行时乱码问题。
(1)修改源文件保存编码在:settings->Editor->gernal settings>other settings 看到左边的Encoding group Box,改为WI ...
- c# 限制同时启动多个实例程序运行
using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using S ...
- Docker教程:docker的概念及安装
http://blog.csdn.net/pipisorry/article/details/50754385 Why docker 对于运维来说,Docker提供了一种可移植的标准化部署过程,使得规 ...
- 温故知新Docker概念及Docker Desktop For Windows v3.1.0安装
Docker 简介 什么是Docker? Docker是一个开放源代码软件项目,项目主要代码在2013年开源于GitHub.它是云服务技术上的一次创新,让应用程序布署在软件容器下的工作可以自动化进行, ...
- 在 Docker 容器中运行应用程序
案例说明 运行 3 个容器,实现对网站的监控. 三个容器的说明: 容器 web: 创建自 nginx 映像,使用 80 端口,运行于后台,实现 web 服务. 容器 mailer: 该容器中运行一个 ...
- Docker(一):Docker入门教程
如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...
- 把AspDotNetCoreMvc程序运行在Docker上-part2:修改容器以及发布镜像
在上一个part<把AspDotNetCoreMvc程序运行在Docker上-part1>,已经将成功将aspdotnetcore程序运行在两个不同的容器中,目前两个容器的内容完全相同,只 ...
随机推荐
- JuJu团队1月9号工作汇报
JuJu团队1月9号工作汇报 JuJu Scrum 团队成员 今日工作 剩余任务 困难 飞飞 将示例程序打包成exe 将crossentrophy和softmax连接起来 无 婷婷 -- 完善ma ...
- mac下添加环境变量
1.环境变量相关文件说明: a. /etc/profile b. /etc/paths c. ~/.bash_profile d. ~/.bash_login e. ~/.profile f. ~/. ...
- suse下静默方式安装oracle(无图形界面)
以 http://www.cnblogs.com/0201zcr/p/4728241.html 为主 以 http://www.cnblogs.com/jyzhao/p/5001782.html 为参 ...
- django ajax发送post请求
第一种:将csrf_token放在from表单里 <script> function add_competion_goods() { $.ajax({ url: "{% url ...
- docker centos 镜像中安装python36详解!生成centos+python36的基础镜像
获取centos镜像docker pull centos:7.4.1708 启动并进入centos的容器docker run -i –t centos /bin/bash下载安装python编译环境依 ...
- SignalTap II Logic Analyzer 无法观测到信号?
在Quartus SignalTap 工具中加入信号,发现加入的信号变成红色,如图所示的data_slave[7..0]: 这样的信号是没有办法观测的,不会根据SignalTap 的Clock和Tri ...
- VMWare 禁用vmem虚拟内存文件
使用 VMWare 虚拟机,虚拟机启动后,会在虚拟机目录下建立一个与虚拟内存大小相同的 .vmem文件 这个文件主要是将虚拟机内存的内容映射到磁盘,以支持在虚拟机的暂停等功能 对所有的虚拟机" ...
- JAVAWEB limit 分页 (转载)
原文来自于 https://www.jianshu.com/p/553fc76bb8eb 作者写的很不错 只是为了自己方便学习转载的 代码我就不贴了 我是 Oracle 要改一些代码 原 ...
- pom.xml报unknown error
1. 从https://start.spring.io/的spring initializr生成demo,使用默认的2.1.6.release(2019年7月10日) 2. 在eclipse加载后,p ...
- Linux学习《第五章 用户身份与文件权限》