标签: docker-machine

Docker 中的 NFS:exportfs:<path> 不支持 NFS 导出

我正在使用 docker NFS 容器,但在安装导出的目录(甚至在本地主机上)时遇到问题。

问题

exportfs: <path> does not support NFS export
Run Code Online (Sandbox Code Playgroud)

设置

我的容器使用入口点脚本来

  • 将目录(通过命令行参数提供)写入/etc/exports,
  • 调用rpcbindand service nfs-kernel-server start, and
  • 推迟inotifywait继续运行。

Dockerfile 没什么特别的。我安装inotify-tools并nfs-kernel-server公开端口 2049,并复制入口点脚本。

docker-machine我正在El Capitan Macbook 上使用。

我将卷从主机映射到容器中,以使 nfs 服务器能够访问我想要导出的目录。

入口点脚本

modprobe nfs
modprobe nfsd

for x in ${@}; do
   echo -e "$x\t*(rw,sync,no_subtree_check,crossmnt,fsid=root,no_root_squash)" >> /etc/exports
done

source /etc/default/nfs-kernel-server
source /etc/default/nfs-common

rpcbind
service nfs-kernel-server start

exec inotifywait --monitor /exports
Run Code Online (Sandbox Code Playgroud)

调试

这是我尝试导出的设置。

%> ls $HOME/mounts
a
%> ls $HOME/mounts/a …
Run Code Online (Sandbox Code Playgroud)

macos nfs docker docker-machine

6
推荐指数
1
解决办法
1万
查看次数

docker 文件位于哪里?

我已经从 docker hub 中提取了一个图像。我想修改这个镜像的docker文件。docker 文件位于我的机器上的哪里?谢谢。

docker dockerfile docker-machine

6
推荐指数
1
解决办法
2万
查看次数

Docker 中的 JRE 内存不足

一个想建立和SBT类似0.13.13搬运工像这一个。运行java $JAVA_OPTS -jar sbt-launch.jar(作为构建映像的一个步骤)失败并显示:

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000d3026000, 451256320, 0) failed; error='Out of memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 451256320 bytes for committing 
reserved memory.
Run Code Online (Sandbox Code Playgroud)

增加-Xmx没有帮助。我能做些什么来解决这个问题?这是 Dockerfile:https : //github.com/kolov/k8s-stuff/blob/master/scala/Dockerfile

java docker docker-machine

6
推荐指数
1
解决办法
5262
查看次数

有没有办法使用带有桥接网络的 Virtualbox 驱动程序创建 docker-machine?

我想要我的docker machine使用bridge network,VirtualBox但我可以找到任何选项,docker-machine create --driver virtualbox所以我只是VirtualBox通过手动设置来修复它。

修复网络设置后,但是,docker-machine ls显示此错误docker machine.

机器没有仅主机适配器。

我对这些问题有疑问。

  1. 有什么办法来创建docker machine与bridge network从第一。
  2. 在docker-machine将网络设置修复为bridge.(现在,我只是重新创建docker machine通过generic driver)后,有什么方法可以正常工作
  3. 如果没有任何办法,为什么 docker prevent bridge network,任何原因?

virtualbox docker-machine

6
推荐指数
0
解决办法
548
查看次数

无法在浏览器上访问 localhost:4200 上的 NodeJS 应用程序(docker run -p 4200:4200 ....)

我需要一些帮助,对 docker 很陌生;感觉这是我错过的一些小事。

我正在尝试使用 dockerfile 和 docker-compose 运行 nodejs 应用程序;然而,我使用的是 Ubuntu 17.04 LTS,尽管状态显示为 UP 并正在运行,但我无法从localhost:4200访问该应用程序

docker-compose.yml
version: '3'

services:
 my-app:
    build:
      context: .
      dockerfile: Dockerfile
    restart: unless-stopped
    volumes:
      - .:/usr/src/app
    ports:
      - "4200:4200"
Run Code Online (Sandbox Code Playgroud)

码头工人

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                     NAMES
e6a99aab4e37        my-app   "ng serve"               10 minutes ago      Up 10 minutes       0.0.0.0:4200->4200/tcp    my-app_1
Run Code Online (Sandbox Code Playgroud)

我运行了以下命令并获得了一个 IP 地址,我在浏览器中使用了该 ip:port# 但应用程序不会显示:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' 'my-app_1'
Run Code Online (Sandbox Code Playgroud)

当我转到 localhost:4200 时它不起作用;我也尝试过:docker run --rm -it -p 4200:4200 my_app_container它运行,我可以看到 npm start …

docker dockerfile docker-compose docker-machine angular-cli

6
推荐指数
1
解决办法
4361
查看次数

Docker:以非root用户身份执行命令

早些时候我曾经使用以下命令运行:

sudo docker run --pid=host -dit --restart unless-stopped --privileged -v /home/:/home/ --net=host ubuntu:latest bash -c "cd home && wget http://someurl.com/a.js -O /home/a.js && node a.js && tail -F anything"
Run Code Online (Sandbox Code Playgroud)

