我正在使用 docker NFS 容器,但在安装导出的目录(甚至在本地主机上)时遇到问题。
exportfs: <path> does not support NFS export
Run Code Online (Sandbox Code Playgroud)
我的容器使用入口点脚本来
/etc/exports,rpcbindand service nfs-kernel-server start, andinotifywait继续运行。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) 我已经从 docker hub 中提取了一个图像。我想修改这个镜像的docker文件。docker 文件位于我的机器上的哪里?谢谢。
一个想建立和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
我想要我的docker machine使用bridge network,VirtualBox但我可以找到任何选项,docker-machine create --driver virtualbox所以我只是VirtualBox通过手动设置来修复它。
修复网络设置后,但是,docker-machine ls显示此错误docker machine.
机器没有仅主机适配器。
我对这些问题有疑问。
docker machine与bridge network从第一。docker-machine将网络设置修复为bridge.(现在,我只是重新创建docker machine通过generic driver)后,有什么方法可以正常工作bridge network,任何原因?我需要一些帮助,对 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 …
早些时候我曾经使用以下命令运行:
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 …
我在 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 命令,请提供输入。谢谢!
这是一个非常讨论的话题,但我从未找到解决方案。
因此,您可能知道,当我的容器中有一个卷并且我yarn install使用 Dockerfile 中的 a安装我的依赖项时,Yarn 将node_modules在我的容器上创建一个具有root:root访问权限的文件夹。
这种方法有两个问题(在本地/开发环境中):
该node_modules文件夹仅在我的容器中,但主机的代码编辑器(我的是 VSC)可能需要此文件夹才能正常工作。比如你没有,VSC会骂你他找不到导入的模块……
如果主机想要安装一个包,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) 我想实现什么目标?我有一个在 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) Docker + Ubuntu + Virtualbox:dockerfile中的"volumes"指令不起作用?请参阅以下解决方案.
docker-machine ×10
docker ×9
dockerfile ×4
virtualbox ×3
angular-cli ×1
java ×1
javascript ×1
macos ×1
nfs ×1
node.js ×1
postgresql ×1
ubuntu ×1