标签: docker

Ubuntu Docker 容器中的 Virtualbox 缺少内核标头

我正在尝试在 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)

virtualbox ubuntu vagrant docker

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

我如何知道两台机器是否在同一个 LAN 上?

尽管我在研究生院上过课,但我对计算机网络的了解很差。

我总是忘记子网和掩码之类的!

目前,我正在尝试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)

其中后面的数字@IPifconfig命令中获取的各自的 s。
现在给定这些IP地址,我如何判断它们是否位于同一 LAN/网络上

如果问题问得不正确或很愚蠢,我很抱歉,但我被困住了!

多谢

networking lan ip-address subnet docker

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

SSH 反向隧道进入 Docker 容器

我需要在 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拒绝连接。

iptables docker

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

在 docker 容器中使用 consul 的 DNS 接口

我的主机上运行着一个 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

谢谢!

networking dns docker consul

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

我们可以在 docker 容器启动期间以 root 身份执行脚本吗?

我正在尝试在容器启动期间执行脚本。

对于普通的linux机器,如果我有脚本,/etc/rc.local脚本将在重新启动时执行

在构建 Docker 镜像时,我正在尝试做同样的事情。我/etc/rc.local用新内容覆盖该文件,然后执行

sudo docker run -d <image id>
Run Code Online (Sandbox Code Playgroud)

我原以为/etc/rc.local会被处决,但什么也没发生。

我是不是在错误的地方做的?

linux boot container docker

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

将 Microsoft ODBC 驱动程序安装到 Debian

所以,我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。

debian drivers installation apt docker

5
推荐指数
2
解决办法
7163
查看次数

如何从 CertBot 挂载证书以在 Docker 容器内使用

官方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)

mount container docker letsencrypt certbot

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

如何在 dockerfile 中创建端口转发

我正在需要端口 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

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

使主机上的 NFS 挂载在 Docker 容器内可见且可读写

我是 Docker 的新手,我想用它来为我的代码获得一个受控的编译环境。

我已经有了一个包含我需要的所有工具的 Docker 镜像。我目前的问题如下:

  • 我在主机上有我的代码,在我从 NFS 服务器挂载的主文件夹中
  • 我想使用 r+w 权限使该文件夹在 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 nfs docker

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

docker compose postgresql 启动包长度无效

我正在尝试在 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 时,我也会遇到同样的错误。

linux fedora pgadmin docker composer

5
推荐指数
0
解决办法
1935
查看次数