网站建设规划书应当包含哪些内容,开公司要多少注册资金,湖南郴州旅游十大必去景区,英语工作室网站怎么做看了很多资料#xff0c;说做互联的一个原因是容器内ip不固定#xff0c;关掉重启后如果有别的容器启动#xff0c;之前的ip会被占用#xff0c;所以做互联创建一个网络#xff0c;让几个容器处于同一个网络#xff0c;就可以互联还不受关闭再启动ip会改变的影响#xf…看了很多资料说做互联的一个原因是容器内ip不固定关掉重启后如果有别的容器启动之前的ip会被占用所以做互联创建一个网络让几个容器处于同一个网络就可以互联还不受关闭再启动ip会改变的影响但是其实我拿我做的mysql测试不管是代码里还是sql连接工具使用容器内ip根本连接不到只有使用我本机的ip连接才能连接上所以实际容器内部ip变化对我的使用并没有影响但是我特别在网上查了很多他们好像用本地ip都连接不上只能用容器内的ip这个我就不直到为什么了不过我只是为了学习如何创建网络以及将新建的容器和既存的容器连接到一个网络即可现在不懂的地方可以在以后有机会的时候就能知道为什么了忽略次要的重点先学会用。先创建一个网络 docker network create -d bridge sixdog查看创建的网络
sixdogsixiaodong dockerfile % docker network ls
NETWORK ID NAME DRIVER SCOPE
5451e1cd08f8 bridge bridge local
d8b19cbdca68 host host local
f46cec15b991 none null local
1dadf784140f sixdog bridge local我现在有一个既存的容器mysql-dev准备把它连接到sixdog网络里
4.1 查看mysql-dev容器
sixdogsixiaodong dockerfile % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
465ae184cd56 mysql:latest docker-entrypoint.s… 23 months ago Up 24 hours 33060/tcp, 0.0.0.0:3307-3306/tcp mysql-dev4.2 查看mysql-dev部分网络信息
sixdogsixiaodong dockerfile % docker inspect mysql-dev
其他部分省略
Gateway: 172.17.0.1,GlobalIPv6Address: ,GlobalIPv6PrefixLen: 0,IPAddress: 172.17.0.2,IPPrefixLen: 16,IPv6Gateway: ,MacAddress: 02:42:ac:11:00:02,Networks: {bridge: {IPAMConfig: null,Links: null,Aliases: null,NetworkID: 5451e1cd08f83eeba5495ecd8041332382c20068fa44e103b759442217f62867,EndpointID: 4388a57b5eed4fb767d918eb274a8b631d1e8fa8793909e6373a9e2c5466c580,Gateway: 172.17.0.1,IPAddress: 172.17.0.2,IPPrefixLen: 16,IPv6Gateway: ,GlobalIPv6Address: ,GlobalIPv6PrefixLen: 0,MacAddress: 02:42:ac:11:00:02,DriverOpts: null}}
4.3 尝试连接
sixdogsixiaodong dockerfile % docker network connect sixdog mysql-dev4.4 查看网络信息
sixdogsixiaodong dockerfile % docker inspect mysql-dev
其他部分省略
Gateway: 172.17.0.1,GlobalIPv6Address: ,GlobalIPv6PrefixLen: 0,IPAddress: 172.17.0.2,IPPrefixLen: 16,IPv6Gateway: ,MacAddress: 02:42:ac:11:00:02,Networks: {bridge: {IPAMConfig: null,Links: null,Aliases: null,NetworkID: 5451e1cd08f83eeba5495ecd8041332382c20068fa44e103b759442217f62867,EndpointID: 4388a57b5eed4fb767d918eb274a8b631d1e8fa8793909e6373a9e2c5466c580,Gateway: 172.17.0.1,IPAddress: 172.17.0.2,IPPrefixLen: 16,IPv6Gateway: ,GlobalIPv6Address: ,GlobalIPv6PrefixLen: 0,MacAddress: 02:42:ac:11:00:02,DriverOpts: null},sixdog: {IPAMConfig: {},Links: null,Aliases: [465ae184cd56],NetworkID: 1dadf784140fe418f4bd421b63ecd06ed46a1ebf41d386fba725e454349acb86,EndpointID: 1fc1d1d1dcaa6f37732690e82b684370638070a76c3d6a7ee08ebe94474711e8,Gateway: 172.18.0.1,IPAddress: 172.18.0.2,IPPrefixLen: 16,IPv6Gateway: ,GlobalIPv6Address: ,GlobalIPv6PrefixLen: 0,MacAddress: 02:42:ac:12:00:02,DriverOpts: {}}}
4.5 我用dbeaver使用172.18.0.2连接了下连接不上mysql-dev用我本机的ip可以
新建一个jar的运行环境配置启动时的外部配置文件里的mysql连接ip改为172.18.0.2并把这个新创建的容器加到sixdog网络里 5.1 新建一个jar的运行环
#db访问配置
spring.datasource.urljdbc:mysql://172.18.0.2:3307/test
spring.datasource.usernameroot
spring.datasource.password123456
spring.datasource.driverClassName com.mysql.cj.jdbc.Driverserver.port8082sixdogsixiaodong dockerfile % docker run --name appsixdog --network sixdog -p 8082:8082 -d app:v1
74c9a0faaaff167802fd6532278e8e10fe0a1d3cb993c275fe32e064e130fb2d5.2 查看容器
sixdogsixiaodong dockerfile % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74c9a0faaaff app:v1 java -Dspring.confi… 9 seconds ago Up 8 seconds 0.0.0.0:8082-8082/tcp appsixdog5.3 查看网络配置
sixdogsixiaodong dockerfile % docker inspect appsixdog
部分省略
Networks: {sixdog: {IPAMConfig: null,Links: null,Aliases: [74c9a0faaaff],NetworkID: 1dadf784140fe418f4bd421b63ecd06ed46a1ebf41d386fba725e454349acb86,EndpointID: 9c64f3dc6bbe49a7ffbfd699b946e55b9ff8d006591d38c2e0fe4fe86602f565,Gateway: 172.18.0.1,IPAddress: 172.18.0.3,IPPrefixLen: 16,IPv6Gateway: ,GlobalIPv6Address: ,GlobalIPv6PrefixLen: 0,MacAddress: 02:42:ac:12:00:03,DriverOpts: null}}
5.4 访问页面 …很遗憾可能是外部配置的文件没有生效所以8082的画面访问失败我删掉了使用8081再来一遍 5.5.想起来了需要把配置文件拷贝到容器内
sixdogsixiaodong dockerfile % docker cp ./application.properties 00581903345c:/home/application.propertiesSuccessfully copied 2.56kB to 00581903345c:/home/application.properties5.6 进容器内查看确认内容
docker exec -i -t appsixdog /bin/bash5.7.重启容器
sixdogsixiaodong dockerfile % docker restart appsixdog
appsixdog5.8 再次确认画面,报错了调查后发现其实在容器内品mysql的ip是可以的拼通的最后意识到在eclipse里配置的端口是创建容器时映射到外边的3307而容器内是3306修改后重启容器画面可以打开证明联网后容器可以互相访问但是要注意端口等信息以容器内为准而不是创建容器时外边的端口