Docker容器化技术(互联机制实现便捷互访)

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

1.自定义容器命名

连接系统依据容器的名称来执行。因此,首先需要自定义一个好记的容器命名。虽然当 创建容器的时候,系统默认会分配一个名字,但自定义命名容器有两个好处:

  • 自定义的命名,比较好记,比如一个Web应用容器我们可以给它起名叫web, 一 目 了然;
  • 当要连接其他容器时候(即便重启),也可以使用容器名而不用改变,比如连接web 容器到db容器;
[root@localhost ~]# docker run -d -P training/webapp python app.py
e862877619b6097ed416172e0fb6a077619bc11967ba90e9225cd9a7394974f6
[root@localhost ~]# docker ps -l
CONTAINER ID   IMAGE             COMMAND           CREATED         STATUS         PORTS                     NAMES
e862877619b6   training/webapp   "python app.py"   8 seconds ago   Up 7 seconds   0.0.0.0:32770->5000/tcp   cranky_einstein

在执行docker run的时候如果添加--rm标记,则容器在终止后会 立刻删除。

注意,- -rm 和-d参数不能同时使用。 

2. 容器互联

使用--link参数可以让容器之间安全地进行交互。 

先创建一个新的数据库容器:

[root@localhost ~]# docker run -d --name db training/postgres
4b59ae3d369c8b97494d44cde13ea94596fc2231d4ee993ecaf76473ccc9cc4a

 删除之前创建的web容器:

[root@localhost ~]# docker rm -f web
web

然后创建一个新的web容器,并将它连接到db容器:

[root@localhost ~]# docker run -d -P --name  web --link db:db training/webapp python app.py
39bacf2c70d0ee82162825c344481cf0f2fa539553323854bd76898114e540aa
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS                     NAMES
39bacf2c70d0   training/webapp     "python app.py"          6 seconds ago   Up 5 seconds   0.0.0.0:32772->5000/tcp   web
4b59ae3d369c   training/postgres   "su postgres -c '/us…"   2 minutes ago   Up 2 minutes   5432/tcp                  db
ea8804cd9847   training/webapp     "python app.py"          4 minutes ago   Up 4 minutes   0.0.0.0:5000->5000/tcp    condescending_panini
e862877619b6   training/webapp     "python app.py"          7 minutes ago   Up 7 minutes   0.0.0.0:32770->5000/tcp   cranky_einstein

 可以看到自定义命名的容器: db 和 web, db 容器的 names 列有 db 也有 web/db。 这 表示 web 容器链接到 db 容器, web 容器将被允许访问 db 容器的信息。

使用 env 命令来查看 web 容器的环境变量:

[root@localhost ~]# docker run --rm --name web2 --link db:db training/webapp env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=67177e778bc4
DB_PORT=tcp://172.17.0.5:5432
DB_PORT_5432_TCP=tcp://172.17.0.5:5432
DB_PORT_5432_TCP_ADDR=172.17.0.5
DB_PORT_5432_TCP_PORT=5432
DB_PORT_5432_TCP_PROTO=tcp
DB_NAME=/web2/db
DB_ENV_PG_VERSION=9.3
HOME=/root

其中 DB—开头的环境变量是供 web 容器连接 db 容器使用, 前缀采用大写的连接别名。

查看是父容器 web 的 hosts文件 :

[root@localhost ~]# docker run -it --rm --link db:db training/webapp /bin/bash
root@8c694bcccae1:/opt/webapp# 
root@8c694bcccae1:/opt/webapp# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.5	db 4b59ae3d369c
172.17.0.6	8c694bcccae1

在 web 容器中安装 ping 命令来测试跟 db 容器的连通:

