docker_容器间的链接 link
使用link就是类似使用了容器的ip地址,无需知道其真实ip,使用link后的别名就可以知道
使用link连接容器
以 mysql 为 栗子
启动一个 mysql-server,详细参数可以参照说明文档:https://hub.docker.com/r/mysql/mysql-server/,设置密码,挂载数据库 等等
wilker@ubuntu:~$ docker pull mysql/mysql-server # 拉一个官方的镜像下来 wilker@ubuntu:~$ docker run --name=mysql_server11 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server # 启动容器,并设置 root 用户密码
进入 mysql_server11 容器中修改一下 root 用户可以访问的ip地址,默认是 localhost,别的ip是连不进来的,这里改成 任意 ip 都可以连进来(生产环境不能这样干)
wilker@ubuntu:~$ docker exec -it mysql_server11 mysql -uroot -p123456 # 进入容器的mysql服务 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.18 MySQL Community Server (GPL)mysql> show databases; # 看下默认的数据库 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+mysql> use mysql; # 使用 mysql 数据库 Database changed mysql> select host,user from user where user='root'; +-----------+------+ | host | user | +-----------+------+ | localhost | root | # 默认只有 当前容器能用 root 用户连进来,要修改一下 +-----------+------+ 1 row in set (0.00 sec)mysql> update user set host = '%' where user ='root'; # 修改成 % 表示任意ip Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0mysql> select host,user from user where user='root'; # 查看一下修改成功没 +------+------+ | host | user | +------+------+ | % | root | +------+------+ 1 row in set (0.00 sec)mysql> flush privileges; # 刷新权限使之生效 Query OK, 0 rows affected (0.01 sec)mysql> exit; # 退出 mysql,然后自动退出容器 Bye wilker@ubuntu:~$
去 docker hub 拉一个客户端下来,使用 link 连接 mysql_server11 容器,并使用别名 为 db
wilker@ubuntu:~$ docker pull imega/mysql-client # 拉 mysql 客户端镜像 wilker@ubuntu:~$ docker run --name=mysql_client11 --link=mysql_server11:db -i -t imega/mysql-client mysql -h db -uroot -p123456 # -h 的值为 db,就是 mysql_server11 的ip别名 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 14 Server version: 5.7.18 MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]> show databases; # 成功进入 mysql_server11 容器中的数据库 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)MySQL [(none)]> exit; Bye
退出客户端容器是容器也就变为 Exit 状态了,再次进入可以用 start 这个容器
wilker@ubuntu:~$ docker start mysql_client11 -a Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 5.7.18 MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]>
查看容器连接后的环境变量
还是用上面运行的 mysql 栗子
mysql_server11 的环境变量
wilker@ubuntu:~$ docker exec mysql_server11 env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=e3edaf102b4a MYSQL_ROOT_PASSWORD=123456 PACKAGE_URL=https://repo.mysql.com/yum/mysql-5.7-community/docker/x86_64/mysql-community-server-minimal-5.7.18-1.el7.x86_64.rpm HOME=/root
mysql_client11 的环境变量,这里可以看到 mysql_server11 容器的环境变量
wilker@ubuntu:~$ docker exec mysql_client11 env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=db696da76b9c DB_PORT=tcp://172.17.0.2:3306 DB_PORT_3306_TCP=tcp://172.17.0.2:3306 DB_PORT_3306_TCP_ADDR=172.17.0.2 DB_PORT_3306_TCP_PORT=3306 DB_PORT_3306_TCP_PROTO=tcp DB_PORT_33060_TCP=tcp://172.17.0.2:33060 DB_PORT_33060_TCP_ADDR=172.17.0.2 DB_PORT_33060_TCP_PORT=33060 DB_PORT_33060_TCP_PROTO=tcp DB_NAME=/mysql_client11/db DB_ENV_MYSQL_ROOT_PASSWORD=123456 DB_ENV_PACKAGE_URL=https://repo.mysql.com/yum/mysql-5.7-community/docker/x86_64/mysql-community-server-minimal-5.7.18-1.el7.x86_64.rpm HOME=/root
- 再看一下 hosts 文件, db 可以解析为 172.17.0.2,
wilker@ubuntu:~$ docker exec mysql_client11 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.2 db e3edaf102b4a mysql_server11 172.17.0.3 db696da76b9c
参考资料
- http://blog.tingyun.com/web/article/detail/892
- http://www.jianshu.com/p/13752117ff97
- https://www.oschina.net/translate/dockerlinks
- mysql 的相关操作:http://www.cnblogs.com/flying607/p/4766041.html
docker_容器间的链接 link相关推荐
- Docker框架使用系列教程(五)容器间的链接
Docker容器的教程这里已经是第五期了,我们今天讲一讲容器之间的链接,包括常用的命令等等,喜欢的话记得收藏起来慢慢看. 容器间的链接有两种方法,任选其一即可 例如: docker run -d -P ...
- docker容器网络配置之容器间的链接(默认桥接网络下的links)
一. 遗留的容器连接方式 --link --link是docker 的一个遗留的特征,最终可能被删除.除非绝对需要使用,不然,建议使用 user-defined network 建立容器间的连接.不 ...
- ping 不通容器 宿主_Docker容器间通信
Docker容器间通信 Docker会为每个创建的容器自动分配一个虚拟IP,这个虚拟IP无法从容器外侧进行访问,只是Docker环境内部容器间彼此通信的标识,容器间的网络是互通互联的. 但是通过这种虚 ...
- docker 获取宿主机ip_Docker基础修炼6——网络初探及单机容器间通信
如果觉得文章有帮助,欢迎点击头像关注我获取更多原创文章,同时也欢迎转发. 同时也可以在我的历史文章中找到Linux操作系统相关的服务器运维管理入门系列文章,欢迎交流. 前文演示docker容器内部数据 ...
- docker笔记13 - 容器间的单双向通信
1.容器间基于Link实现单向通信 镜像列表 [root@iZbp1e9mxelwe7pwimpw8sZ ~]# docker images REPOSITORY TAG IMAGE ID CREAT ...
- docker安装nfs文件服务器,使用docker搭建nfs实现容器间共享文件
首先介绍下今天的两个主角:nfs和docker nfs 是什么 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TC ...
- docker 容器之间通信_还不清楚docker容器间是如何通信的?看这篇文章就够了
如果觉得文章有帮助,欢迎点击头像关注我获取更多原创文章,同时也欢迎转发. 同时也可以在我的历史文章中找到Linux操作系统相关的服务器运维管理入门系列文章,欢迎交流. 前文演示docker容器内部数据 ...
- docker容器网络 - 同一个host下的容器间通信
2019独角兽企业重金招聘Python工程师标准>>> 对于复杂的应用,不可避免需要多个服务部署在多个容器中,并且服务间存在相互间通信的情况.比如服务A需要连接mysql的容器.本文 ...
- Docker网络——实现容器间通信、容器与外网通信以及容器的跨主机访问
前言 自定义网络 建议使用自定义的网桥来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址.Docker提供了创建这些网络的默认网络驱动程序,你可以创建一个新的Bridge网络,Over ...
最新文章
- R语言使用beanplot包绘制豆荚图实战:与箱图、小提琴图对比、绘制不对称的豆荚图
- 2、Ktor学习-自动重新加载;
- 【C#】特性标签中的属性解释
- linux时间调整为dst,在Linux中禁用夏令时(DST)更改
- ionic tab导航在android 顶部解决方案
- 自动开料机器人_工业4.0智能家具无人化生产线 自动化无人化大势所趋
- List集合_介绍常用方法
- centos mysql 远程连接_Linux下开启MySQL的远程连接
- 在 Pycharm下使Python2和Python3共用Anaconda中的各种库/包的解决方法
- 关于获取安卓设备的mac地址
- 串口发送图片VGA显示
- 视频聊天室软件的技术标准
- 2014520420145212信息安全系统实验三报告
- 服务器远程预览本地设备视频, 预览多个,打不开视频流
- acs880变频器静态辨识_ACS880变频器PID控制参数设置 -
- 祭十大已经逝去的软件
- HDU4565 So Easy!【矩阵快速幂】
- 24.FFmpeg学习笔记 - 用libavfilter转换原始音频格式1
- Vufroia相机对焦问题
- docker容器网络配置之容器间的链接(默认桥接网络下的links)
热门文章
- 仿脉脉PHP源码,脉脉——一个让你能够学习工作的平台
- 各种java开源框架笔记
- ORA-00942: table or view does not exist
- 如何在macOS中管理家长控制?
- 数字图像与机器视觉基础(2)
- 千峰笔记【数通基础】③ DHCP、DNS、FTP、WEB服务器搭建(Windows2003)
- 金山云容器引擎服务入门指南
- 找不到libgvplugin_pango.so.6的问题
- ArcGIS 对等高线进行标注
- 《火球——UML大战需求分析》(第1章 大话UML)——1.1 UML基础知识扫盲