阿里云部署Docker(7)----将容器连接起来

阿里云部署docker项目流程 这是自己的项目项目原来的项目是一个手机远程管理交换机的项目,项目中包含嵌入开发,python+flash对接的flutter(android+ios),mysql,redis,vue3+ts的后台以及阿里云的物联网相关的东西,现在将项目精简下主要是docker部署的一套,修改项目目录下docker-compose.dev.yml文件,在nginx下添加vue项目使用的端口。此时完成了vue后台项目的添加部署,记得开放服务器的相应端口。安装特定版本的Docker引擎。卸载以前安装的docker。 阅读详情

路遥知马力,日久见人心。恩。该坚持的还是要坚持。

今天看到一个迅雷的师弟去了阿里,祝福他,哎,虽然老是被人家捧着叫大牛,我说不定通过不了人家的面试呢,哎,心有羞愧。 

本文为本人原创,转载请表明来源:http://blog.youkuaiyun.com/minimicall

我们在阿里云上部署Docker服务系列教程已经到了第7节,

需要回顾的同学可以翻看我的博客。

今天,我们学习一下怎么将docker里面的容器连接起来。例如我是一个web服务,我需要用到mysql服务,如果它们属于不同的容器内,如果连接。这就是我们这节课要解决的问题。

连接的第一步是为我们的容器命名

容器命名

容器命名是在run的选项里面--name 具体如下:

root@iZ28ikebrg6Z:~# docker run -d -P --name web training/webapp python app.py
ca9d0b6245e0451e911ac03ef3d2b7748120a55d29c2d8b3cc9d9cd6e4ad0148
root@iZ28ikebrg6Z:~# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 11224 11210  0  80   0 -  5601 wait   pts/1    00:00:00 bash
0 R     0 11907 11224  0  80   0 -  2121 -      pts/1    00:00:00 ps
root@iZ28ikebrg6Z:~# docker ps -l
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                     NAMES
ca9d0b6245e0        training/webapp:latest   "python app.py"     15 seconds ago      Up 14 seconds       0.0.0.0:49153->5000/tcp   web                 
root@iZ28ikebrg6Z:~# 
我们可以详细的了解这个容器的底层信息:

root@iZ28ikebrg6Z:~# docker inspect --help

Usage: docker inspect CONTAINER|IMAGE [CONTAINER|IMAGE...]

Return low-level information on a container or image

  -f, --format=""    Format the output using the given go template.
root@iZ28ikebrg6Z:~# docker inspect -f "{{.Name}}" ca9
/web
root@iZ28ikebrg6Z:~# 
需要注意的是,容器的名字需要是唯一的。不能够有冲突。如果你想容器停止后就放弃这个名字,那么你可以在运行的时候加入选项 --rm


容器连接

容器连接之后就可以相互交流数据,例如包含web的容器,它可以连接到一个包含数据库的容器,然后由数据容器给它提供数据存储。

连接是--link name:alias  其中name是我们要连接的容器,比如一个数据库容器mysql,而alias是这个连接的名称。

我们先执行命令,然后解释:

root@iZ28ikebrg6Z:~# docker stop web
web
root@iZ28ikebrg6Z:~# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
sameersbn/redmine      latest              f0bec095f291        6 hours ago         614.6 MB
sameersbn/gitlab       latest              bf5c375d9057        3 days ago          635.1 MB
sameersbn/postgresql   latest              24a6064fa4cd        11 days ago         142.1 MB
training/webapp        latest              31fa814ba25a        4 months ago        278.8 MB
sameersbn/redmine      2.4.2               b95b8046d47c        8 months ago        1.327 GB
root@iZ28ikebrg6Z:~# docker run -d --name db sameersbn/postgresql
a9dbca9857fddbe366ce76909943e856eecc12df27886830e43fe5c91a53abc7
root@iZ28ikebrg6Z:~# docker ps
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS               NAMES
a9dbca9857fd        sameersbn/postgresql:latest   "/start"            5 seconds ago       Up 3 seconds        5432/tcp            db                  
root@iZ28ikebrg6Z:~# docker rm -f web
web
root@iZ28ikebrg6Z:~# docker run -d -P --name web --link db:db training/webapp python app.py
ff990b53706d0a1277c1ba37b274c397ba906ba8ea28e9d9b57e78f84ef12d93
root@iZ28ikebrg6Z:~# docker ps --no-trunc | awk '{print $NF}'
NAMES
web
db,web/db
root@iZ28ikebrg6Z:~# 

