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 ...
最新文章
- On/Off FlipSwitch 按钮
- 超时时间已到。在操作完成之前超时时间已过或服务器未响应
- Vagrant: hostmanager 主机名管理插件
- leetCode-第四题求两个数组的中位数
- VTK:二次曲面用法实战
- 清新BLOG-CMS博客主题源码
- spring12----基于@AspectJ的AOP
- 消息中间件之JMS实践(ActiveMQ) 1
- DeveloperAppleHelp
- 对于拼接进去的html原来绑定的jq事件失效
- php redis stream,php redis-close() 之后为什么还能使用 $redis-get('key') 获取数据?
- Svn分支管理的使用(三)
- python下载bt文件_使用libtorrent-python下载Torrent
- 电脑卡慢怎么办,是什么原因,怎么处理Sysmain
- 带你理解 Hanoi 汉诺塔递归算法
- 棉猴论坛VIP之驱动基础系列教程 视频教程
- 驻波在物理上的应用与魅力
- linux网络操作系统项目教程第三版答案,《Linux网络操作系统项目教程(RHEL7.4 CentOS 7.4)(第3版))》习题及答案...
- C# winform对话框用法大全
- win7 无法打开vscode 1.71版本