前言

当一台服务器上部署了多个应用容器,它们直接可能需要相互通信,比如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容器全部断开网络。

参考

docker之容器访问和网络连接(三)的更多相关文章

  1. Linux初学之vmware Workstation 网络连接三种模式

    简介: VM(VMware Workstation简称VM,后面都将用VM代替阐述)是一款功能强大的虚拟化软件.VM支持在 单一的桌面上同时运行多款不同的操作系统,能够模拟完整的网络环境,支持pxe功 ...

  2. Docker 创建容器以及管理命令(三)

    1. 创建 Apache 容器 [root@centos7 ~]# docker run -d -p : httpd // -d: 放入后台运行 // -p: 指定端口映射关系(第一个为本地端口.第二 ...

  3. VMware网络连接三种模式bridged、host-only、NAT

    1. bridged(桥接模式) 在桥接模式下,虚拟机和主机处于同一网段,这样虚拟机才能和主机进行通信 使用桥接模式,就像连接在同一个Hub上的两台电脑 //简单配置ip # ifconfig eth ...

  4. Docker容器的网络连接

    Docker容器的网络连接 Docker容器的网络连接 我们用ifconfig命令来查看网络设备 我们可以看到上面有个叫docker0的网络设备,docker守护进程就是通过docker0为docke ...

  5. [转]VMware Workstation网络连接的三种模式

    经常要使用VMWare Workstation来在本地测试不同的操作系统,以前也搞不清楚网络连接三种模式,最近看了几篇文章才算明白.现总结如下: 1. VMware Workstation的虚拟网络组 ...

  6. Docker基本命令与使用 —— Docker容器的网络连接(四)

    一.Docker容器的网络基础 通过ifconfig查看docker0的网络设备,docker守护进程就是通过docker0为docker的容器提供网络连接的各种服务. docker0是Linux虚拟 ...

  7. Docker 容器的网络连接 & 容器互联

    1. Docker 容器网络基础架构 Docker0 ifconfig查看到的 docker0 是linux的虚拟网桥(OSI数据链路层) docker0 地址划分: 172.17.42.1 255. ...

  8. Docker容器的网络连接:

    yw1989@ubuntu:~$ ifconfig docker0 Link encap:Ethernet HWaddr 02:42:97:61:42:9f inet addr:172.17.0.1 ...

  9. [Linux网络、命名空间、veth设备对、docker的host模式、container模式、none模式、brideg模式、网桥的增删查,容器与网桥的连接断开]

    [Linux网络.命名空间.veth设备对.docker的host模式.container模式.none模式.brideg模式.网桥的增删查,容器与网桥的连接断开] 网络名称空间 为了支持网络协议栈的 ...

随机推荐

  1. ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(三)

    ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(三) 本教程适用于想要在远程服务器上配置docker图形界面用于深度学习的用户. (三)配置远程桌面连接访问dock ...

  2. Alpha冲刺测试

    项目Alpha冲刺(团队) Alpha冲刺测试 姓名 学号 博客链接 何守成 031602408 http://www.cnblogs.com/heshoucheng/ 黄锦峰 031602411 h ...

  3. [转帖] k8s kubectl 命令行技巧

    https://jimmysong.io/posts/kubectl-cheatsheet/ Kubectl Cheatsheet kubectl命令技巧大全Posted on November 3, ...

  4. Linux学习之CentOS(二)----远程登录管理工具SecureCRT的使用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  5. Java对象与Map间相互转换

    将Java对象转为一个Map,以及将map转为对应Java对象,代码如下: public class BeanMapUtil { private static ConcurrentHashMap< ...

  6. 1643【例 3】Fibonacci 前 n 项和

    1643:[例 3]Fibonacci 前 n 项和 时间限制: 1000 ms         内存限制: 524288 KB sol:这题应该挺水的吧,就像个板子一样 1 0 01 1 0   * ...

  7. 洛谷SP16580 QTREE7 - Query on a tree VII(LCT,multiset)

    洛谷题目传送门 思路分析 维护子树最值还是第一次写QwQ 因为子树的最值会变化,所以不能简单地把最值记下来,还要维护一个平衡树,把每个子树的最大值扔进去,来资磁插入.删除和查询最值. 然后我就懒得手写 ...

  8. linux man命令

    http://note.youdao.com/noteshare?id=98878258c6453f92117355deba8b8439

  9. 使用 Nginx 和 Gunicorn 部署 Django 博客(转)

    原文:http://zmrenwu.com/post/20/  http://www.siar.me/post/9/ 针对很多朋友反映按照教程的做法始终只能看到 Nginx 欢迎页面的问题,Tian ...

  10. Kafka 0.8 sever:源代码High level分析

    本文主要介绍了Kafka High level的代码架构和主要的类. 这张图是0.8版本的架构 Boker 架构 1 network layer Kafka使用NIO自己实现了网络层的代码, 而不是采 ...