我们连接的是sameersbn/postgresql 这也是个数据库,是我不小心下载下来的,没有mysql。拿着用吧,会出错再说。

好,连是连接起来了,可是如何交互数据呢?因为到现在位置我们只是看到多了个--link 选项而已,假如我要使用数据库,我总得增删改查啊。

docker提供两种方式,一种是环境变量,一种是改/etc/hosts

环境变量

当一个连接产生之后,docker首先会为每个连接产生一个环境变量<alias>_NAME,例如刚才的连接 --link db:db,则有

db_NAME=/web/db
还有,一些源容器暴露的端口。这部分我直接贴官网的说明,或许更能够讲清楚,大家自行理解。


<name>_PORT_<port>_<protocol> will contain a URL reference to the port. Where <name> is the alias name specified in the --link parameter (e.g. webdb), <port> is the port number being exposed, and <protocol> is either TCP or UDP. The format of the URL will be: <protocol>://<container_ip_address>:<port> (e.g. tcp://172.17.0.82:8080). This URL will then be split into the following 3 environment variables for convinience:
<name>_PORT_<port>_<protocol>_ADDR will contain just the IP address from the URL (e.g. WEBDB_PORT_8080_TCP_ADDR=172.17.0.82).
<name>_PORT_<port>_<protocol>_PORT will contain just the port number from the URL (e.g. WEBDB_PORT_8080_TCP_PORT=8080).
<name>_PORT_<port>_<protocol>_PROTO will contain just the protocol from the URL (e.g. WEBDB_PORT_8080_TCP_PROTO=tcp).

设置环境变量的方法为:

 $ sudo docker run --rm --name web2 --link db:db training/webapp env
    . . .
    DB_NAME=/web2/db
    DB_PORT=tcp://172.17.0.5:5432
    DB_PORT_5432_TCP=tcp://172.17.0.5:5432
    DB_PORT_5432_TCP_PROTO=tcp
    DB_PORT_5432_TCP_PORT=5432
    DB_PORT_5432_TCP_ADDR=172.17.0.5

还有另一种方法是更改目标容器中的hosts文件,在这个文件中加入源容器

/etc/hosts


具体如下:

$ sudo docker run -t -i --rm --link db:db training/webapp /bin/bash
root@aed84ee21bde:/opt/webapp# cat /etc/hosts
172.17.0.7  aed84ee21bde
. . .
172.17.0.5  db
可以实验一下是否能够联通

root@aed84ee21bde:/opt/webapp# apt-get install -yqq inetutils-ping
root@aed84ee21bde:/opt/webapp# ping db
PING db (172.17.0.5): 48 data bytes
56 bytes from 172.17.0.5: icmp_seq=0 ttl=64 time=0.267 ms
56 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.250 ms
56 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.256 ms
就算源容器重启,它也会自动更新

$ sudo docker restart db
root@aed84ee21bde:/opt/webapp# cat /etc/hosts
172.17.0.7  aed84ee21bde
. . .
172.17.0.9  db


好。容器的连接就到这里。到实战的时候记得有这么回事就可以。




Docker容器部署 同样的宿主机下,能够建立容器的数量要比虚拟机多,但是虚拟机的安全性要比容器稍好,而docker容器与宿主机共享内核、文件系统等资源,更有可能对其他容器、宿主机产生影响。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口.此时容器不再拥有隔离的、独立的网络栈。Docker是一个开源的应用容器引擎,基于go语言开发遵循apache2.0协议开源,Docker是在Linux上运行的开源工具,给应用创建一个轻量级的,可移植的容器。 阅读详情

相关推荐

CentOS安装Docker,及Docker部署常见容器

[目标位置]/seata/application.ymlseata:# 配置中心-nacosconfig:nacos:server-addr: [nacos地址]:8848namespace:# 注册中心-nacosregistry:nacos:server-addr: [nacos地址]:8848namespace:cluster: default # TC 集群名称,下文 Seata 客户端中配置事务分组名和集群名映射使用。

weixin_71639702的博客 2805

阿里云docker服务器 无法通过公网ip访问容器

情况: 能ping通服务器公网ip 不能通过浏览器访问(一直加载不出来) 检查步骤: 查看阿里云控制台防火墙和安全组设置是否开启对应端口 查看服务器中的firewalld服务是否开启 查看firewall的端口是否放行 在上述步骤依然不行的情况下(也就是我当时遇到的情况) 通过ifconfig查看服务器中的网卡信息 查看docker虚拟网卡是否与eth0网卡处于同一网段中 解决方法: 修改 /etc/docker/daemon.json,加入一行 “bip”: “192.168.1.5/24”

