小编Tij*_*ijn的帖子

在Docker中公开端口将无法正常工作

我正在尝试使用Docker和Selenium Grid设置自动化测试平台.在下图中,您可以看到我正在使用的结构.最重要的是在Compute Engine上运行的ubuntu服务器.左边是一个运行ubuntu 14.04的docker容器.容器使用Google App Engine在localhost:8080上运行我们的项目.右边是Selenium Hub,在端口4444上运行两个节点.

Docker和Selenium设置

这是运行docker ps时的输出:

CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS              PORTS                     NAMES
f5ac6e3c8270        xxxxx/ubuntuport:14.04              "/bin/bash"              3 days ago          Up 13 seconds       0.0.0.0:32777->8080/tcp   drunk_kalam
4246ca0790db        eu.gcr.io/xxxxxx/selenium-chrome    "/bin/sh -c 'rm -rf /"   4 weeks ago         Up 3 days                                     evil_mahavira
8d06f90a1a84        eu.gcr.io/xxxxxx/selenium-firefox   "/bin/sh -c 'rm -rf /"   4 weeks ago         Up 3 days                                     nauseous_torvalds
dc548f638778        eu.gcr.io/xxxxxx/selenium-hub       "/opt/bin/entry_point"   4 weeks ago         Up 3 days           0.0.0.0:32770->4444/tcp   modest_khorana
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,集线器和ubuntu容器都已激活端口,并从运行docker容器的ubuntu主机转发.我在Google Compute Engine中打开了这些端口.

在docker容器中,我正在使用Google App Engine sdk在本地运行我们的项目.使用后docker exec -it drunk_kalam bash …

ubuntu selenium docker

8
推荐指数
1
解决办法
773
查看次数

如何在Docker中使用容器的内部ip地址作为环境变量

我正在尝试将docker容器的IP地址作为容器中的环境变量.这是我尝试过的:

启动容器时

docker run -dPi -e ip=`hostname -i` myDockerImage
Run Code Online (Sandbox Code Playgroud)

当容器已经启动时

docker exec -it myDockerImage bash -c "export ip=`hostname -i`"
Run Code Online (Sandbox Code Playgroud)

这两种方法的问题在于它使用运行命令的主机的ip地址,而不是运行它的docker容器.

那么我在docker容器中创建了一个如下所示的脚本:

#!/bin/bash
export ip=`hostname -i`
echo $ip
Run Code Online (Sandbox Code Playgroud)

然后运行它

docker exec -it myDockerImage bash -c ". ipVariableScript.sh"
Run Code Online (Sandbox Code Playgroud)

当我添加my_cmd(在我的情况下是bash脚本的末尾)时,它可以在一个bash会话中工作.我以后不能在我需要它的文件中使用它.我需要将它设置为环境变量,而不是作为一个会话的变量.

所以我已经用'.'来源了它.但是当我在容器中时,它仍然不会回响.如果我$ip在脚本中放入一个echo ,它会给我正确的IP地址.但只能在正在设置的脚本中使用.

linux docker

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

标签 统计

docker ×2

linux ×1

selenium ×1

ubuntu ×1