root@8c694bcccae1:/opt/webapp# apt-get install -yqq inetutils-ping
(Reading database ... 18233 files and directories currently installed.)
Removing ubuntu-minimal (1.325) ...
Removing iputils-ping (3:20121221-4ubuntu1.1) ...
Selecting previously unselected package inetutils-ping.
(Reading database ... 18221 files and directories currently installed.)
Preparing to unpack .../inetutils-ping_2%3a1.9.2-1_amd64.deb ...
Unpacking inetutils-ping (2:1.9.2-1) ...
Setting up inetutils-ping (2:1.9.2-1) ...
root@8c694bcccae1:/opt/webapp# ping db
PING db (172.17.0.5): 56 data bytes
92 bytes from 172.17.0.1: Packet Filtered
92 bytes from 172.17.0.1: Packet Filtered
92 bytes from 172.17.0.1: Packet Filtered

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataFunSummit 2023因果推断在线峰会:解码数据与因果,引领智能决策新篇章(附大会核心PPT下载)

在数据驱动的时代,因果推断作为数据科学领域的重要分支,正日益受到业界的广泛关注。DataFunSummit 2023年因果推断在线峰会,汇聚了国内外顶尖的因果推断领域专家、学者及业界精英,共同探讨因果推断的最新进展、应用与挑战。本文将…

[MYSQL数据库]--表内操作(CURD)

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、表的 Cre…

Mybatis的XML配置文件

Xml文件中写SQL 为什么要学? 学习了Mybatis中XML配置文件的开发方式了,大家可能会存在一个疑问:到底是使用注解方式开发还是使用XML方式开发? 官方说明:https://mybatis.net.cn/getting-started.html 结论:使用Myba…

【数据集】2023自动驾驶开源数据集-学习笔记

文章目录 1. 自动驾驶有哪些公开数据集2. 预测相关的数据集有哪些 1. 自动驾驶有哪些公开数据集 waymo open dataset 适应任务: 域适应,2D追踪,2D检测,3D追踪,3D检测,实时2D检测,实时3D检测,交互…

Python3 @get_time 装饰器

