在容器中安装一些命令工具(Docker的CentOS镜像由于做了精简,所以不包含vim等) Linux系统分为两种: 1.RedHat系列:Redhat、Centos、Fedora等 2.Debian系列:Debian、Ubuntu等 RedHat系列的包管理工具是yum Debian系列的包管理工具是apt-get 我的是: Linux version 3.10.0-1127.19.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Aug 25 17:23:54 UTC 2020 yum 命令的: 先使用命令: yum provides "*/ping" ('/' 后面也可以是vim、telnet、ifconfig等) 查看可以选择的安装包,选择合适的安装即可 安装VIM命令 yum install vim 安装PING命令 yum install iputils apt-get命令的: 安装VIM命令 apt-get install vim 安装TELNET命令 apt-get install telnet 安装IFCONFIG命令 apt-get install net-tools 安装PING命令 apt-get install -y iputils-ping -------------------------------------------------------------------------- 熟悉一些docker network的相关命令: 教程:https://www.yiibai.com/docker/network_connect.html docker network connect 将容器连接到网络 docker network create 创建一个网络 docker network disconnect 断开容器的网络 docker network inspect 显示一个或多个网络的详细信息 docker network ls 列出网络 docker network prune 删除所有未使用的网络 docker network rm 删除一个或多个网络 --------------------------------------------------------------------------- ------------------------------------------------------------------------- Docker容器间的通信方式根据媒介可以分为:volume共享通信、网络通信等;根据通信范围也可以分为:同主机通信和跨主机通信等。而本文主要针对容器间的网络通信方法进行讨论。 1. Docker的网络驱动模型 Docker的网络驱动模型分类: bridge:Docker中默认的网络驱动模型,在启动容器时如果不指定则默认为此驱动类型; host:打破Docker容器与宿主机之间的网络隔离,直接使用宿主机的网络环境,该模型仅适用于Docker17.6及以上版本; overlay:可以连接多个docker守护进程或者满足集群服务之间的通信;适用于不同宿主机上的docker容器之间的通信; macvlan:可以为docker容器分配MAC地址,使其像真实的物理机一样运行; none:即禁用了网络驱动,需要自己手动自定义网络驱动配置; plugins:使用第三方网络驱动插件; 2、使用bridge (1)docker的默认网桥 docker run命令启动时,当你不指定--network时,默认使用bridge,容器之间通过ip通信,但是docker也无法保证容器重启后的IP地址不变,所以更好的方式是通过别名进行互联,在网络中加入DNS服务器,将容器名与IP地址进行匹配,省去了手动修改Web服务中连接mysql的IP的过程。 (2)自定义bridge 在容器化的应用程序提供更好的隔离效果和更好的互通性,更好的隔离效果是针对外界网络,而更好的互通性则是指同一bridge下的不同容器之间 具体使用: docker network 是主要是用做容器之间的通信,即组建容器之间的局域网。其实使用 -link 可以实现容器之间简单的网络,但是容器较多而且通信关系较为复杂时,使用network就更又条理。 docker network 即在容器之间组建一个局域网,然后各个容器可以加入这个网络,之后容器之间的访问就如同局域网中主机之间的访问。 ① 创建network docker network create docker-network ②容器连接到network 运行新的容器,并加入到docker-network网络中 docker run --name docker-nginx -d --network docker-network --network-alias nginx-network nginx 解释: // --network 表示这个容器要连接到的网络 // --network-alias 表示这个容器在此网络中的名称,也可以使用--ip来指定容器的ip // 已经在运行的容器加入网络使用以下命令 docker network connect --alias nginx-network docker-network docker-nginx docker network connect --alias wp-network docker-network docker-wordpress 解释: // docker network connect [OPTIONS] NETWORK CONTAINER --alias 为容器添加网络范围的别名 ③容器之间的访问: 使用 nginx 作为反向代理来访问 wordpress(wp-network),可直接修改 nginx 的配置文件,设置代理的主机地址为 wp-network 即可,( wp-network 为容器在network中的名称)如下 location / { proxy_pass http://wp-network:80/; } // 注意:这里的80端口为wordpress镜像暴露的端口,(即DockerFile中expose的端口), // 并不是映射到主机的端口。(其实也没必要映射端口了)
参考:
https://juejin.im/post/6844903847383547911
https://cloud.tencent.com/developer/article/1493140 (推荐)
https://cloud.tencent.com/developer/article/1110563