weixin_43224937的博客 2654

如何在阿里云上部署和管理Docker容器?

在阿里云上部署和管理Docker容器,可以通过阿里云容器服务(Container Service for Kubernetes,简称ACK)来实现。ACK是一个高度可扩展的、企业级的Kubernetes容器管理服务,它提供了一种简单、快速的方式来部署和管理容器化应用程序。- 使用Dockerfile构建Docker镜像,并将其推送到阿里云容器镜像服务(Container Registry,简称ACR)或其他镜像仓库。- 选择合适的地域、可用区、集群类型(如托管集群或独立集群)以及集群规格。

guo162308的博客 1002

idea连接docker连不上

1、检查服务器的防火墙关了没 systemctl status firewalld 2、如果防火墙没关,关闭防火墙 systemctl stop firewalld 3、虽然第二步关闭了防火墙,但是开机后仍会重启,需要永久关闭输入如下代码 systemctl disable firewalld ...

qq_45564783的博客 2130

docker+jenkins+阿里云容器服务自动化部署

一、在服务器上安装docker 请参考我的这篇文章:ubuntu16.04中下载安装docker 二、在阿里云容器服务构建镜像 1、进入阿里云容器镜像服务 地址:容器镜像服务 根据文档先创建一个命令空间,然后就可以创建一个你项目的镜像仓库了 根据提示创建完镜像仓库,然后进入构建,并添加规则 这里的Dockerfile是你的项目根目录下的Dockerfile,文件名一定要相同。镜像版本根据自己...

monkey-jie的博客 2163

[Hadoop]在CentOS7上使用Docker部署Hadoop

在踩了众多的坑之后,即使是使用阿里云开源的Docker镜像来部署Hadoop,也会出现很多错误,本文帮助你更好的使用Docker来部署全分布式Hadoop的环境,如果出现问题的,请联系tangweixuan1995@foxmail.com,请支持原创

dannistang的博客 4475

docker部署的容器远程无法连接

这是一个比较头痛的问题,描述一下症状! 1.docker ps查看容器是正常运行的 2.端口是开放的,或者防火墙是关闭的 3.如果是云厂商服务器的如阿里云,腾讯云,华为云,等安全组都是开放的 4.装了宝塔的,宝塔面板上的安全端口也是开放的 5.直接运行程序如java项目是可以直接访问的 6.同样的步骤,命令在阿里云,腾讯云、华为云都是可以的 7.如挂载的是redis、mysql或者其他的都能从服务器内部链接进去,并且都能操作就是远程连接不上! 8.外网ping主机都能ping通 这样额问题是由于docker

程序员劝退师的博客 9615

阿里云搭建docker镜像仓库

最近想把个人项目漏洞扫描平台info_scan部署到docker上,由于国内服务器无法访问docker,参考网上的资料,把如何通过阿里云搭建个人免费的docker镜像仓库,进行整理,只需要按照以下步骤操作即可,非常方便。

weixin_42487326的博客 4808

Docker Desktop 配置阿里云镜像

Docker Desktop 配置阿里云镜像加速

有来技术 4329

高通Camera HAL3调试实战:如何用camxoverridesettings.txt高效抓取日志与dump图像数据

本文深入探讨了高通Camera HAL3调试中camxoverridesettings.txt文件的高效应用,重点介绍了如何通过该文件精准控制日志输出级别与dump图像数据,帮助开发者快速定位移动影像系统中的问题。文章详细解析了日志分级配置、图像数据捕获技巧及典型问题排查流程,为高通Camera HAL3项目开发提供了实用技术点。

weixin_30315905的博客 862

STC32-USB-CAN:基于STC32G的国产双通道隔离CAN分析调试设备设计与实战

本文详细介绍了基于国产STC32G单片机设计双通道隔离CAN分析调试设备的全过程。该设备实现了双通道隔离CAN数据监控、中继转发及USB高速通信,并支持故障注入测试。核心采用全国产器件,通过实战测试验证了其在1Mbps波特率下长时间稳定工作的可靠性,为工程师提供了高性价比的CAN总线调试解决方案。

weixin_42465140的博客 97

阿里云服务部署docker容器

Docker是一种容器化技术,目前市面上流程的容器化技术有两种:Docker和 Kubernetes(K8S)Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。Docker诞生于2013年,dotCloud公司出品(后改名为Docker Inc)Docker 可以让开发者打包他们的应用以及依赖包及环境到一个轻量级、可移植的容器中, 然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