Python get_time 装饰器 get_time 装饰器可以用于计算函数的执行时间。 示例: import timedef get_time(func):def wrapper(*args, **kwargs):start_time time.time()func(*args, **kwargs)end_time time.time()print(f"函数 {func.__name__} 执行时间&am…

【数据挖掘】实验2:R入门2

实验2&#xff1a;R入门2 一&#xff1a;实验目的与要求 1&#xff1a;熟悉和掌握R数据类型。 2&#xff1a;熟悉和掌握R语言的数据读写。 二&#xff1a;实验内容 1&#xff1a;R数据类型 【基本赋值】 Eg.1代码&#xff1a; x <- 8 x Eg.2代码&#xff1a; a city …

php7.3.4连接sqlserver(windows平台)

前言 有个项目需要手上laravel连接客户的sqlserver数据库读取数据&#xff0c;故在本地开发的lnmp环境中&#xff0c;php需要增加扩展 过程 从微软官网下载sqlsrv扩展,注意注意php版本&#xff0c;下载地址 解压的文件会有nts和ts两个版本&#xff0c;本地打开phpinfo查看 将…

基于SSM框架的理发店管理系统的设计与实现【附项目源码】分享

基于SSM框架的理发店管理系统的设计与实现&#xff1a; 源码地址&#xff1a;https://download.csdn.net/download/qq_41810183/88842785 理发店管理系统设计与实现需求文档 一、引言 随着信息技术的发展和普及&#xff0c;各行业都在寻求信息化管理以提升服务效率与用户体验…

基于Springboot影城管理系统设计与实现

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…

惬意上手Redis

Redis介绍 Redis&#xff08;全称为REmote Dictionary Server&#xff09;是一个开源的、内存中的数据存储结构&#xff0c;主要用作应用程序缓存或快速相应数据库。 REmote Dictionary Server: 有道翻译Redis是“远程字典服务”&#xff0c;远程不过是远程访问&#xff0c;而…

计算机网络面经八股-解释一下HTTP长连接和短连接?

在HTTP/1.0中&#xff0c;默认使用的是短连接。也就是说&#xff0c;浏览器和服务器每进行一次HTTP操作&#xff0c;就建立一次连接&#xff0c;但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源&#xff0c;如JavaScript文件、图…

OpenCV和Mediapipe实现摸嘴或鼻检测

目录 引言 1.过程简介 2. 代码结构 2.1 导入库 2.2 初始化模型 2.3 读取视频流或摄像头 2.4 初始化FPS计算 2.5 主循环 2.6 转换BGR图像为RGB图像 2.7 运行姿势检测模型和手部检测模型 2.8 绘制姿势关键点及连接线 2.9 检测手部关键点 2.10 判断手部与鼻子、嘴的相对…

使用Flask快速搭建轻量级Web应用【第127篇—Flask】

使用Flask快速搭建轻量级Web应用 在Web开发领域&#xff0c;选择适合项目需求的框架至关重要。Flask&#xff0c;一个轻量级的Python Web框架&#xff0c;以其简洁、灵活和易扩展的特性而备受开发者青睐。本文将介绍如何使用Flask迅速搭建一个轻量级的Web应用&#xff0c;并通过…

数学建模——蒙特卡洛法

目录 1.介绍2.可以做的题型3.实战3.1求pi的值3.2求定积分x^2 的值 参加了大大小小很多场比赛了&#xff0c;但是都是混子&#xff0c;但还是打算记录一下吧&#xff0c;系统认真过一遍。后续功力深厚&#xff0c;会拓展写的文章&#xff0c;目前是干货&#xff0c;一些背景啥的…

C#多线程(5)——异步方法async与await

在上一章节中&#xff0c;为大家介绍了C#多线程&#xff08;4&#xff09;——任务并行库TPL&#xff0c;TPL是从.NetFramwork4.0后引入的基于异步操作的一组API&#xff0c;核心关注于任务【 T a s k 和 T a s k < T > \textcolor{red}{Task 和 Task<T>} Task和Ta…

轴向磁通电机(轴向电机)属于高效节能型电机 本土企业已具备高性能产品生产实力

轴向磁通电机&#xff08;轴向电机&#xff09;属于高效节能型电机 本土企业已具备高性能产品生产实力 按照磁通路径方向不同&#xff0c;电机可分为径向磁通电机以及轴向磁通电机两种类型。轴向磁通电机又称轴向电机&#xff0c;指电机旋转轴与磁通方向平行的磁通电机。与径向…

Ai-M61-32SU+字库+LCD

Ai-M61-32SU 有4M flash&#xff0c;可以下载一个200多K的GB2312_80字库 一、将gb2312_80.bin(字库文件)烧录到Ai-M61-32SU中 1、将gb2312_80.bin放到工程的根目录 2、修改flash_prog_cfg.ini文件&#xff0c;增加了partition和media部分 [cfg] # 0: no erase, 1:programmed …

js视频上传的方法

一、视频上传于图片上传类似他们的上传方法一样。路径不同标签不同&#xff1b; 二、直接上效果 三、直接上代码 // // 上传图片 let urls "https://wwz.jingyi.icu/"; let a $("form img") // console.log(a);function fl() {let read document.getE…

探索制氮机在农产品保鲜中的应用方式

在现代生活中&#xff0c;农产品保鲜成为老生常谈的话题&#xff0c;水果数次厂商总是在为如何使水果蔬菜能够保存时间长一点而发愁&#xff0c;而制氮机的出现则解决了这一难题&#xff0c;为农产品保鲜技术带来了革命性的变革。本期恒业通小编和您一起了解制氮机在水果,蔬菜保…

Pytorch基础(21)-- torch.repeat_interleave()方法

分享一下自己目前在维护的Github项目&#xff0c;由于本人博士阶段接触了一个全新的研究方向-----使用机器学习、强化学习、深度学习等方法解决组合优化问题&#xff0c;维护这个项目的目的&#xff1a; &#xff08;1&#xff09;记录自己阅读过的paper&#xff0c;同时分享一…