吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 815|回复: 26
收起左侧

[求助] docker容器怎么实现相互访问

[复制链接]
wuqingvika 发表于 2023-7-18 14:14
本帖最后由 wuqingvika 于 2023-7-18 15:08 编辑

大佬们 ,帮我看看哪里不对

场景:以前docker容器间用的ip访问的 但后来需要改成容器名调用,所以我使用 docker network create  创建了 qwu-ywbdwebnetwork  我的前端 应用
docker run -dit -p 端口1:80 --name ywbd-vue --network qwu-ywbdwebnetwork  私有仓库地址:端口/ywbdprod/ywbd-vue:v1.3_wq
我的后端 应用启动
docker run -dit  -p 端口2:8383 --name ywbd-admin --network qwu-ywbdwebnetwork  私有仓库地址:端口/ywbdprod/ywbd-admin:v1.3_wq



我的前端nginx
配置
image.png
求助哪里不对呢 改成端口是可以的 但是直接这样nginx报【502】 然后直接在宿主机用Ping ywbd-admin也不行 在容器里使用ping和wget没有这个命令。。



[Asm] 纯文本查看 复制代码
version: '3'

services:
  ywbd-admin:
    image: registry.local:5000/ywbdprod/ywbd-admin:${YWBDWEB_VERSION}
    container_name: ywbd-admin
    build:
      context: ./ywbdadmin  # 构建上下文为 Dockerfile 所在的目录
     # context: ./data01/wqtest/ywbdwebzsuijardocker/appzs
      dockerfile: Dockerfile
    ports:
      - "8686:8383"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - "/data01/wqtest/ywbdwebzsuijardocker/appzs:/app"
      - "/home/qwu/ywbdweblog/test:/logs"

  ywbd-vue:
    image: registry.local:5000/ywbdprod/ywbd-vue:${YWBDWEB_VERSION}
    container_name: ywbd-vue
    build:
      context: ./ywbdvue
      dockerfile: Dockerfile
    ports:
      - "60086:80"
    environment:
      - TZ=Asia/Shanghai

networks:
  default:
    external:
      name: ywbd-admin


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

天王盖地虎a 发表于 2023-7-18 14:20
可以run的时候加--network=host参数,让容器和宿主机共享网络
 楼主| wuqingvika 发表于 2023-7-18 14:32
天王盖地虎a 发表于 2023-7-18 14:20
可以run的时候加--network=host参数,让容器和宿主机共享网络

可用host 端口不是不固定了吗
loveqianool 发表于 2023-7-18 14:34
sgbyg 发表于 2023-7-18 14:34
# 1.启动ywbd-vue开放两个端口
docker run -dit \
-p 端口1:80 \
-p 端口2:8383 \
--name ywbd-vue 私有仓库地址:端口/ywbdprod/ywbd-vue:v1.3_wq

# 2.启动ywbd-admin与ywbd-vue共享端口
docker run -dit \
--net container:ywbd-vue \
--name ywbd-admin 私有仓库地址:端口/ywbdprod/ywbd-admin:v1.3_wq
 楼主| wuqingvika 发表于 2023-7-18 14:39
loveqianool 发表于 2023-7-18 14:34
端口2:8383

为啥 nginx 要填 8686 呢?

8686是端口2 真实是8686:8383
jidesheng6 发表于 2023-7-18 14:39

你应该换dockercompose来配置network,然后用容器名称来访问

version: "3.5" #版本号

services: #定义服务
 wscp-nginx: #定义第一个nginx服务名称
  image: wscp-nginx #定义镜像
  networks: #设置网络
   - wscp-network #加入wscp-network进行互联
  ports:#映射容器内部端口
   - "8080:80"
  container_name: wscp-nginx#定义容器名称 
  depends_on:#容器需要在wscp-back启动后再进行启动
   - wscp-back

 wscp-redis:#redis服务
  image: wscp-redis#使用redis镜像
  networks:#加入wscp-network网络
   - wscp-network
  container_name: wscp-redis#设置容器名称

 wscp-back:#主要的java程序服务
  image: wscp-back#本地java程序镜像
  container_name: wscp-back#容器名称
  volumes:#挂载容器目录到本地目录,左边本地;右边容器
   - "./download_temp:/wscp_project/back_end/download_temp"
   - "./upload_formal:/wscp_project/back_end/upload_formal"
  networks:#加入wscp-network网络
   - wscp-network

networks:#添加一个新网络
 wscp-network:#网络名称为wscp-network
  driver: bridge#使用桥接方式

上面这个例子,全局networks加了一个wscp-network,然后在其他容器上面加入wscp-network

这样三个容器会在各自的hosts文件中自动添加解析,比如wscp-back就会添加wascp-back 10.2.1.1

你不放心的话可以直接进容器内部ping某个容器名称检验就知道了,但是一定要注意,nginx的容器一定要最后再启动

loveqianool 发表于 2023-7-18 14:41
wuqingvika 发表于 2023-7-18 14:39
8686是端口2 真实是8686:8383

内部互访 填内部端口
 楼主| wuqingvika 发表于 2023-7-18 14:48
sgbyg 发表于 2023-7-18 14:34
# 1.启动ywbd-vue开放两个端口
docker run -dit \
-p 端口1:80 \

也不行么 前端 的容器起来会报2023/07/18 06:46:48 [emerg] 1#1: host not found in upstream "ywbd-admin" in /etc/nginx/nginx.conf:32
nginx: [emerg] host not found in upstream "ywbd-admin" in /etc/nginx/nginx.conf:32
 楼主| wuqingvika 发表于 2023-7-18 14:51
jidesheng6 发表于 2023-7-18 14:39
[md]你应该换dockercompose来配置network,然后用容器名称来访问

```yaml

我们dockercompose在服务器A上弄好了镜像上传到私有库的 再去另一台服务器B 拉取私有仓库的镜像 所以在服务器B上我直接用的docker run 分开执行的  也可以用同一个dockercompose文件吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表