python和docker交互_获取python docker容器以与redis docker容器交互

我对Docker、Redis和任何类型的网络都不熟悉(至少我了解Python!)。首先,我了解了如何获取Redis Docker映像并在Docker容器中运行它:

docker run --name some-redis -d redis

据我所知,这个redis实例有6379端口可用于连接到其他容器。

docker network inspect bridge

"Containers": {

"2ecceba2756abf20d5396078fd9b2ecf0d60ab04ca6b8df5e1b631b6fb5e9a85": {

"Name": "some-redis",

"EndpointID": "09f0069dae3632a2456cb4d82ad5e7c9782a2b58cb7a4ee655f57b5c410c3e87",

"MacAddress": "02:42:ac:11:00:02",

"IPv4Address": "172.17.0.2/16",

"IPv6Address": ""

}

如果我运行以下命令,我可以与redis实例交互并生成key:value对:

docker run -it --link some-redis:redis --rm redis redis-cli -h redis -p 6379

set 'a' 'abc'

>OK

get 'a'

>"abc"

quit

我已经了解了如何在安装了Redis库的情况下创建和运行Docker容器,该库将运行python脚本,如下所示:

这是我的文件:

FROM python:3

ADD redis_test_script.py /

RUN pip install redis

CMD [ "python", "./redis_test_script.py" ]

这里是redis_test_script.py:

import redis

print("hello redis-py")

构建Docker图像:

docker build -t python-redis-py .

如果运行以下命令,脚本将在其容器中运行:

docker run -it --rm --name pyRed python-redis-py

并返回预期值:

>hello redis-py

似乎两个容器都工作正常,问题是将它们连接在一起,我希望最终使用python在redis容器上执行操作。如果我按如下方式修改脚本并重新生成python容器的图像,则会失败:

import redis

print("hello redis-py")

r = redis.Redis(host="localhost", port=6379, db=0)

r.set('z', 'xyz')

r.get('z')

我有几个错误:

...

OSError: [Errno 99] Cannot assign requested address

...

redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

.....

看起来他们没有连接,我在python脚本中再次尝试使用bridge ip:

r = redis.Redis(host="172.17.0.0/16", port=6379, db=0)

然后得到这个错误:

redis.exceptions.ConnectionError: Error -2 connecting to 172.17.0.0/16:6379. Name or service not known.

我尝试了Redis子IP:

r = redis.Redis(host="172.17.0.2/16", port=6379, db=0)

我得到这个错误:

redis.exceptions.ConnectionError: Error -2 connecting to 172.17.0.2/16:6379. Name or service not known.

我觉得我从根本上误解了如何让容器彼此交谈。我已经阅读了很多文档和教程,但是正如我所说,我没有网络经验,以前也没有使用过Docker,所以任何有用的解释和/或解决方案都会非常棒。

多谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值