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容器全部断开网络。
参考
docker之容器访问和网络连接(三)的更多相关文章
- Linux初学之vmware Workstation 网络连接三种模式
简介: VM(VMware Workstation简称VM,后面都将用VM代替阐述)是一款功能强大的虚拟化软件.VM支持在 单一的桌面上同时运行多款不同的操作系统,能够模拟完整的网络环境,支持pxe功 ...
- Docker 创建容器以及管理命令(三)
1. 创建 Apache 容器 [root@centos7 ~]# docker run -d -p : httpd // -d: 放入后台运行 // -p: 指定端口映射关系(第一个为本地端口.第二 ...
- VMware网络连接三种模式bridged、host-only、NAT
1. bridged(桥接模式) 在桥接模式下,虚拟机和主机处于同一网段,这样虚拟机才能和主机进行通信 使用桥接模式,就像连接在同一个Hub上的两台电脑 //简单配置ip # ifconfig eth ...
- Docker容器的网络连接
Docker容器的网络连接 Docker容器的网络连接 我们用ifconfig命令来查看网络设备 我们可以看到上面有个叫docker0的网络设备,docker守护进程就是通过docker0为docke ...
- [转]VMware Workstation网络连接的三种模式
经常要使用VMWare Workstation来在本地测试不同的操作系统,以前也搞不清楚网络连接三种模式,最近看了几篇文章才算明白.现总结如下: 1. VMware Workstation的虚拟网络组 ...
- Docker基本命令与使用 —— Docker容器的网络连接(四)
一.Docker容器的网络基础 通过ifconfig查看docker0的网络设备,docker守护进程就是通过docker0为docker的容器提供网络连接的各种服务. docker0是Linux虚拟 ...
- Docker 容器的网络连接 & 容器互联
1. Docker 容器网络基础架构 Docker0 ifconfig查看到的 docker0 是linux的虚拟网桥(OSI数据链路层) docker0 地址划分: 172.17.42.1 255. ...
- Docker容器的网络连接:
yw1989@ubuntu:~$ ifconfig docker0 Link encap:Ethernet HWaddr 02:42:97:61:42:9f inet addr:172.17.0.1 ...
- [Linux网络、命名空间、veth设备对、docker的host模式、container模式、none模式、brideg模式、网桥的增删查,容器与网桥的连接断开]
[Linux网络.命名空间.veth设备对.docker的host模式.container模式.none模式.brideg模式.网桥的增删查,容器与网桥的连接断开] 网络名称空间 为了支持网络协议栈的 ...
随机推荐
- Linux内核设计与实现 第一章 第二章
第一章 Linux内核简介 Unix特点: (1) Unix很简洁,仅仅提供几个几百个系统调用并且有一个非常明确的设计目的 (2) 在Unix中,所有的东西都被当作文件对待,通过一套相 ...
- 《Linux内核设计与实现》Chapter 5 读书笔记
<Linux内核设计与实现>Chapter 5 读书笔记 在现代操作系统中,内核提供了用户进程与内核进行交互的一组接口,这些接口的作用是: 使应用程序受限地访问硬件设备 提供创建新进程与已 ...
- "Gun N' Rose" Team学习心得
如果我比别人看得更远,只因为我站在巨人的肩膀上. ——牛顿 高级软件工程课程终于开课了!第 ...
- JAVA面对对象(一)——封装
1.封装思想:将对象的属性和行为封装起来的载体是类,类通常对客户隐藏其实现的细节 2.封装就是将属性私有化(private),并提供公共的方法(public)访问私有属性 3.通过封装,实现对属性数据 ...
- springboot+mybatis结合使用
springboot+mybatis结合使用与普通的ssm配置差别不大,但是少了很多的配置,如spring.xml web.xml, 给程序员减轻了很多负担 首先创建带有mybatis框架的项目 ...
- Python 访问soap服务
使用库:subs soap服务信息: 网址:http://mobile.bjmemc.com.cn/AirService/Service.asmx 功能:使用其中的GetData服务获取北京各个地点的 ...
- TCP/IP之大明内阁 转
原创: 刘欣 码农翻身 2016-11-02 本文是<TCP/IP之大明王朝邮差>的前传, 讲一讲大明内阁的各位大人是怎么设计TCP/IP网络的.大明天启年间, 明熹宗朱由校醉心于木工 ...
- 初征——NOIP2018游记
前言 从最初接触oi到今年noip到来,也已经将近有一年了.从对于程序一窍不懂到现在开始学习算法,只是短短的不到一年的时间罢了.这次noip,不仅仅是我oi生涯的第一次noip,更是相当于是对我这一年 ...
- 2017-12 CDQZ集训(已完结)
从联赛活了下来(虽然分数倒一……),接下来要去CDQZ集训啦…… DAY -2 2017-12-16 被老师安排负责一部分同学的住宿以及安排…… 抓紧时间继续学习,LCT真好玩啊真好玩…… 晚上放假了 ...
- nginx “403 Forbidden” 错误的原因及解决办法
nginx 的 403 Forbidden errors 表示你在请求一个资源文件但是nginx不允许你查看. 403 Forbidden 只是一个HTTP状态码,像404,200一样不是技术上的错误 ...