我正在尝试在 Docker 中运行 virtualbox 以使用 vagrant。我尝试使用 Ubuntu 来实现这一目标。这是我的 Dockerfile:
FROM ubuntu
RUN apt-get update
RUN apt-get install -y software-properties-common python-software-properties
RUN add-apt-repository 'deb http://download.virtualbox.org/virtualbox/debian trusty contrib'
RUN add-apt-repository 'deb http://de.archive.ubuntu.com/ubuntu trusty main restricted universe multiverse'
RUN apt-get update
RUN apt-get install -y wget linux-headers-generic
RUN wget http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
RUN apt-get update
RUN apt-get install -y gcc virtualbox dkms virtualbox-dkms
RUN wget https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.1_x86_64.deb
RUN dpkg -i vagrant_1.7.1_x86_64.deb
Run Code Online (Sandbox Code Playgroud)
如果我然后运行virtualbox,我会得到:
WARNING: The character device /dev/vboxdrv does …Run Code Online (Sandbox Code Playgroud) 尽管我在研究生院上过课,但我对计算机网络的了解很差。
我总是忘记子网和掩码之类的!
目前,我正在尝试Docker进行Erlang分布式编程。
我启动了4个docker容器
(gru@172.17.0.63) # also known as Server
(minion1@172.17.0.61)
(minion2@172.17.0.64)
(minion3@172.17.0.65)
Run Code Online (Sandbox Code Playgroud)
其中后面的数字@是IP从ifconfig命令中获取的各自的 s。
现在给定这些IP地址,我如何判断它们是否位于同一 LAN/网络上
如果问题问得不正确或很愚蠢,我很抱歉,但我被困住了!
多谢
我需要在 docker 容器中对服务器上失败的内容进行 xdebug,并且从我的笔记本电脑上运行ssh -R 9000:localhost:9000 server并验证了隧道telnet localhost 9000。到目前为止一切顺利,我建立了联系。
现在,在服务器上我做了
iptables -t nat -I PREROUTING -p tcp -d 172.17.42.1 --dport 9000 -j DNAT --to 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)
最后我提交了有问题的 docker 实例并运行
docker run --net=host -t -i snapshot /bin/bash
Run Code Online (Sandbox Code Playgroud)
容器内部telnet 172.17.42.1 9000拒绝连接。
我的主机上运行着一个 consul 代理,并且在 docker 容器内运行着一些服务。我正在使用“gliderlabs/registrator”来发现这些服务并向当地领事代理注册它们。
领事代理被配置为接受来自任何地方的连接("client_addr": "0.0.0.0"选项),我可以通过dig @172.17.42.1 -p 8600 someservice.service.consul从主机进行“证明”。
问题是我似乎无法在容器内执行相同的操作,挖掘请求只是超时,我curl也无法执行此操作。我确实通过了--dns 172.17.42.1。有任何想法吗?
注意:如果可能的话我想避免使用--net=host。
谢谢!
我正在尝试在容器启动期间执行脚本。
对于普通的linux机器,如果我有脚本,/etc/rc.local脚本将在重新启动时执行
在构建 Docker 镜像时,我正在尝试做同样的事情。我/etc/rc.local用新内容覆盖该文件,然后执行
sudo docker run -d <image id>
Run Code Online (Sandbox Code Playgroud)
我原以为/etc/rc.local会被处决,但什么也没发生。
我是不是在错误的地方做的?
所以,我apt-get install返回E: Unable to locate package msodbcsql(错误代码 100)。我正在尝试使用我的系统访问 SQL Server 数据库,因此我正在按照Microsoft 的说明安装他们的 Linux 驱动程序。
我试过指定包版本:apt-get install -y msodbcsql17并使用 Debian 8 和 9 的包。我试过确认系统版本,因为我实际上是从 构建一个 Docker 容器Debian:stretch-slim -> Python:3.6-slim,我倾向于 Debian 8,因为其他图像中的版本号明确为 9。
尝试安装该软件包的选项有哪些?其他故障排除方法或步骤?
提前谢谢了。总的来说,我是 Linux 的新手,因此非常感谢您的指点!
根据 bash:cat /etc/debian_version我的版本实际上是 9.5。
官方certbot( https://certbot.eff.org ) 颁发和更新证书的工具Let's Encrypt将当前有效的证书保存到${prefix}/archive/${domain}/certN.pem,其中N是任意数字。用于访问当前有效证书和密钥的路径是 中的相对符号链接${prefix}/live/${domain}/cert.pem:
root@skprov2:${prefix}/live/${domain}# ls
total 12K
4.0K drwxr-xr-x 2 root root 4.0K Jul 24 16:08 ./
4.0K drwx------ 9 root root 4.0K Aug 24 10:57 ../
0 lrwxrwxrwx 1 root root 39 Jul 24 16:08 cert.pem -> ../../archive/${domain}/cert2.pem
0 lrwxrwxrwx 1 root root 40 Jul 24 16:08 chain.pem -> ../../archive/${domain}/chain2.pem
0 lrwxrwxrwx 1 root root 44 Jul 24 16:08 fullchain.pem -> ../../archive/${domain}/fullchain2.pem
0 lrwxrwxrwx 1 root …Run Code Online (Sandbox Code Playgroud) 我正在需要端口 8080 的 docker 容器上安装应用程序
为了从主机转发到容器,我已经启动了容器:
docker run -p 8080:8080 "image id"
Run Code Online (Sandbox Code Playgroud)
我可以使用以下地址通过浏览器访问 docker 容器内的应用程序:
docker_parent_host:8080
我需要看到这样的容器端口:
docker port 7d04524erte
3306/tcp -> 0.0.0.0:3306
80/tcp -> 0.0.0.0:80
8080/tcp -> 0.0.0.0:8080
Run Code Online (Sandbox Code Playgroud)
我试图在 dockerfile 中使用暴露,但没有给我相同的结果,它给了我:
80/tcp
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 dockerfile 中获得与提到 -p 8080 相同的端口转发的定义?
我是 Docker 的新手,我想用它来为我的代码获得一个受控的编译环境。
我已经有了一个包含我需要的所有工具的 Docker 镜像。我目前的问题如下:
这是我首先尝试的(将源文件夹作为卷运行容器)和我得到的错误:
[mbrandalero@machine ~]$ docker run -it --cap-add sys_admin -v "/homes/mbrandalero/src:/usr/local/src/" mbrandalero/my-image bash
/usr/bin/docker-current: Error response from daemon: error while creating mount source path '/homes/mbrandalero/src': mkdir /homes/mbrandalero/src: permission denied.
Run Code Online (Sandbox Code Playgroud)
(显然它正在尝试在主机端创建目录,但它已经存在)
奇怪的是,当我尝试将整个主文件夹作为卷运行容器时,它可以工作但会产生不同的错误(文件夹中没有写权限):
[mbrandalero@machine ~]$ docker run -it --cap-add sys_admin -v "/homes/mbrandalero/:/usr/local/src/home" mbrandalero/my_image bash
root@46712ad936f2:/usr/local/src# cd home/
bash: cd: home/: Permission denied
root@46712ad936f2:/usr/local/src# ls -lah | grep "\(\.\|home\)"
total 4.0K
drwxr-xr-x 1 root root 18 May 20 14:50 . …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 linux fedora 28 机器上安装/设置 pgadmin4,当我尝试运行此命令时
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
我收到这些错误:
postgres_1 | 2019-05-24 13:50:15.903 UTC [125] LOG: invalid length of startup packet
postgres_1 | 2019-05-24 13:50:15.907 UTC [126] LOG: invalid length of startup packet
postgres_1 | 2019-05-24 13:50:15.912 UTC [127] LOG: invalid length of startup packet
postgres_1 | 2019-05-24 13:50:15.917 UTC [128] LOG: invalid length of startup packet
postgres_1 | 2019-05-24 13:50:15.924 UTC [129] LOG: invalid length of startup packet
当我尝试连接到显示 503 错误的 localhost/pgadmin4 时,我也会遇到同样的错误。
docker ×10
linux ×3
container ×2
networking ×2
apt ×1
boot ×1
certbot ×1
composer ×1
consul ×1
debian ×1
dns ×1
drivers ×1
fedora ×1
installation ×1
ip-address ×1
iptables ×1
lan ×1
letsencrypt ×1
mount ×1
nfs ×1
pgadmin ×1
subnet ×1
ubuntu ×1
vagrant ×1
virtualbox ×1