zoukankan      html  css  js  c++  java
  • docker之容器访问和网络连接(三)

    前言

    当一台服务器上部署了多个应用容器,它们直接可能需要相互通信,比如web应用容器需要访问mysql数据库容器。

    主机访问容器

    通过映射端口的形式我们可以在外部访问容器内的服务

    # 将主机的127.0.0.1:5001映射到容器的5000端口
    docker run -p 127.0.0.1:5001:5000 training/webapp python app.py
    # 将主机的80映射到容器的80端口
    docker run -p 80:80 training/webapp python app.py
    # 容器内部端口随机映射到主机的高端口,通过ps查看
    docker run -P training/webapp python app.py
    
    • 修改端口映射

    如果我们创建一个容器后想要修改创建的配置怎么办呢?比如修改mongodb的端口映射:

    docker stop mongodb # 停止容器
    systemctl stop docker # 停止docker
    
    vi /var/lib/docker/containers/容器id/hostconfig.json # 所有的配置在hostconfig.json文件中
    找到端口映射进行修改
    
    systemctl start docker # 重启docker
    docker start mongodb # 重启容器
    

    进入容器访问

    # 进入容器打开一个交互终端
    docker exec -i -t (容器的ID/names) /bin/bash
    

    容器之间相互访问

    容器内部ip访问

    docker安装后,会自动创建一个默认的bridge网络docker0。对应的地址为172.17.0.X,容器之间可以通过这个内部ip进行相互访问,但是如果想要连接另一个容器就必须先知道对方的ip地址,这一点有点麻烦。

    ifconfig
    # 查看内部ip,如果没有ifconfig命令,先安装
    apt update
    apt install net-tools
    

    link连接

    • docker提供了一个link参数供多个容器之间相互联系。
    # 使用nginx镜像创建一个容器,名为test1,连接到test2容器,指定test2容器的别名为web
    docker run --name test1 --link test2:web nginx
    
    # 登录test1
    env | grep web # 查看web的情况,发现存在相关信息
    cat /etc/hosts # 可以看到web别名对应的ip,但是这个ip是静态的,也就是不支持test2容器重启,因为重启可能造成ip发生变化
    # 登录test2发现没有test1的信息,说明test2不能通过别名访问test1
    

    创建自己的内部网络

    由于使用默认的内部网络link是静态ip,不支持重启,可以创建自己的内部网络指定别名。

    # 创建一个网络,可以通过ifconfig查看
    docker network create tms
    # 容器启动指定网络
    docker run --network tms --network-alias test1 nginx
    # network指定网络,network-alias指定容器的别名
    
    # 断开容器的网络连接
    docker network disconnet tms 容器ID/name
    # 删除网络
    docker network rm tms
    
    # 测试
    ping test1 # 可以直接使用别名代替ip
    

    如果要删除网络必须所有的docker容器全部断开网络。

    参考

  • 相关阅读:
    java 笔记(6) static关键字
    java 笔记(5)接口,static
    java 笔记(4)抽象类与抽象方法
    java 笔记(3)多态 容易理解
    看穿CSS的定位技术
    揭开浮动布局的秘密(简略版)
    不可不知的CSS盒子模型(简略版)
    初学Java web 项目
    Eclipse快捷键
    JDBC连接数据库
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/10403257.html
Copyright © 2011-2022 走看看