GVKun编程网logo

如何将docker-machine端口转发到OSX上的主机端口?(docker 端口转发)

5

在本文中,我们将为您详细介绍如何将docker-machine端口转发到OSX上的主机端口?的相关知识,并且为您解答关于docker端口转发的疑问,此外,我们还会提供一些关于Apache端口转发、dj

在本文中,我们将为您详细介绍如何将docker-machine端口转发到OSX上的主机端口?的相关知识,并且为您解答关于docker 端口转发的疑问,此外,我们还会提供一些关于Apache端口转发、django – Docker端口转发、Docker Engine API - 映射到主机上的随机端口、Docker-OS X将localhost 22端口转发到容器2022端口的有用信息。

本文目录一览:

如何将docker-machine端口转发到OSX上的主机端口?(docker 端口转发)

如何将docker-machine端口转发到OSX上的主机端口?(docker 端口转发)

我在公司中提供一个私有Docker容器,并希望我的同事能够在我们的内部网络中访问,问题是我的来宾操作系统是OSX,因此我只能使用192.168.99.100:3000访问我的应用程序来自docker机器的默认IP。

如何将docker-machine 3000端口转发到主机80端口?

答案1

小编典典

目前,Docker Machine是在您计算机中VirtualBox下运行的虚拟机,因此要公开您的应用程序端口,您需要将虚拟机端口映射到您的主机端口。

为此,有两个选择,但是在确保停止运行Docker Machine之前,请执行以下操作:

docker-machine stop default     # see PS below if docker machine isn''t default

选项1-使用VirtualBox界面

  • 打开VirtualBox管理器
  • 选择您的Docker Machine VirtualBox映像(例如:默认)
  • 打开设置->网络->高级->端口转发
  • 添加您的应用名称,所需的主机端口(例如:80)和您的访客端口(例如:3000)

选项2-使用VirtualBox命令行

只需使用您自己的参数运行以下命令:

VBoxManage modifyvm "dev" --natpf1 "myapp,tcp,,80,,3000"

最后考虑

现在,您可以启动运行的Docker Machine:

docker-machine start defaulteval $(docker-machine env default)

然后,只需启动应用程序Docker容器并运行http:// localhost /对其进行测试。

PS:您的Docker机器名称可能不是 默认 名称,在这种情况下,请相应更改名称。

Apache端口转发

Apache端口转发

我有一个http:// localhost:5984 /我需要在http:// localhost:80 /沙发/访问apache couchDB活动。 我需要为此设置一个反向proxi。 需要有关configuration设置的帮助。

PS:什么是了解apache的最佳资源?

如何让Docker在公司防火墙后的Windows系统上运行?

HTTP连接池在进程之间共享

mod_rewrite不作为内部代理工作

根据Nginx中的子域请求路由不同的代理

Nginx和反向代理的http_sub_module / sub_filter不起作用

设置代理

要设置Apache2的反向代理,首先需要启用Apache代理模块和虚拟主机。 要启用代理模块(mod_proxy),请编辑Apache配置文件(Apache / conf / httpd.conf)并取消注释以下行:

Loadmodulee proxy_module modules/mod_proxy.so Loadmodulee proxy_http_module modules/mod_proxy_http.so Loadmodulee unique_id_module modules/mod_unique_id.so

然后您需要启用VirtualHosts。 为此,只需从相同的配置文件中取消注释以下行:

Include conf/extra/httpd-vhosts.conf

最后,你需要编辑Apache / conf / extra / httpd-vhosts.conf并在其中写入代理指令。 从你提供的信息看,他们应该是这样的:

<VirtualHost *:80> serverAdmin ****** DocumentRoot "******" serverName ***** ProxyRequests Off ProxyVia Off ProxyPass /couch/ http://127.0.0.1:5984/ ProxyPassReverse /couch/ http://127.0.0.1:5984/ </VirtualHost>

(+一些mLog指令和其他几个)。

– > Apache重启 – >获利。

学习Apache

您应该查看Apache官方网站或Apachetutor.org上的官方文档,尽管Google始终是每个人的朋友。

总结

以上是小编为你收集整理的Apache端口转发全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

django – Docker端口转发

django – Docker端口转发

