欢迎大家关注我的以下主页,尤其是今日头条!!!谢谢🙏🙏🙏
csdn:雷园的csdn博客
个人博客:雷园的个人博客
简书:雷园的简书
今日头条:来自底层程序员的仰望
Docker容器Link操作
开头说几句
- 在上一章节中,我们介绍了Docker容器的一些基本操作。
- 在这一章节中我们来说说Docker容器的Link操作。
- 往后的章节中我们会说到Docker编排工具以及集群,希望大家多多支持。
- 最近欠更啊,真的希望朋友们能跟我聊聊,最近压力很大。
正式开始
为什么使用Docker的Link操作
- 无论是什么应用服务,一定都会依赖到外部的服务。比如Mysql、Redis、Zookeeper等等这些外部的服务。
- 一般的非容器部署,各项服务都会有自己独立的IP,而且基本上都会有固定的服务器地址。
- 当然容器中一样会有容器的独立IP,但是通常来说是动态分配的虚拟IP。
- 那么在我们的应用服务中其实一样可以使用IP去进行服务的调用,但是每次容器重启会导致我们的服务根据新分配的IP去配置应用服务,很是麻烦。
- 那通过我们这节说到的Link操作,相当于给主机加入了一个主机名或者是域名之类的配置,我们就可以根据定义的容器名称去调用服务了。
- 如此依赖,即使依赖服务如何变化,都不会影响到我们应用服务。
Docker如何正确使用Link命令
-
这里我们就用简单依赖Mysql服务的Java项目做演示。
-
通常在我们的项目中,Mysql的相关参数会写到Java项目的相关配置当中:
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.2.231:3306/wise_base_abutting?${JDBC_PAR} username: ${JDBC_USERNAME} password: ${JDBC_PASSWORD}
-
如上方配置,我们通常使用IP进行配置,现在我们以字符
mysql
进行配置:spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://mysql:3306/wise_base_abutting?${JDBC_PAR} username: ${JDBC_USERNAME} password: ${JDBC_PASSWORD}
-
一般来说这样是肯定不能用的,我们先保持这样的配置,现在我们先启动mysql容器,并对外映射3306端口。
docker run -d -p 3306:3306 --name mysql mysql:latest
-
实际上如果只是其他容器通过link使用mysql服务,无需映射端口,这里我们方便可视化操作数据库,选择对应映射3306端口
-
然后呢我们启动tomcat服务器容器,Link名为mysql的容器并对外映射8080端口。
docker run -d -p 8080:8080 --link mysql:mysql --name tomcat tomcat:latest
-
这样一来,两个容器之间就可以互相通信了,那接下来我们就把我们的Java项目部署到tomcat容器中进行测试。
docker cp test.war tomcat:/usr/local/tomcat/webapps
-
我们通过上面的命令将war包放入webapps目录下,tomcat服务器会自动执行热加载。
-
接下来我们就只需要关注项目是否正常启动运行,观察日志中是否有Mysql数据库无法连接的异常信息即可。
docker logs -f tomcat
最后说两句
- 在最后呢,我再唠叨两句。
- 以上所讲呢,适用于单容器启动,且依赖服务不算太多的情况下使用。
- 但是有很多的弊端,比如用起来麻烦、操作繁琐等等。
- 后面我们会讲到容器编排以及集群方式,那个用起来就舒服的太多了。
- 希望大家多多支持,谢谢大家。