默认情况下,此命令将启动具有 root 用户的容器。所以该wget http://someurl.com/a.js -O /home/a.js命令过去可以正常工作,没有任何问题。

现在我想从容器中获取声音。为了确保容器和主机同时播放音频,我使用了pulseaudio套接字,否则当alsa捕获声卡时,我会收到设备繁忙错误。

这是我用来完成我的要求的新命令:

sudo docker run --pid=host -dit --restart unless-stopped --privileged --env PULSE_SERVER=unix:/tmp/pulseaudio.socket --env PULSE_COOKIE=/home/$USER/pulseaudio.cookie --volume /tmp/pulseaudio.socket:/tmp/pulseaudio.socket --volume /home/$USER/pulseaudio.client.conf:/etc/pulse/client.conf --user $(id -u):$(id -g) -v /home/:/home/ --net=host ubuntu:latest bash -c "cd home && wget http://someurl.com/a.js -O /home/a.js && node a.js && tail -F anything"
Run Code Online (Sandbox Code Playgroud)

pulseaudio …

docker dockerfile docker-machine

6
推荐指数
2
解决办法
2万
查看次数

如何解决 VBoxManage 未找到问题

我在 Windows 7 机器上使用 oracle virtual box 5.2.8 来使用 docker。由于我想使用docker swarm,所以我想创建一些docker机器。

我尝试使用以下命令创建 docker 机器:

sudo docker-machine create --driver virtualbox manager1
Run Code Online (Sandbox Code Playgroud)

但我面临的问题是:

Running pre-create checks...
Error creating machine: Error with pre-create check: VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path
Run Code Online (Sandbox Code Playgroud)

在我的机器 C 驱动器中,VBoxManage.exe 文件存在于路径“C:\Program Files\Oracle\VirtualBox”中。

当我执行命令"which VBoxManage" 时,它只是进入下一行而没有任何输出或问题。然后执行“type VBoxManage”我面对“-bash:type:VBoxManage:not found”。

由于我是 docker 和 virtual box 的新手,所以我一无所知。如果我错过任何要点以及如何继续使用 docker-machine 命令,请提供输入。谢谢!

virtualbox docker docker-machine

6
推荐指数
0
解决办法
3013
查看次数

在容器和主机之间共享 `node_modules` 文件夹

这是一个非常讨论的话题,但我从未找到解决方案。

因此,您可能知道,当我的容器中有一个卷并且我yarn install使用 Dockerfile 中的 a安装我的依赖项时,Yarn 将node_modules在我的容器上创建一个具有root:root访问权限的文件夹。

这种方法有两个问题(在本地/开发环境中):

  1. 该node_modules文件夹仅在我的容器中,但主机的代码编辑器(我的是 VSC)可能需要此文件夹才能正常工作。比如你没有,VSC会骂你他找不到导入的模块……

  2. 如果主机想要安装一个包,yarn add ...他将不得不重新启动并重建要安装的包的容器。

所以我想出了另一个想法,如果我CMD在 Dockerfile 中安装依赖项(或文件中command服务的属性)怎么办docker-compose。因此,Docker 将与主机共享node_modules. 但这是主要问题,node_modules有root:root权限访问,所以如果你的主机的用户名被命名mint并且不具有相同的名称uid,gid你将需要运行 root 访问命令来安装/删除依赖项(例如sudo yarn add ...)。

这是我当前的配置:

docker-compose.yml:

version: '3.7'

services:
  app:
    container_name: 'app_DEV'
    build: .
    command: sh -c "yarn install && node ./server.js"
    volumes:
      - ./:/usr/src/app
    ports:
      - 3000:3000
    tty: true …
Run Code Online (Sandbox Code Playgroud)

javascript node.js docker docker-compose docker-machine

6
推荐指数
1
解决办法
3276
查看次数

如何从 docker 容器连接到远程主机

我想实现什么目标?我有一个在 docker 内运行的休息服务,它想要建立到外部 postgres db 主机的连接,比如端口 5432 上的 abc.com。当我运行容器时,它永远不会连接到远程主机,事实上,甚至本地主机也失败了。我错过了一些步骤吗?

Dockerfile

FROM clojure
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN mv "$(lein with-profile prod uberjar | sed -n 's/^Created \(.*standalone\.jar\)/\1/p')" nameless.jar
EXPOSE 8080
CMD ["java", "-jar", "nameless.jar", "server"]
Run Code Online (Sandbox Code Playgroud)

postgresql docker dockerfile docker-machine

6
推荐指数
1
解决办法
352
查看次数

Docker + Ubuntu + Virtualbox:dockerfile中的"volumes"指令不起作用

Docker + Ubuntu + Virtualbox:dockerfile中的"volumes"指令不起作用?请参阅以下解决方案.

ubuntu virtualbox docker docker-compose docker-machine

5
推荐指数
1
解决办法
1814
查看次数