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


网络端口映射

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

runoob@runoob:~$ docker run -d -P training/webapp python app.py

fce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d

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

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

runoob@runoob:~$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES

fce072cc88ce        training/webapp     "python app.py"     4 minutes ago       Up 4 minutes        0.0.0.0:32768->5000/tcp   grave_hopper

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

两种方式的区别是:

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

runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py

33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0

runoob@runoob:~$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                     NAMES

33e4523d30aa        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp    berserk_bartik

fce072cc88ce        training/webapp     "python app.py"     8 minutes ago        Up 8 minutes        0.0.0.0:32768->5000/tcp   grave_hopper

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

runoob@runoob:~$ docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

95c6ceef88ca3e71eaf303c2833fd6701d8d1b2572b5613b5a932dfdfe8a857c

runoob@runoob:~$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                NAMES

95c6ceef88ca        training/webapp     "python app.py"     6 seconds ago       Up 6 seconds        5000/tcp, 127.0.0.1:5001->5000/tcp   adoring_stonebraker

33e4523d30aa        training/webapp     "python app.py"     3 minutes ago       Up 3 minutes        0.0.0.0:5000->5000/tcp               berserk_bartik

fce072cc88ce        training/webapp     "python app.py"     10 minutes ago      Up 10 minutes       0.0.0.0:32768->5000/tcp              grave_hopper

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

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

runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a

runoob@runoob:~$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                NAMES

6779686f06f6        training/webapp     "python app.py"     4 seconds ago       Up 2 seconds        5000/tcp, 127.0.0.1:5000->5000/udp   drunk_visvesvaraya

95c6ceef88ca        training/webapp     "python app.py"     2 minutes ago       Up 2 minutes        5000/tcp, 127.0.0.1:5001->5000/tcp   adoring_stonebraker

33e4523d30aa        training/webapp     "python app.py"     5 minutes ago       Up 5 minutes        0.0.0.0:5000->5000/tcp               berserk_bartik

fce072cc88ce        training/webapp     "python app.py"     12 minutes ago      Up 12 minutes       0.0.0.0:32768->5000/tcp              grave_hopper

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

runoob@runoob:~$ docker port adoring_stonebraker 5000

127.0.0.1:5001


Docker容器连接

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

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

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


容器命名

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

runoob@runoob:~$  docker run -d -P --name runoob training/webapp python app.py

43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441

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

runoob@runoob:~$ docker ps -l

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES

43780a6eabaa        training/webapp     "python app.py"     3 minutes ago       Up 3 minutes        0.0.0.0:32769->5000/tcp   runoob

docker容器连接的更多相关文章

  1. Docker 容器连接

    前面我们实现了通过网络端口类访问运行在 diocker 容器内的服务.下面我们来实现通过端口连接到了一个 dokcer 容器. 网络端口映射 我们创建一个python应用的容器. runoob@run ...

  2. Docker入门 - 005 Docker 容器连接

    Docker 容器连接 前面我们实现了通过网络端口来访问运行在docker容器内的服务.下面我们来实现通过端口连接到一个docker容器 网络端口映射 我们创建了一个 python 应用的容器. do ...

  3. [第十篇]——Docker 容器连接之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker 容器连接 前面我们实现了通过网络端口来访问运行在 docker 容器内的服务. 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过  -P 或  -p 参数来指定端口映射. ...

  4. Docker学习(四)——Docker容器连接

    Docker容器连接     容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射. 下面我们来实现通过端口连接到一个docker容器. 1.网络端口映射    ...

  5. Docker:虚拟机挂起后,再启动docker容器连接失败

    问题描述 当我们使用VMware15 Pro 创建虚拟机并运行Linux搭建的Docker时,挂起虚拟机后再次运行发现访问Docker容器失败. 解决方式  我们正常的挂起其实是:挂起客户机,博主尝试 ...

  6. docker 容器连接 host的sql server失败

    报错内容::“A network-related or instance-specific error occurred while establishing a connection to SQL ...

  7. Docker容器的跨主机连接

    Docker容器的跨主机连接 Docker容器的跨主机连接 使用网桥实现跨主机容器连接 网络拓扑 网络连接使用的是Bridge 操作 修改/etc/network/interfaces文件,分配静态I ...

  8. docker笔记(2)-----容器连接

    2019-01-12  13:57:36 Dockerfile基本结构: 基础镜像内容:FROM指明base image 维护者信息: 镜像操作指令:RUN指令,每运行一条RUN指令,镜像添加新的一层 ...

  9. docker学习端口连接docker容器---第四章节

    一.Docker容器连接 前面的第二章节,我们事先通过网络端口来访问运行在docker容器内的服务,我们也可以通过端口连接到一个docker容器 我们可以指定容器绑定的网络地址,如绑定127.0.0. ...

随机推荐

  1. 3.建造模式(Builder)

    注:图片来源于 https://www.cnblogs.com/-saligia-/p/10216752.html 建造模式UML图解析: 代码: Director.h // // Created b ...

  2. Mybatis全部标签与解释说明

    一.定义SQL语句 (1)select 标签的使用 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user ...

  3. 解决cxf+springmvc发布的webservice,缺少types,portType和message标签的问题

    用cxf+spring发布了webservice,发现生成的wsdl的types,message和portType都以import的方式导入的.. 原因:命名空间问题 我想要生成的wsdl在同个文件中 ...

  4. UTF-8 中文编码范围

    主流的匹配字符有两种 [\u4e00-\u9fa5]和[\u2E80-\u9FFF],后者范围更广,包括了日韩地区的汉字 import re pattern = re.compile("[\ ...

  5. Availability-group DDL operations are permitted only when you are using the master database. Run the USE MASTER command, and retry your availability-group DDL command.

    Question: SQL SERVER  alwayson在向AG中添加DB最后一步在副本中将此DB添加入AG时报错: Availability-group DDL operations are p ...

  6. [S32K]GPIO使用

    问题: 1.为何对Port口下的某个引脚单独配置Direction会影响到该Port下的其他PIN脚,导致之前配置失效?当前没办法,只能把工程中所有用到的PIN脚Direction一次配置完毕 详细介 ...

  7. Vue移动组件库Mint UI的安装与使用

    一.什么是 Mint UI 1.Mint UI 包含丰富的 CSS 和 JS 组件,可以提升移动端开发效率 2.Mint UI 按需加载组件 3.Mint UI 轻量化 二.Mint UI 的安装 1 ...

  8. 【技术分享】linux各种一句话反弹shell总结——攻击者指定服务端,受害者主机(无公网IP)主动连接攻击者的服务端程序(CC server),开启一个shell交互,就叫反弹shell。

    反弹shell背景: 想要搞清楚这个问题,首先要搞清楚什么是反弹,为什么要反弹.假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规 ...

  9. P1600 天天爱跑步[桶+LCA+树上差分]

    题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵 ...

  10. java(Hello World) 常量 变量和注意事项

    一.java的入门程序 java语言的简单介绍 关于java语言的特点:(1) 简单性和c++相比,java没有头文件.指针.运算符重载等,java语言相当于是一个比较纯净版的c++.(2) 面对对象 ...