DevOps
docker
docker
  • 基础知识
    • 概述
      • 核心概念
      • Docker 引擎
      • 基本架构
      • 联合文件系统
      • 网络虚拟化
    • 安装
      • 安装Docker Engine
      • 以非 root 用户使用 Docker
      • 配置 Docker 服务
    • 3. Docker镜像
      • 3.1 获取镜像(pull)
      • 3.2 查看镜像信息
        • images
        • tag
        • inspect
        • history
      • 3.3 搜寻镜像(search)
      • 3.4 删除镜像(rmi)
      • 3.5 清理镜像(prune)
      • 3.6 创建镜像
        • 基于已有容器创建
        • 基于本地模板导入
        • 基于Dockerfile创建
      • 3.7 导出镜像(save)
      • 3.8 导入镜像(load)
      • 3.9 上传镜像(push)
    • 4. Docker容器
      • 4.1 新建容器(create)
      • 4.2 启动容器(start)
      • 4.3 新建并启动容器(run)
      • 4.4 查看容器输出(logs)
      • 4.5 暂停容器(pause)
      • 4.6 恢复容器(unpause)
      • 4.7 停止止容器(stop)
      • 4.8 清除容器(prune)
      • 4.9 重启容器(restart)
      • 4.10 进入容器
      • 4.11 删除容器(rm)
      • 4.12 导出容器(export)
      • 4.13 导入容器(import)
      • 4.14 查看容器详情(inspect)
      • 4.15 查看容器内进程(top)
      • 4.16 查看统计信息(stats)
      • 4.17 复制文件(cp)
      • 4.18 查看变更(diff)
      • 4.19 更新配置(update)
    • 5. Docker仓库
      • 5.1 Docker Hub
      • 5.2 本地私有仓库
        • 使用HTTPS协议
        • 添加用户认证
        • 使用push时遇到的一些坑
    • 6. Docker数据管理
      • 6.1 数据卷
      • 6.2 数据卷容器
      • 6.3 利用数据卷容器来迁移数据
    • 7. 端口映射与容器互联
      • 7.1 端口映射
      • 7.2 容器互联
    • 8. Dockerfile
      • 8.1 基本结构
      • 8.2 指令说明
        • ARG
        • FROM
        • LABEL
        • EXPOSE
        • ENV
        • ENTRYPOINT
        • VOLUME
        • USER
        • WORKDIR
        • ONBUILD
        • STOPSIGNAL
        • HEALTHCHECK
        • SHELL
        • RUN
        • CMD
        • ADD
        • COPY
      • 8.3 创建镜像
      • 8.4 最佳实践
    • 9. Compose
      • 9.1 安装
      • 9.2 Compose文件
        • 9.2.1 services
        • 9.2.2 networks
        • 9.2.3 多文件Compose
          • Extend
          • Merge
          • Include
        • 9.2.4 锚点和别名
      • 9.3 Compose命令
      • 9.4 实例
  • 中间件安装
    • 安装tomcat
    • 安装redis
      • 单机
      • Cluster集群
    • 安装mysql
    • 安装ssh服务
      • 基于commit命令创建
      • 使用Dockerfile创建
    • 安装Apache
    • 安装ngnix
  • 操作系统镜像
    • BusyBox
    • ☑️Alpine
    • Debian/Ubuntu
    • CentOS/Fedora
  • Tips
    • docker 引擎开启远程访问
    • dockerfile-maven-plugin
    • IDEA 连接远程 docker
Powered by GitBook
On this page
  • 1. 建立互联
  • 2. 验证
  • 检查环境变量
  • 检查/etc/hosts文件内容
  • 使用PING命令验证容器的连通性

Was this helpful?

Edit on GitHub
  1. 基础知识
  2. 7. 端口映射与容器互联

7.2 容器互联

容器的互联(linking)是一种让多个容器中的应用进行快速交互的方式。它会在源和接收容器之间创建连接关系,接收容器可以通过容器名快速访问到源容器,而不用指定具体的IP地址。

使用--link参数可以让容器之间安全地进行交互,--link参数的格式为--link name:alias,其中name是要链接的容器的名称,alias是别名。

1. 建立互联

$ docker run -d --name service tomcat:latest
ee9d17f71015fe87ee9e0c0202f3e00344839c4102df4b8e24001a36b760e050

$ docker run -d --name app --link service:service tomcat:latest
34c796d55c8923af377640f0d4cfe9abb69598fc6aba0965c26baf2e9f668ab3

执行完上述命令后,app容器会链接到service容器。此时,app容器将被允许访问service容器的信息。

2. 验证

Docker通过两种方式为容器公开连接信息:

  • 更新环境变量;

  • 更新/etc/hosts文件。

检查环境变量

$ docker exec app env | grep SERVICE
SERVICE_PORT=tcp://172.17.0.2:8080
SERVICE_PORT_8080_TCP=tcp://172.17.0.2:8080
SERVICE_PORT_8080_TCP_ADDR=172.17.0.2
SERVICE_PORT_8080_TCP_PORT=8080
SERVICE_PORT_8080_TCP_PROTO=tcp
SERVICE_NAME=/app/service
SERVICE_ENV_JAVA_HOME=/usr/local/openjdk-11
SERVICE_ENV_LANG=C.UTF-8
SERVICE_ENV_JAVA_VERSION=11.0.13
SERVICE_ENV_CATALINA_HOME=/usr/local/tomcat
SERVICE_ENV_TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib
SERVICE_ENV_LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib
SERVICE_ENV_GPG_KEYS=A9C5DF4D22E99998D9875A5110C01C5A2F6059E7
SERVICE_ENV_TOMCAT_MAJOR=10
SERVICE_ENV_TOMCAT_VERSION=10.0.14
SERVICE_ENV_TOMCAT_SHA512=c2d2ad5ed17f7284e3aac5415774a8ef35434f14dbd9a87bc7230d8bfdbe9aa1258b97a59fa5c4030e4c973e4d93d29d20e40b6254347dbb66fae269ff4a61a5

使用env命令来查看app容器的环境变量,其中SERVICE_开头的环境变量是供app容器连接service容器使用,前缀采用大写的连接别名。

检查/etc/hosts文件内容

除了环境变量,Docker还添加host信息到父容器的/etc/hosts文件中:

$ docker exec app grep service /etc/hosts
172.17.0.2	service ee9d17f71015

使用PING命令验证容器的连通性

首先,在app容器中安装ping命令工具:

$ docker exec app apt-get update
$ docker exec app apt-get install -y inetutils-ping

然后,在app容器中执行ping命令:

$ docker exec app ping -c 3 service
PING service (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: icmp_seq=0 ttl=64 time=0.110 ms
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.099 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.159 ms
--- service ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.099/0.123/0.159/0.026 ms
Previous7.1 端口映射Next8. Dockerfile

Last updated 1 year ago

Was this helpful?