在 docker 容器外执行外部服务
Execute an external service outside a docker container
我在 linux 机器上有一个 glassfish 服务器,还有一个 运行 jenkins 的 docker 容器。我想执行一些 glassfish 命令,但是从 docker 看来 glassfish 没有启动。我收到的消息是:
Remote server does not listen for requests on [localhost:4848]. Is the server up?
Glassfish 运行在 8080 端口的 linux 和 4848 端口上的管理中。我对 jenkins 的 运行 docker 方式是:
docker run --rm -d --name jenkins \
--expose 4848 \
-v /opt/glassfish3:/opt/glassfish3 \
-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \
-v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone \
-v $GF/libs:$JH/libs \
-p 8081:8080 -p 50000:50000 jenkins/jenkins:lts
虽然 glassfish 启动了,但 jenkins 没有看到它。
有什么建议吗?
谢谢
docker
默认创建一个 bridged network 因此 Glassfish 和 Jenkins 在不同的网段。
从您收到的消息来看,该命令似乎试图连接到 localhost
上的 Glassfish。您需要的是连接到 linux 机器(我假设是主机)的 IP
地址。
运行 在主机上使用 ip
命令(或 ifconfig
)获取 IP 地址:
ip addr show docker0
(docker0
是docker
创建的网桥设备)
默认情况下,Glassfish 侦听 0.0.0.0(所有网络接口),因此它也应该侦听 docker0。然后 运行 asadmin
加上 --host
选项(域管理服务器所在的机器名是 运行ning)。例如:
asadmin --host <ip of linux machine> list-applications
也可以使用默认网络接口代替 docker0
。
或者,您可以 运行 host mode 中的 jenkins 容器。在主机模式下,它与主机共享网络接口,因此它能够连接到 localhost
。
希望对您有所帮助
我在 linux 机器上有一个 glassfish 服务器,还有一个 运行 jenkins 的 docker 容器。我想执行一些 glassfish 命令,但是从 docker 看来 glassfish 没有启动。我收到的消息是:
Remote server does not listen for requests on [localhost:4848]. Is the server up?
Glassfish 运行在 8080 端口的 linux 和 4848 端口上的管理中。我对 jenkins 的 运行 docker 方式是:
docker run --rm -d --name jenkins \
--expose 4848 \
-v /opt/glassfish3:/opt/glassfish3 \
-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \
-v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone \
-v $GF/libs:$JH/libs \
-p 8081:8080 -p 50000:50000 jenkins/jenkins:lts
虽然 glassfish 启动了,但 jenkins 没有看到它。
有什么建议吗?
谢谢
docker
默认创建一个 bridged network 因此 Glassfish 和 Jenkins 在不同的网段。
从您收到的消息来看,该命令似乎试图连接到 localhost
上的 Glassfish。您需要的是连接到 linux 机器(我假设是主机)的 IP
地址。
运行 在主机上使用 ip
命令(或 ifconfig
)获取 IP 地址:
ip addr show docker0
(docker0
是docker
创建的网桥设备)
默认情况下,Glassfish 侦听 0.0.0.0(所有网络接口),因此它也应该侦听 docker0。然后 运行 asadmin
加上 --host
选项(域管理服务器所在的机器名是 运行ning)。例如:
asadmin --host <ip of linux machine> list-applications
也可以使用默认网络接口代替 docker0
。
或者,您可以 运行 host mode 中的 jenkins 容器。在主机模式下,它与主机共享网络接口,因此它能够连接到 localhost
。
希望对您有所帮助