apex_eixl的博客 2378

CCS软件仿真插件移植避坑指南:从CCS5.5到7.4的完整流程

本文详细介绍了将CCS软件仿真插件从CCS5.5迁移至CCS7.4的完整流程与避坑指南。针对TMS320F28335等C2000系列芯片,重点解析了仿真核心文件、配置数据库、连接定义及驱动文件的移植步骤,并通过两个实战Demo验证了移植后仿真环境的可用性,帮助开发者在无硬件条件下继续高效进行算法验证与调试。

defi6farmer的博客 460

Linux环境基于CentOS7 搭建部署Docker容器

Linux环境基于CentOS7 搭建部署Docker容器1.Docker容器概述2.Docker容器部署与安装Docker容器部署2.1 Docker容器安装3. Docker配置阿里云镜像加速器4.Docker容器基本组件部署与安装Compose组件部署与安装Machine组件部署与安装4.Docker容器部署与安装总结 1.Docker容器概述 区分Docker容器技术和VM虚拟机技术:...

MarkLin编程部落格 1377

(论文速读)低光照图像增强综述(一)

深度学习在弱光图像增强(LLIE)领域取得显著进展,但仍面临泛化性和应用评估不足的挑战。本研究通过统计分析30多种深度学习方法,揭示了监督学习在性能指标上的优势(如DLL的PSNR达25.67dB)与无监督方法(如Zero-DCE++)在实际任务中的潜力。实验发现,增强后的人脸检测mAP最高可提升14.54%,但视觉质量与机器性能存在差异。研究指出当前主要瓶颈包括极端光照处理能力不足、4K+实时处理困难及评估标准不统一,并提出了自适应增强、扩散模型应用等未来方向。

LJ1147517021的博客 2241

自动化测试与AI的结合应用

自动化测试,人工智能,机器学习,深度学习,测试用例生成,缺陷预测,测试优化 1. 背景介绍 在软件开发领域,自动化测试已成为不可或缺的一部分,它可以提高测试效率、降低测试成本,并确保软件质量。然而,传统的自动化测试方法往往依赖于人工编写的测试用例,这不仅耗时费力,而且难以应对复杂软件

AI架构师小马 2247

如何在阿里云上快速部署一套应用(docker 容器化)

1、使用docker在阿里云服务器上容器化部署项目 2、nginx反向代理服务器的docker容器化部署与配置 3、公众号后台开发服务的部署 4、淘宝内部搜券神器

u012809308的博客 3951

AI 实战篇 |基于 AI开放平台实现 人脸识别对比 功能,超详细教程【附带源码】

本篇文章来学习一下怎样使用 Unity实现简单地人脸识别 功能。 关于人脸识别,我们可以选择很多平台的SDK接入Unity来实现人脸识别的功能。

努力前行,总会成为自己心中的那道光 5万+

Docker 容器化部署

概念 docker是一个开源应用容器引擎 基于 GO 语言实现 开发者可以将他们的应用和依赖打包到一个轻量级, 可移植的容器中, 发布到任何流行的 Linux 机器上 沙箱机制, 互相隔离 性能开销很低 安装(基于 centos7) 下载安装 docker # yum 包更新到最新 yum update # 安装需要的软件包, yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的 yum install -y yum-utils de

Powerstot的博客 3803

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Docker】ClickHouse 容器化部署

ClickHouse标准软件基于Bitnami clickhouse 23.12.2版本构建。详细说明相关部署过程以及自定义配置参数

Qinghub‘博客 2363

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Centos7安装Docker到部署容器(详细版)

在开始之前我们先来介绍一下docker,,它允许开发者将应用及其依赖打包到可移植的容器中,然后发布到任何流行的或操作系统上。Docker的核心功能包括虚拟化,通过使用沙箱机制,容器之间完全隔离,没有相互干扰。Docker容器轻量且性能开销低,使得它们非常适合用于快速迭代应用程序、便捷部署和扩展以及简化应用程序的部署和管理。docker镜像官网(在国外,有梯子才可以访问,我的是用阿里云提供的仓库)我们来根据以下图片来对。

m0_70812512的博客 7233

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 阿里云部署Docker(6)----解决删除<none>镜像问题
下一篇: 阿里云部署Docker(8)----安装和使用redmine
minimicall
博客等级 码龄18年 407粉丝 174原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值