如何解决windows docker共享目录不支持符号链接(do not support symlinks)?
windows使用docker toolbox,搭建前端开发环境时,在共享目录使用npm安装前端依赖时,发现报错,无法使用符号连接。
这里有一个帖子专门讨论这个问题,感兴趣可以看一下:
https://askubuntu.com/questio...
我试过了上面所有的法子,发现只有这条有用:
$ npm i --no-bin-links
但是这种解决方式会带来另外一个问题:npm run dev 这些命令将无法使用,因为这个共享目录不支持符号连接,而‘npm run dev’是需要软连接的。
解决方法是
使用vagrant管理virtualBox,然后开一个centos虚拟机,centos里使用docker就可以了。这样共享目录由vagrant配置,默认是“/vagrant”,也就是Vagrantfile所在目录。使用vagrant共享出来的目录是支持符号连接的,问题解决了。
在vagrant里添加配置,允许符号链接
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"] #允许符号链接
重点要来了,vagrant具体如何配置?
对于一个前端开发来说,整一个docker其实都挺费劲了,因为平时很少接触环境方面的配置,对于黑洞洞的终端很不习惯。接下来分享一下我的配置。
首先,安装vagrant、virtualBox。这个自行百度。不过需要注意的是,windows powershell要更新到powershell 4.x,.net 也要更新。
然后,讲vagrantfile放在项目目录同级,提前下载好centos.box,放在与项目同级目录,使用shell执行:
$ vagrant up
vagrant box下载:
https://app.vagrantup.com/box...
这是我的Vagrantfile,可以参考一下:
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "../centos7.box" config.vm.provider :virtualbox do |vb| vb.name = "mbannianhui" vb.customize ["modifyvm", :id, "--memory", 1024] #修改虚拟机内存 vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"] #允许符号链接 end config.vm.network :private_network, ip: "192.168.33.10" #分配ip config.vm.network :forwarded_port, guest: 2333, host: 2333 #设置端口 config.vm.provision :shell, :inline => <<-EOT # # 安装docker:http://www.runoob.com/docker/centos-docker-install.html sudo yum update curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo systemctl start docker #启动docker sudo systemctl enable docker #docker随系统启动而启动 EOT end
这样,起来的虚拟机里,docker已经安装好了。查看docker是否成功安装:
sudo docker -v
一些docker命令:
sudo docker run -v /vagrant:/app -p 3000:3000 --name demo -itd --add-host www.demo.com:127.0.0.1 --restart unless-stopped docker.sitename.net/libname/image
说明:
-v /vagrant:/app # 映射目录;'/vagrant':vagrant默认的共享目录,也就是本机放置Vagrantfile文件的目录 -p 3000:3000 : hostPort:containerPosrt ,指定端口 --name demo 给容器起名字 -itd 相当于-i -t -d : -i 以交互模式运行容器,-t为容器重新分配一个伪输入终端,-d后台运行容器 --add-host www.demo.com:127.0.0.1 和windows配置host文件一样 --restart unless-stopped 容器崩坏重启,除非手动stop docker.sitename.net/libname/image 远程仓库的地址,这里也可以是本地镜像名字,或者官方镜像名字。如果本地没有这个镜像,则先拉取
问题:
如何访问docker容器跑起来的服务?
以上面为例,docker run时指定端口之后,在浏览器输入:
192.168.33.10:3000
原文:https://segmentfault.com/a/1190000016300808
如何解决windows docker共享目录不支持符号链接(do not support symlinks)?的更多相关文章
- 解决 Windows Docker 安装 Gitlab Volume 权限问题
本文首发于我的个人博客,解决 Windows Docker 安装 Gitlab Volume 权限问题 ,欢迎访问! 记录一下 Windows10 下 Docker 安装 Gitlab 的步骤. Ca ...
- VMware下的Linux系统中Windows的共享目录,不支持创建软连接
[问题] 在编译VMware下的Linux系统对从Windows中共享过来的文件,进行编译的时候,遇到: ln: creating symbolic link XXXXXX : Operation ...
- Linux使用笔记: 使用Samba访问windows的共享目录(转载)
转自:http://easwy.com/blog/archives/mount-a-windows-shared-folder-on-linux-with-samba/ 通常我们使用Samba都是在W ...
- Nginx访问VM虚拟机CentOS 7系统与本地Windows系统共享目录403
用VMware安装了CentOS7系统,并搭建了Nginx,MySQL,PHP的web项目运行环境,为了方便Windows本地主机进行程序调试把Windows本地项目目录共享到了虚拟机CentOS中的 ...
- VirtualBox下Linux加载Windows的共享目录
1.Windows下,在VirtualBox安装增强功能. 菜单 -> 设备 -> 安装增强功能 2.Windows下,在VirtualBox设置共享目录. 设置 -> 共享文件夹 ...
- Linxu:在Linux下访问Windows的共享目录
在 Windows xp 上设置一个共享目录 共享目录:d:\myfiles 在 Linux 下安装 samba-client 客户端 yum install samba-client 安装 cifs ...
- Vmware Centos 与 windows 创建共享目录
一路路都是坑~~ 只为了安装orcle的jdk~~,然而Orcle下载jdk是需要登录才能下载的,所以我在Centos7下使用 wget / curl 都下载不了哦~jdk7 第一步:Vmvare ...
- 解决挂载nfs共享目录失败的问题
现象:在192.168.82.131上 启动了nfs服务,并共享了/nfsfile目录,在另一台主机(ip: 192.1168.82.115)挂载的时候一直阻塞 1 初步分析是防火墙拦截导致,于是进行 ...
- 使用jcifs.smb.SmbFile读取Windows上共享目录的文件
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws Servl ...
随机推荐
- AVPlayer的使用,带缓冲
#import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface ViewCont ...
- ORACLE11G 将dataguard的rman备份恢复到測试环境的单机oracle中的具体过程
. 也就是说此时数据库仅仅能进行不全然恢复了,在打开数据库时得使用resetlogs打开. recover database until scn 11412370952; RMAN> recov ...
- EOJ 3194 字符串消除
给定一个由大写字母’A’.’B’.’C’构成的字符串s,按如下进行消除过程: 1.字符串s中连续相同字母组成的子串,如果子串的长度大于1,那么这些子串会被同时消除,余下的字符拼成新的字符串. 例如:” ...
- Coursera Algorithms Programming Assignment 1: Percolation(100分)
题目来源http://coursera.cs.princeton.edu/algs4/assignments/percolation.html 作业分为两部分:建立模型和仿真实验. 最关键的部分就是建 ...
- Python 36 GIL全局解释器锁 、vs自定义互斥锁
一:GIL全局解释器锁介绍 在CPython中,全局解释器锁(或GIL)是一个互斥锁, 它阻止多个本机线程同时执行Python字节码.译文:之所以需要这个锁, 主要是因为CPython的内存管理不是线 ...
- TPshop规格组合错误
TPshop规格组合错误 修改: admin/logic/goodslogic.class.php 中 方法:getSpecInput() 中 asort($spec_arr_sort) 去掉
- BN 详解和使用Tensorflow实现(参数理解)
Tensorflow BN具体实现(多种方式): 理论知识(参照大佬):https://blog.csdn.net/hjimce/article/details/50866313 补充知识: ① ...
- python重定向原理及实例
1. 前言 为了在Python编程中, 利用控制台信息, 我们需要对控制台输出进行接管(重定向).在Python中,控制台输出的接口是sys.stdout,通过分析print与sys.stdout之间 ...
- WebApi中对请求参数和响应内容进行URL编码解码
项目经测试,发现从IE提交的数据,汉字会变成乱码,实验了网上很多网友说的给ajax加上contentType:"application/x-www-form-urlencoded; char ...
- .net core2.0 中使用aspectcore实现aop
一.新建一个web application项目 1.1.添加AspectCore.Extensions.DependencyInjection引用 二.实现AbstractInterceptorAtt ...