使用第三方工具连接docker数据库

时间:2019-02-18 16:59:22   收藏:0   阅读:219

一、背景

? 为了把测试环境迁移至docker上,我在centos7上安装了docker,具体安装方法可参考《CentOS7下安装docker》本文不再论述。有些同学可能会有疑问,为什么要那样子做?我给大家看看目前我的docker环境究竟是怎么样的?

# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                    NAMES
9e1ae7ac8ead        postgres:10.6       "docker-entrypoint.sa€|"   7 seconds ago       Up 4 seconds        192.168.56.8:5433->5432/tcp              chenzx-postgres10.6
927842f243da        postgres:9.6.11     "docker-entrypoint.sa€|"   16 seconds ago      Up 14 seconds       192.168.56.8:5432->5432/tcp              chenzx-postgres9.6
dcc880f0a503        mysql:5.7.25        "docker-entrypoint.sa€|"   30 minutes ago      Up 30 minutes       33060/tcp, 192.168.56.8:3307->3306/tcp   chenzx-mysql5.7
56c8605d7d22        mysql:5.6.43        "docker-entrypoint.sa€|"   About an hour ago   Up About an hour    192.168.56.8:3306->3306/tcp              chenzx-mysql5.6

? 迁移后,可以在容器中非常快速地建立不同版本的数据库容器,可以做相关的测试。如果测试环境中把数据库弄崩了,咋办?很简单把容易删除重建就好,而且时间就是那么几秒钟的事情。不再像以往可能要花半天一天去弄。当然啦,这种玩法只适合在个人的测试环境中,生产环境暂时不建议使用这些方式,风险太大了。

二、Docker网络知识科普

# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
90270239cfd6        bridge              bridge              local
f97e248a7301        host                host                local
8833271a493a        none                null                local

? 使用docker命令查看docker的网络模式,这里可以看到有三种,但实际上是有4种模式,最后一种应该是我还无配置所以无法显示出来。下面我们开始介绍这四种模式:

1. bridge模式

? Docker 容器默认使用 bridge 模式的网络。其特点如下:

技术分享图片

2. host模式

? Host 模式并没有为容器创建一个隔离的网络环境。而之所以称之为host模式,是因为该模式下的 Docker 容器会和 host 宿主机共享同一个网络 namespace,故 Docker Container可以和宿主机一样,使用宿主机的eth0,实现和外界的通信。换言之,Docker Container的 IP 地址即为宿主机 eth0 的 IP 地址。其特点包括:

技术分享图片

3. container模式

Container 网络模式是 Docker 中一种较为特别的网络的模式。处于这个模式下的 Docker 容器会共享其他容器的网络环境,因此,至少这两个容器之间不存在网络隔离,而这两个容器又与宿主机以及除此之外其他的容器存在网络隔离。

技术分享图片

4. none模式

网络模式为 none,即不为 Docker 容器构造任何网络环境。一旦Docker

容器采用了none 网络模式,那么容器内部就只能使用loopback网络设备,不会再有其他的网络资源。Docker
Container的none网络模式意味着不给该容器创建任何网络环境,容器只能使用127.0.0.1的本机网络。

三、创建带IP地址、端口映射的容器

? 了解完docker网络模式,我们根据image的帮助文档结合网络映射等配置,以MySQL为例,得出以下的命令:

docker run --name <ContrinerName> -p IPAddr:HostPort:ContainerPort -d  MYSQL_ROOT_PASSWORD=<MYSQL_ROOT_PASSWORD> -d mysql:<TargetVersion>

执行:

docker run --name chenzx-mysql5.6 -p 192.168.56.8:3306:3306 --network=bridge -e MYSQL_ROOT_PASSWORD=****** -d mysql:5.6.43

执行后就会创建出上文展示的容器chenzx-mysql5.6。MySQL的远程连接端口为3306,故需把这端口映射。PostgreSQL需映射5432端口,Oracle需映射1521端口。

? 创建容器就行了,为何需要做网络映射?为了是可以让第三方工具进行连接,如Navicat等。

最终效果:
技术分享图片

四、参考文献

《docker 之网络配置》

原文:https://www.cnblogs.com/nolanchan/p/10396294.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!