我在 CentOS 7 上安装了 docker 并且我正在运行 firewallD。
从我的容器内部,转到主机(默认 172.17.42.1)
开启防火墙
container# nc -v 172.17.42.1 4243
nc: connect to 172.17.42.1 port 4243 (tcp) failed: No route to host
Run Code Online (Sandbox Code Playgroud)
防火墙关闭
container# nc -v 172.17.42.1 4243
Connection to 172.17.42.1 4243 port [tcp/*] succeeded!
Run Code Online (Sandbox Code Playgroud)
我已经阅读了 firewalld 上的文档,但我并不完全理解它们。有没有办法简单地允许 docker 容器中的所有内容(我猜在 docker0 适配器上)不受限制地访问主机?
我创建了一个 virtualbox 原始磁盘,指向一个正常运行的引导 USB 驱动器,上面有一个小型 linux 发行版。
sudo ./VBoxManage internalcommands createrawvmdk -filename ~/VirtualBox\ VMs/MyTinyLinux/rawdiskonusb.vmdk -rawdisk /dev/disk2 -partitions 2
Run Code Online (Sandbox Code Playgroud)
当我尝试将其添加到 virtualbox VM 时,出现此错误:
Failed to open the disk image file ~/VirtualBox VMs/MyTinyLinux/rawdiskonusb.vmdk.
Permission problem accessing the file for the medium '~/VirtualBox VMs/MyTinyLinux/rawdiskonusb.vmdk' (VERR_ACCESS_DENIED).
Result Code: VBOX_E_FILE_ERROR (0x80BB0004)
Component: MediumWrap
Interface: IMedium {4afe423b-43e0-e9d0-82e8-ceb307940dda}
Callee: IVirtualBox {0169423f-46b4-cde9-91af-1e9d5b6cd945}
Callee RC: VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
Run Code Online (Sandbox Code Playgroud)
我看到原始磁盘 vmdk 文件归 root 所有。我把它告诉了我自己的用户。
仍然得到同样的错误。我怀疑如果我以 root 身份运行 virtualbox 会起作用,但我真的不想这样做。有没有办法让这项工作?
所以,在 bash 中,这很好用:
(cd /some/dir; ./runscript.sh)
假设 /some/dir/runscript.sh 存在。
但
sudo (cd /some/dir; ./runscript.sh)
Run Code Online (Sandbox Code Playgroud)
失败并出现错误:
-bash: syntax error near unexpected token `cd'
Run Code Online (Sandbox Code Playgroud)
为什么?