5、Docker 容器连接

Docker 容器连接

前面我们实现了通过网络端口来访问运行在docker容器内的服务。下面我们来实现通过端口连接到一个docker容器

网络端口映射

我们创建了一个 python 应用的容器。

[root@docker ~]# docker run -d -P training/webapp python app.py
f9a0558823043e2a188b94265dcc245e1a256c26cc20d8cb5f2ee4817e006e92
[root@docker ~]# 

另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1

我们使用 -P 参数创建一个容器,使用 docker ps 来看到端口 5000 绑定主机端口 32771 。

[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
f9a055882304        training/webapp     "python app.py"     44 seconds ago      Up 43 seconds       0.0.0.0:32771->5000/tcp   confident_banach
74c14274a8f0        training/webapp     "python app.py"     About an hour ago   Up About an hour    0.0.0.0:5000->5000/tcp    nostalgic_jones
[root@docker ~]# 

我们也可以使用 -p 标识来指定容器端口绑定到主机端口。

两种方式的区别是:

  • -P :是容器内部端口随机映射到主机的高端口。

  • -p : 是容器内部端口绑定到指定的主机端口。

    [root@docker ~]# docker run -d -p 5001:5000 training/webapp python app.py
    f80f4f4490beda799c71068a2d7fc196c85e054a588f15428fc35bb805bea725
    [root@docker ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
    f80f4f4490be        training/webapp     "python app.py"     14 seconds ago      Up 14 seconds       0.0.0.0:5001->5000/tcp    cocky_cocks
    f9a055882304        training/webapp     "python app.py"     2 minutes ago       Up 2 minutes        0.0.0.0:32771->5000/tcp   confident_banach
    74c14274a8f0        training/webapp     "python app.py"     About an hour ago   Up About an hour    0.0.0.0:5000->5000/tcp    nostalgic_jones
    [root@docker ~]# 
    

另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1

[root@docker ~]# docker run -d -p 127.0.0.1:5002:5000 training/webapp python app.py
53808c9cb8668c382bbc74eb2924a5838616f82595ae6bd6d1c41a70b52860e5
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                      NAMES
53808c9cb866        training/webapp     "python app.py"     4 seconds ago       Up 2 seconds        127.0.0.1:5002->5000/tcp   distracted_shirley
f80f4f4490be        training/webapp     "python app.py"     2 minutes ago       Up 2 minutes        0.0.0.0:5001->5000/tcp     cocky_cocks
f9a055882304        training/webapp     "python app.py"     5 minutes ago       Up 5 minutes        0.0.0.0:32771->5000/tcp    confident_banach
74c14274a8f0        training/webapp     "python app.py"     About an hour ago   Up About an hour    0.0.0.0:5000->5000/tcp     nostalgic_jones
[root@docker ~]# 

这样我们就可以通过访问 127.0.0.1:5002 来访问容器的 5000 端口。

上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp

[root@docker ~]# docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
df5a6eb999d9509c3874f59846e056513bafed3ad3a0eee4895b837ff2b56f5e
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                                NAMES
df5a6eb999d9        training/webapp     "python app.py"     2 seconds ago        Up 1 second         5000/tcp, 127.0.0.1:5000->5000/udp   amazing_wright
53808c9cb866        training/webapp     "python app.py"     About a minute ago   Up About a minute   127.0.0.1:5002->5000/tcp             distracted_shirley
f80f4f4490be        training/webapp     "python app.py"     4 minutes ago        Up 4 minutes        0.0.0.0:5001->5000/tcp               cocky_cocks
f9a055882304        training/webapp     "python app.py"     6 minutes ago        Up 6 minutes        0.0.0.0:32771->5000/tcp              confident_banach
74c14274a8f0        training/webapp     "python app.py"     About an hour ago    Up About an hour    0.0.0.0:5000->5000/tcp               nostalgic_jones
[root@docker ~]# 

docker port 命令可以让我们快捷地查看端口的绑定情况。

[root@docker ~]# docker port cocky_cocks 5000
0.0.0.0:5001
[root@docker ~]# 

Docker容器连接

端口映射并不是唯一把 docker 连接到另一个容器的方法。

docker有一个连接系统允许将多个容器连接在一起,共享连接信息。

docker连接会创建一个父子关系,其中父容器可以看到子容器的信息。

容器命名

当我们创建一个容器的时候,docker会自动对它进行命名。另外,我们也可以使用–name标识来命名容器,例如:

我们可以使用 docker ps -l 命令来查看容器名称。

[root@docker ~]# docker run -d -P --name runoob training/webapp python app.py
fdf22bdbe0892d91b92edc0018aad18dc95a5cfd9bbebc2e983f7774a04a3e7c
[root@docker ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
fdf22bdbe089        training/webapp     "python app.py"     10 seconds ago      Up 8 seconds        0.0.0.0:32772->5000/tcp   runoob
[root@docker ~]# 

猜你喜欢

转载自blog.csdn.net/weixin_42112635/article/details/84679532
今日推荐