docker:从 tomcat 容器连接到 mysql 容器

docker 中的容器互联是一个较为复杂的话题,详细内容将在后续章节中介绍。 续前 2 个章节的内容,我们创建了一个 mysql 容器和一个 tomcat 容器,可以使用 「docker ps」来查看他们的状态。

core@localhost ~/base $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a02ce457c87 tutum/tomcat:8.0 "/run.sh" 16 minutes ago Up 16 minutes 0.0.0.0:80->8080/tcp insane_hawking
fb4b9ab6a2ba dl.dockerpool.com:5000/mysql:5.7 "/entrypoint.sh mysq 16 hours ago Up 16 hours 0.0.0.0:3306->3306/tcp db001

我们看到这里我们直接把 mysql 的 3306 端口直接映射到了宿主主机上,tomcat 的 8080 端口映射到了宿主主机的80端口上面,他们现在其实可以直接使用宿主主机的地址互联了。在开发环境中这没什么问题,若在生产环境中,可能就会有一定的安全隐患,使用容器互联可以避免这个问题,下面我们来操作一下:

core@localhost ~/base $ docker stop db001
#使用容器的名字来停止容器
db001
core@localhost ~/base $ docker rm db001
#使用容器的名字来删除容器
db001
core@localhost ~/base $ docker run --name db001 -e MYSQL_ROOT_PASSWORD=admin -d mysql:5.7
fe9e65aaf58cd34c12f3c1ab4a3318ae3920300b0f3d0241359c904d7182376f
core@localhost ~/base $ docker stop 5a0
5a0
#使用容器的id来停止容器,效果与使用名字一样,而且一般只需要输入容器 id 的前 3 个字符就可以了
core@localhost ~/base $ docker rm 5a0
5a0
core@localhost ~/base $ docker run -d -p 80:8080 --name tomcat001 --link db001:tomysql tutum/tomcat:8.0
#解释下--link 前面的 db001 是我们要连接的数据库服务器的容器名称,后面的 tomysql 是我们要创建的这个链接的名字
e3c136d76b447e885006a43c63f5200c2012a7ce02aaa43860c7a00c130a563e
core@localhost ~/base $ docker ps
#这里我们可以看到只有tomcat的端口映射到了宿主主机上,而 mysql 的端口只有 tomcat 容器可以连接
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3c136d76b44 tutum/tomcat:8.0 "/run.sh" 3 seconds ago Up 2 seconds 0.0.0.0:80->8080/tcp tomcat001
fe9e65aaf58c dl.dockerpool.com:5000/mysql:5.7 "/entrypoint.sh mysq 5 minutes ago Up 5 minutes 3306/tcp db001,tomcat001/tomysql

至此,mysql和tomcat之间的连接就算完成了。

上一篇:Oracle 12c 容器讲解


下一篇:[UE4]C 语言动态数组