我试图在docker容器中运行我的django应用程序.我正在使用uWsgi来为django应用程序提供服务,并且还有一个芹菜工作者在后台运行.这些过程由supervisord启动.

我遇到的问题是我无法在端口上看到我希望看到它的应用程序.我暴露端口8080并在8080上运行uwsgi进程,但无法在浏览器中找到我的应用程序在IP地址$(boot2docker ip):8080.我刚收到谷歌Chrome浏览器’这个网页不可用’. (我使用的是Mac,所以我需要获取boot2docker的ip地址).容器显然正在运行,并报告我的uwsgi和芹菜进程也都成功运行.

当我运行docker exec CONTAINER_ID curl localhost:8080时,我得到一个响应

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    21    0    21    0     0   3150      0 --:--:-- --:--:-- --:--:--  3500

…所以看起来容器正在接受端口8080上的连接.

当我运行docker exec CONTAINER_ID netstat -lpn | grep:8080时,我得到tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 11 / uwsgi

当我运行docker检查CONTAINER_ID时,我得到以下内容:

[{
    "AppArmorProfile": "","Args": [
        "-c","/home/docker/code/supervisor-app.conf"
    ],"Config": {
        "AttachStderr": true,"AttachStdin": false,"AttachStdout": true,"Cmd": [
            "supervisord","-c","/home/docker/code/supervisor-app.conf"
        ],"cpuShares": 0,"cpuset": "","Domainname": "","Entrypoint": null,"Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","env=staging"
        ],"ExposedPorts": {
            "8080/tcp": {}
        },"Hostname": "21443d8a16df","Image": "vitru","Memory": 0,"MemorySwap": 0,"Networkdisabled": false,"OnBuild": null,"OpenStdin": false,"PortSpecs": null,"StdinOnce": false,"Tty": false,"User": "","Volumes": null,"WorkingDir": ""
    },"Created": "2014-12-27T01:00:22.390065668Z","Driver": "aufs","ExecDriver": "native-0.2","HostConfig": {
        "Binds": null,"CapAdd": null,"CapDrop": null,"ContainerIDFile": "","Devices": [],"Dns": null,"DnsSearch": null,"ExtraHosts": null,"Links": null,"LxcConf": [],"NetworkMode": "bridge","PortBindings": {},"Privileged": false,"PublishAllPorts": false,"RestartPolicy": {
            "MaximumRetryCount": 0,"Name": ""
        },"SecurityOpt": null,"VolumesFrom": null
    },"HostnamePath": "/mnt/sda1/var/lib/docker/containers/21443d8a16df8e2911ae66d5d31341728d76ae080e068a5bb1dd48863febb607/hostname","HostsPath": "/mnt/sda1/var/lib/docker/containers/21443d8a16df8e2911ae66d5d31341728d76ae080e068a5bb1dd48863febb607/hosts","Id": "21443d8a16df8e2911ae66d5d31341728d76ae080e068a5bb1dd48863febb607","Image": "de52fbada520519793e348b60b608f7db514eef7fd436df4542710184c1ecb7f","MountLabel": "","Name": "/suspicIoUs_fermat","NetworkSettings": {
        "Bridge": "docker0","Gateway": "172.17.42.1","IPAddress": "172.17.0.87","IPPrefixLen": 16,"MacAddress": "02:42:ac:11:00:57","PortMapping": null,"Ports": {
            "8080/tcp": null
        }
    },"Path": "supervisord","ProcessLabel": "","ResolvConfPath": "/mnt/sda1/var/lib/docker/containers/21443d8a16df8e2911ae66d5d31341728d76ae080e068a5bb1dd48863febb607/resolv.conf","State": {
        "ExitCode": 0,"FinishedAt": "0001-01-01T00:00:00Z","Paused": false,"Pid": 16230,"Restarting": false,"Running": true,"StartedAt": "2014-12-27T01:00:22.661588847Z"
    },"Volumes": {},"VolumesRW": {}
}
]

作为一个不太熟悉Docker的人,我不太清楚这一切意味着什么.也许有一个线索,为什么我无法连接到我的服务器?

这是我的Dockerfile,所以你可以看看我是否在做那些明显错误的事情.

FROM ubuntu:14.04

