相关疑难解决方法(0)

Docker中"expose"和"publish"有什么区别?

我正在尝试使用Dockerfiles,我想我理解大部分逻辑.但是,我没有看到在这种情况下"暴露"和"发布"端口之间的区别.

我首先看到的所有教程都包含EXPOSEDockerfile中的命令:

...
EXPOSE 8080
...
Run Code Online (Sandbox Code Playgroud)

然后他们从这个Dockerfile构建一个图像:

$ docker build -t an_image - < Dockerfile
Run Code Online (Sandbox Code Playgroud)

然后在运行映像时发布与上面相同的端口:

$ docker run -d -p 8080 an_image
Run Code Online (Sandbox Code Playgroud)

或使用发布所有端口

$ docker run -d -P an_image
Run Code Online (Sandbox Code Playgroud)

暴露Dockerfile中的端口有什么意义,如果它仍然会被发布?是否需要首先公开一个端口,而不是稍后发布它?实际上,我想在创建映像时指定我将在Dockerfile中使用的所有端口,然后再不打扰它们,只需运行它们:

$ docker run -d an_image
Run Code Online (Sandbox Code Playgroud)

这可能吗?

docker

453
推荐指数
5
解决办法
17万
查看次数

如何从主机访问Docker容器的Web服务器

我在boot2docker 1.3.1下运行.

我有一个运行Web服务器的Docker容器uwsgi --http :8080.

如果我附加到容器,我可以使用浏览网站,lynx http://127.0.0.1:8080所以我知道服务器正在运行.

我运行我的容器:

$ docker run -itP --expose 8080 uwsgi_app:0.2
Run Code Online (Sandbox Code Playgroud)

它有以下细节:

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
5248ad86596d        uwsgi_app:0.2     "bash"              11 minutes ago      Up 11 minutes       0.0.0.0:49159->8080/tcp   cocky_hypatia
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' 5248ad86596d
172.17.0.107
Run Code Online (Sandbox Code Playgroud)

我以为我可以通过访问来自我的主机访问该网站http://172.17.0.107:49159.

这不起作用.我只是在Chrome中看到"连接......",无处可去.

我究竟做错了什么?

docker boot2docker

54
推荐指数
4
解决办法
7万
查看次数

标签 统计

docker ×2

boot2docker ×1