linux - Bash 脚本执行 Docker 容器操作并提取容器 IP 地址

标签 linux bash docker

我正在尝试编写一个 Linux bash 脚本,该脚本创建并运行 docker 容器,该容器运行一个简单的 python Web 服务器、提取容器 IP 地址并通过浏览器向服务器发出 HTTP 请求。我的脚本中似乎存在一些错误,我需要帮助来编辑它。我是 bash 脚本新手。我使用Ubuntu 13.10

我的脚本:

#!/bin/bash
for i in {1..2}
do
   echo "Creating and Running Container $i "
   sudo docker run -name $i PythonServer
   IP=sudo docker inspect $i | grep IPAddress | cut -d '"' -f 4
   echo "Ip Address is:"
   echo "${IP}"
   xdg-open 'http://$IP:7111/execute'
done

编辑:代码的第 6 行似乎不像 echo "${IP}" 那样工作。给出空白输出。我想分配sudo docker inspect $i | grep IPAddress | cut -d '"' -f 4的结果至IP变量,即我想捕获创建的容器的 IP 地址并在 xdg-open 'http://$IP:7111/execute' 中使用它动态发出 HTTP 请求。但我没有得到应该写入此 bash 脚本行的正确格式: IP=sudo docker inspect $i | grep IPAddress | cut -d '"' -f 4

我可以使用 IP 的正确格式是什么?值 xdg-open 'http://$IP:7111/execute'

上述脚本目前在执行时显示此消息:

vishal@bl-lin-01:~/docker/PythonServer/new$ ./BashScript.sh
Creating and Running Container 1 
WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4]
^Cserving at port 7111
Traceback (most recent call last):
File "/scripts/InitScript.py", line 40, in <module>
httpd.serve_forever()
File "/usr/lib/python2.7/SocketServer.py", line 225, in serve_forever
r, w, e = select.select([self], [], [], poll_interval)
KeyboardInterrupt
unknown option: 1

valid options are:
-license
-copyright
-crlf
-end
-link
-path_name
-tab
-ascii
-apple_macro
-assert_macro
-minmax
-unnamed
default is all checks on; otherwise options specify desired checks
Ip Address is:

谢谢。

最佳答案

这个编辑过的 Bash 脚本现在工作正常..

#!/bin/bash
for i in {1..2}
do
   echo "Creating and Running Container $i "
   sudo docker run -d -name $i PythonServer
   IP=$(sudo docker inspect $i | grep IPAddress | cut -d '"' -f 4)
   echo "Ip Address is:$IP"
   xdg-open "http://$IP:7111/execute"
done

我在守护进程模式下运行容器并使用 Command Substitution bash 的功能是将命令的输出分配给变量 IP

关于linux - Bash 脚本执行 Docker 容器操作并提取容器 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393075/

相关文章:

ruby-on-rails - 问题 : Could not load OpenSSL

java - 自动设置 Java 选项 Xmx

ssl - 带有 Nginx 的 Docker - Https 不工作

mysql - 如何在内部连接mysql kubernetes容器与nodejs k8s容器?

linux - CakePHP 中 OpenFlashChart2 的 FlashChartHelper : blank charts

python - crontab 没有运行作业,昨天还可以

bash - 在 bash 提示符中搜索字符

linux - Bash 脚本运行带参数的程序不起作用

mysql - 了解 Docker 以提供 web、mysql 或类似服务

linux - 在 Linux 中,如何找到包含最多子目录或文件的目录?