docker容器网络:redis和自定义图像

brqmpdu1  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(419)

我正在努力连接两个集装箱服务。具体来说,我想使用redis服务器(https://hub.docker.com/_/redis/)在一个容器中运行: docker run -d --name my_redis_server redis 自定义图像的运行方式如下: docker run -p 8888:8888 --mount type=bind,source=<my_folder>,target=/data/ my_container 使用以下dockerfile和docker-compose.yml生成:
dockerfile文件

FROM ubuntu

ENV PATH="/root/miniconda3/bin:${PATH}"
ARG PATH="/root/miniconda3/bin:${PATH}"

# Updates and tools

RUN apt-get update && \
    apt-get install -y gcc make apt-transport-https ca-certificates build-essential git redis-server

RUN apt-get install -y wget && rm -rf /var/lib/apt/lists/*

RUN wget \
    https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
    && mkdir /root/.conda \
    && bash Miniconda3-latest-Linux-x86_64.sh -b \
    && rm -f Miniconda3-latest-Linux-x86_64.sh 

RUN conda --version

# Create conda environment

RUN conda create python=3.6 --name my_env

# Run in a new shell

RUN /bin/bash -c "activate my_env"
RUN <Install some packages>
RUN conda install -c conda-forge jupyterlab -y
RUN conda install -c anaconda redis

# The code to run when the container is started:

# Entrypoint

WORKDIR /data/
ENTRYPOINT ["jupyter", "notebook", "--ip=0.0.0.0", "--no-browser", "--allow-root"]

docker-compose.yml公司

version: '2.3'

services:
   my_container:
     container_name: my_container_env
     build: ./
     restart: always
     ports:
      - '8888:8888'

根据我的理解,我应该可以从 my_container (特别是朱庇特)到 my_redis_server 通过使用内部网桥ip(即172.17.0.x)或docker dns名称(即我的\u redis \u服务器),在这两种情况下都使用标准的redis映像端口6379。
不幸的是,这对我不起作用。。。我错过了什么?
谢谢大家!
系统:windows 10-docker 2.3.0.2
附加说明:
我确实试过(作为绕场演练)改变方法并从 my_container 运行我的\容器到本地主机redis服务器(编译的win版本),如下所示: docker run -p 8888:8888 -p 6379:6379 --mount type=bind,source=<my_folder>,target=/data/ my_container 从容器内的jupyter连接到本地主机 127.0.0.1:6379 ,这也不起作用。

c0vxltue

c0vxltue1#

你还没有指定你到底在使用哪种方法。在这两种情况下,问题都是因为网络没有被定义。在 docker run 方法,您需要使用 --network=<network_name> . 此网络可以是默认网桥网络、用户定义网桥网络、主机网络或无。确定要用什么,因为它们都有各自的目的和缺点。
docker-compose 我相信你还在用 docker run 以及 my_container 在docker compose中,这导致两个容器连接到不同的网络。所以在这里,您需要使用相同的compose运行redis。
更新docker compose:

version: '2.3'

services:
   my_container:
     container_name: my_container_env
     build: ./
     restart: always
     ports:
      - '8888:8888'
   redis:
     container_name: my_redis_server
     restart: always
     ports:
      - 6379:6379

参考文献:
网络概述
使用桥接网络
compose中的网络

相关问题