【问题标题】:How to ensure that docker is used only for my task如何确保 docker 仅用于我的任务
【发布时间】:2017-09-04 03:33:01
【问题描述】:

我有一个使用量角器编写的自动化程序。

我想通过 jenkins 运行它。

我的shell命令:

docker pull selenium/hub:latest
docker pull selenium/node-chrome:latest
docker rm -f selenium-hub && echo "container selenium-hub removed" || echo "container selenium-hub does not exist"
docker run -d -p 4444:4444 --name selenium-hub selenium/hub:latest
docker run -d --link selenium-hub:hub selenium/node-chrome:latest
protractor conf.js

一切都很完美。

我的问题是:我是否可以绝对确定只有我的代码在 docker 上运行,而所有其他组件(比如我在同一台服务器上运行 angular 网站)不会使用 docker,即在使用 docker 时我应该采取哪些预防措施如果我的服务器有 100 多个不同的应用程序正在运行,我希望这些应用程序不应该有任何副作用。就像如果某个应用程序在 nodejs v3 上运行并且我的 docker 有 nodejs v5,那么使用 nodejs v3 的应用程序继续仅在 nodejs v3 上运行。

【问题讨论】:

    标签: docker protractor docker-compose dockerfile docker-machine


    【解决方案1】:

    我假设您担心其他一些应用正在使用 selenium?这在技术上是可行的,因为当您启动 selenium hub 映像时,参数 -p 4444:4444 会将端口 4444 绑定到您的 localhost。

    为了确保一切都是自包含的,您需要使用参数-p 4444 并在 docker 容器中运行量角器测试。

    像这样的Dockerfile 将用于您的测试(未经测试)

    FROM node:alpine
    
    COPY your/source/directory /opt/
    
    WORKDIR /opt/
    
    RUN npm install -g protractor
    
    CMD protractor conf.js
    

    注意:您的量角器配置必须引用 selenium hub 容器名称(即 selenium-hub)不是 localhost

    【讨论】:

    • 因此,如果其他应用程序没有与端口 4444 链接,那么它们将永远不会使用 selenium。对吗?
    • docker 容器将位于它们自己的网络中。您可以访问它们的唯一方法是将该网络绑定到您的本地网络。这就是-p 4444:4444 所做的。您的量角器配置可能会在其配置中引用 localhost:4444 以联系 selenium。如果您很高兴您的其他应用程序都不会访问 localhost:4444,那么您不必担心 :)
    猜你喜欢
    • 2021-07-31
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    相关资源
    最近更新 更多