首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我在windows上使用vagrant+docker时文件系统问题

当我在windows上使用vagrant+docker时文件系统问题
EN

Stack Overflow用户
提问于 2014-10-24 18:01:12
回答 1查看 786关注 0票数 0

这是我的流浪汉档案

代码语言:javascript
运行
复制
Vagrant.configure("2") do |config|
  config.vm.define "app" do |app|
    app.vm.provider "docker" do |d|
      d.build_dir = "."
      d.cmd = ["/sbin/my_init", "--enable-insecure-key"]
    end
  end
  config.ssh.username = "root"
  config.ssh.private_key_path = "insecure_key"
end

这是我的码头文件

代码语言:javascript
运行
复制
FROM phusion/baseimage:0.9.15
MAINTAINER neetu

ENV HOME /root
RUN mkdir /buzzbuild
ADD . /buzzbuild
RUN cd /buzzbuild/ && chmod 777 install.sh && sh install.sh
CMD ["/sbin/my_init"]
EXPOSE 80 443 5000 15672

所以你可以看到..。1)我正在添加buidl目录(.)到/buzzbuild 2),并在那里运行安装脚本(在我CD到该dir之后)

我得到了

root@8bde177d1bc2:/buzzbuild# ./test2.sh -bash:./install.sh: /bin/sh^M:糟糕的解释器:没有这样的文件或目录

安装脚本的内容如下:

代码语言:javascript
运行
复制
#!/bin/sh
#apt-get update
apt-get update
apt-get install -y -q git

如果我创建了新文件(test.sh)并更改了对它的权限,并添加了相同的内容,它就能工作。

但是install.sh脚本不起作用。

我怀疑这是一个文件从窗口添加到ubuntu(容器)的问题。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-24 20:51:31

怎么了

错误消息root@8bde177d1bc2:/buzzbuild# ./test2.sh -bash: ./install.sh: /bin/sh^M: bad interpreter: No such file or directory向您提示您的install.sh文件具有install.sh样式的行尾。

Windows行端由两个字符组成:\r\n,而Linux端行仅为\n^M表示错误消息中的\r字符。

做什么?

在构建映像之前,要么确保所有脚本都使用Linux样式的行尾,要么在Dockerfile中添加一个RUN语句,修复行尾:

代码语言:javascript
运行
复制
ADD . /buzzbuild
RUN cd /buzzbuild/ \
    && sed -i 's/\r//' install.sh \
    && chmod 777 install.sh \
    && sh install.sh
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26553648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档