# Get most recent apt-get
RUN apt-get -y update

# Install python and other tools
RUN apt-get install -y tar git curl nano wget dialog net-tools build-essential
RUN apt-get install -y python3 python3-dev python-distribute
RUN apt-get install -y Nginx supervisor
# Get python3 version of pip
RUN apt-get -y install python3-setuptools
RUN easy_install3 pip

RUN pip install uwsgi

RUN apt-get install -y python-software-properties

# Install GEOS
RUN apt-get -y install binutils libproj-dev gdal-bin

# Install node.js
RUN apt-get install -y nodejs npm

# Install postgresql dependencies 
RUN apt-get update && \
    apt-get install -y postgresql libpq-dev && \
    rm -rf /var/lib/apt/lists

# Install pylibmc dependencies
RUN apt-get update
RUN apt-get install -y libmemcached-dev zlib1g-dev libssl-dev

ADD . /home/docker/code

# Setup config files
RUN ln -s /home/docker/code/supervisor-app.conf /etc/supervisor/conf.d/

# Create virtualenv and run pip install

RUN pip install -r /home/docker/code/vitru/requirements.txt

# Create directory for logs
RUN mkdir -p /var/logs

# Set environment as staging
ENV env staging

EXPOSE 8080

# The supervisor conf file starts uwsgi on port 8080 and starts a celeryd worker
CMD ["supervisord","/home/docker/code/supervisor-app.conf"]
最佳答案
我相信你遇到的问题是EXPOSE只使容器之间的端口可用…而不是主机系统.请参阅此处的文档:
https://docs.docker.com/reference/builder/#expose

您需要通过-p标志为docker run命令“发布”端口:
https://docs.docker.com/reference/run/#expose-incoming-ports

如果你使用它,在fig.yml文件中的expose和ports指令之间有一个类似的区别.

Docker Engine API - 映射到主机上的随机端口

Docker Engine API - 映射到主机上的随机端口

如何解决Docker Engine API - 映射到主机上的随机端口?

我正在尝试替代 docker run -p 8080,它在主机上分配一个随机端口,API 的任何地方都没有记录。我已经看到 here 应该使用 "PortBindings": { "8080/tcp": [{ "HostPort": "" }] },但在该命令之后 Docker Desktop 说:port: 0。如果这很重要,我正在使用 dockerode,但它无论如何都会连接到 Docker API。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Docker-OS X将localhost 22端口转发到容器2022端口

Docker-OS X将localhost 22端口转发到容器2022端口

我在Mac OSX上使用Docker。

我有一个带有打开的ssh守护程序的容器,正在侦听port 22

虚拟机设置为将所有2022计算机端口流量转发到此容器22端口。

我想将我的本地主机设置为将所有2022流量转发到计算机2022端口。

我的机器在 192.168.99.100

我已经使用Apache虚拟主机配置和Proxy将本地端口8080上的所有HTTP通信转发到了计算机。

对ssh做相同的正确方法是什么?

我认为它涉及到此处提到的SSH隧道传输,但是我不明白如何设置本地主机始终将ssh连接从转发localhost:2022192.168.99.100:2022

ps我知道docker容器不应该安装SSH,但是我需要它来进行测试。

答案1

小编典典

现在我想在我的本地主机:2022和机器:2022之间连接

然后,您需要boot2docker VM(由docker-machine创建)将端口2022端口转发到MacOS主机。请以“ docker nginx容器未从外部接收请求,连接被拒绝
”为例。

VBoxManage controlvm "default" natpf1 "tcp-port2022,tcp,,2022,,2022"VBoxManage controlvm "default" natpf1 "udp-port2022,udp,,2022,,2022"

注意:这与ssh无关,它仅与以下事实有关:您将VM用作Linux主机,并且已将某些内容映射到其端口2022。
只有在实际的MacOS本地主机上,该端口才可见您将其转发。

今天的关于如何将docker-machine端口转发到OSX上的主机端口?docker 端口转发的分享已经结束,谢谢您的关注,如果想了解更多关于Apache端口转发、django – Docker端口转发、Docker Engine API - 映射到主机上的随机端口、Docker-OS X将localhost 22端口转发到容器2022端口的相关知识,请在本站进行查询。

本文标签: