Docker容器互联

Docker容器互联

查看所有网络信息

docker network ls

创建网络

docker network create my-net

-d 指定网络类型,默认使用的是bridge,也可以是overlay(需要swarm mode)

查看网络详情信息

docker inspect my-net

连接容器

[root@dokcer _data]# docker run -dit --name=app1 --network my-net centos:7
78c6bd50d9111a00b7865071a4be43fb9f16523c501f5120fd842e0b88d1a712
[root@dokcer _data]# docker run -dit --name=app2 --network my-net centos:7
bff16dc1c32a99f27dec4aa8867bfdb729d07785cf38b56147964fa6781df1af
[root@dokcer _data]# docker ps -a
CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS          PORTS                                                                                                                                                 NAMES
bff16dc1c32a   centos:7                          "/bin/bash"              8 seconds ago    Up 6 seconds                                                                                                                                                          app2
78c6bd50d911   centos:7

通过查看app1的ip地址为172.18.0.2 app2的ip地址为172.18.0.3

[root@dokcer _data]# ping 172.18.0.2
PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data.
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.078 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.059 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.062 ms
64 bytes from 172.18.0.2: icmp_seq=4 ttl=64 time=0.055 ms
64 bytes from 172.18.0.2: icmp_seq=5 ttl=64 time=0.047 ms
^C
--- 172.18.0.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4125ms
rtt min/avg/max/mdev = 0.047/0.060/0.078/0.011 ms
[root@dokcer _data]# ping 172.18.0.3
PING 172.18.0.3 (172.18.0.3) 56(84) bytes of data.
64 bytes from 172.18.0.3: icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from 172.18.0.3: icmp_seq=2 ttl=64 time=0.049 ms
^C
--- 172.18.0.3 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1010ms
rtt min/avg/max/mdev = 0.049/0.049/0.050/0.007 ms
[root@78c6bd50d911 /]# ping 172.18.0.1
PING 172.18.0.1 (172.18.0.1) 56(84) bytes of data.
64 bytes from 172.18.0.1: icmp_seq=1 ttl=64 time=0.119 ms
64 bytes from 172.18.0.1: icmp_seq=2 ttl=64 time=0.057 ms
^C
--- 172.18.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1038ms
rtt min/avg/max/mdev = 0.057/0.088/0.119/0.031 ms
[root@78c6bd50d911 /]# ping 172.18.0.3
PING 172.18.0.3 (172.18.0.3) 56(84) bytes of data.
64 bytes from 172.18.0.3: icmp_seq=1 ttl=64 time=0.375 ms
64 bytes from 172.18.0.3: icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from 172.18.0.3: icmp_seq=3 ttl=64 time=0.091 ms
^C
--- 172.18.0.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2066ms
rtt min/avg/max/mdev = 0.034/0.166/0.375/0.149 ms
[root@78c6bd50d911 /]# ping app2
PING app2 (172.18.0.3) 56(84) bytes of data.
64 bytes from app2.my-net (172.18.0.3): icmp_seq=1 ttl=64 time=0.093 ms
64 bytes from app2.my-net (172.18.0.3): icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from app2.my-net (172.18.0.3): icmp_seq=3 ttl=64 time=0.033 ms
^C
--- app2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2074ms
rtt min/avg/max/mdev = 0.033/0.053/0.093/0.029 ms
[root@78c6bd50d911 /]# exit
exit
[root@dokcer _data]# docker exec -it app2 bash
[root@bff16dc1c32a /]# ping app1
PING app1 (172.18.0.2) 56(84) bytes of data.
64 bytes from app1.my-net (172.18.0.2): icmp_seq=1 ttl=64 time=0.149 ms
64 bytes from app1.my-net (172.18.0.2): icmp_seq=2 ttl=64 time=0.035 ms
^C
--- app1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1016ms
rtt min/avg/max/mdev = 0.035/0.092/0.149/0.057 ms
[root@bff16dc1c32a /]# exit
exit

删除网络

docker network rm my-net

只能删除未被占用的网络

Dockerfile

镜像制作的脚本

以centos:7为基础,安装JDK和Tomcat

准备一个JDK9和Tomcat 8版本

JDK下载:https://repo.huaweicloud.com/openjdk/9/

Tomcat下载:https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.91/bin/

解压上面下载的压缩包的命令

tar -zxvf  apache-tomcat-8.5.91.tar.gz
tar -zxvf  openjdk-9_linux-x64_bin.tar.gz

Dockerfile内容

#以centos:7作为基础,安装JDK和Tomcat
FROM centos:7
#ADD命令将压缩包传入镜像中的指定的目录,并同时解压
ADD openjdk-9_linux-x64_bin.tar.gz  /opt/
ADD apache-tomcat-8.5.91.tar.gz /usr/
#修改文件名
RUN mv /usr/apache-tomcat-8.5.91 /usr/tomcat
#设置环境变量
ENV JAVA_HOME=/opt/jdk-9 \
    CATALINA_HOME=/usr/tomcat \
    PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
# 暴露端口
EXPOSE 8080
#设置tomcat启动容器时,自启
ENTRYPOINT /usr/tomcat/bin/startup.sh  && tail -F /usr/tomcat/logs/catalina.out

FROM centos:7
ADD openjdk-9_linux-x64_bin.tar.gz  /opt/
ADD apache-tomcat-8.5.91.tar.gz /usr/
RUN mv /usr/apache-tomcat-8.5.91 /usr/tomcat
ENV JAVA_HOME=/opt/jdk-9  \
    CATALINA_HOME=/usr/tomcat  \
    PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
EXPOSE 8080
ENTRYPOINT /usr/tomcat/bin/startup.sh  && tail -F /usr/tomcat/logs/catalina.out

使用Dockerfile构建镜像

Dockerfile文件和openjdk-9_linux-x64_bin.tar.gz 以及apache-tomcat-8.5.91.tar.gz在同一目录

docker build -t tomcat:8 .  

末尾的"."表示构建过程从当前目录寻找文件

运行tomcat:8

 docker run -dit --name=tomcat8 tomcat:8 bash

查看运行过程中的日志输出

docker logs tomcat8

远程访问tomcat8

访问失败

网络链接没有问题、防火墙已经关闭

我们需要做端口映射

端口映射

 docker run -dit --name=tomcat88 -p 8080:8080 tomcat:8 bash

-p 宿主机端口:容器端口

上一篇文章:Docker容器操作-CSDN博客https://blog.csdn.net/Z0412_J0103/article/details/143225306下一篇文章:

相关推荐
布谷歌17 分钟前
Oops! 更改field的数据类型,影响到rabbitmq消费了...(有关于Java序列化)
java·开发语言·分布式·rabbitmq·java-rabbitmq
PXM的算法星球18 分钟前
java(spring boot)实现向deepseek/GPT等模型的api发送请求/多轮对话(附源码)
java·gpt·microsoft
被程序耽误的胡先生22 分钟前
java中 kafka简单应用
java·开发语言·kafka
F202269748634 分钟前
Spring MVC 对象转换器:初级开发者入门指南
java·spring·mvc
楠枬1 小时前
网页五子棋——对战后端
java·开发语言·spring boot·websocket·spring
你好呀我是裤裤1 小时前
Linux基础开发工具的使用(apt、vim、gcc、g++、gdb、make、makefile)
linux·运维·vim
YXWik61 小时前
23种设计模式
java·设计模式
不修×蝙蝠1 小时前
Tomcat理论(Ⅰ)
java·服务器·java-ee·tomcat
望获linux1 小时前
如何在望获实时 Linux & 京博航友善 NanoPC-T6 上部署 Docker
linux·运维·服务器·docker·eureka·开源软件