Docker端口映射语法

7

我刚接触docker,对于我遇到的以下命令选项具体是做什么有点困惑。

 --name : appname is the name of the image?
 -t : Run in terminal?
 -d : run as daemon?
 -p : for somebody outside the container to talk to port 9090 they have to connect on port 9000?
 Same for port 15501 but it is a udp port?    
 appname2: name assigned to running image?

 docker run -t --name=appname -p 9090:9000 -p 15501:15501/udp -d appname2
3个回答

8
 docker run -t --name=appname -p 9090:9000 -p 15501:15501/udp -d appname2

问:--name:appname是镜像的名称吗?

不是,这是您正在创建的容器的名称(可选)。

--name string           Assign a name to the container

问:-t:在终端中运行?

-t, --tty             Allocate a pseudo-TTY

问:-d:作为守护进程运行?

有点像。这意味着您希望将容器与终端分离运行。

-d, --detach          Run container in background and print container ID

Q: -p : 对于容器外的人来说,如何与端口9090进行通信?他们必须连接在9000端口上吗?

9090:9000 的意思是:主机上的 9090 端口绑定到容器上的 9000 端口。要与容器端口进行通信,外部人员应该使用 9090 端口。

-p, --publish list       Publish a container's port(s) to the host (default [])

问:15501端口同样也是一个UDP端口吗?

是的。


问:appname2是运行镜像分配的名称吗?

那就是你正在运行的镜像。容器是基于它的。


额外奖励!你可以在这里找到所有这些信息:docker help run

额外奖励2!自己试试:

docker run -d -it --name my-container alpine sh
docker inspect my-container
# See all this funny output. It's all about the container that you've created

1

来自https://docs.docker.com/engine/reference/run/

-d 标志表示分离模式。当您运行 Docker 容器时,可以在前台或后台运行容器。如何运行容器取决于您的使用情况。例如,如果您运行带有某些功能的操作系统容器,则可能希望在前台运行容器以使用此功能。但是,如果您运行 DB 服务器,则可能希望在后台运行它。

-p 标志用于将所有公开端口发布到主机接口。例如,如果您在容器内运行具有某些端口的 DB 服务器,并希望从远程通信到服务器,则可能希望将容器内的端口映射到主机系统上的单个或多个端口。这样,当您连接到主机上的端口时,您就连接到其中运行的 Docker 服务器(希望这很清楚)。映射格式如下:

ip:hostPort:contain`enter code here`erPort | ip::containerPort | hostPort:containerPort | containerPort
--name 标志会为正在运行的容器分配一个友好的名称。如果不使用,它将生成一个名称。例如,如果您在分离模式下执行了一个容器,然后想使用 attach 命令进入容器,则可以使用它。 -t 标志为容器分配文本控制台。 appname2 是 docker 镜像的名称。

1
对于像我这样的其他人,想要快速记住Docker的实际端口映射语法,它是这样的:
docker run -p$PORT_ON_HOST:$PORT_IN_CONTAINER my_container

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接