社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker py如何使用from_env()从容器访问Docker主机

user18140022 • 3 年前 • 1243 次点击  

我在一个容器内,我想从Docker机器/主机上抓取一个容器。我通常会在本地机器上执行此操作,但通过docker容器它会给我一个错误:

client = docker.from_env()
client.containers.get('myPostgres')

吐出:

AttributeError: 'function' object has no attribute 'get'
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129394
 
1243 次点击  
文章 [ 1 ]  |  最新文章 3 年前
larsks
Reply   •   1 楼
larsks    3 年前

默认情况下,容器将无法访问主机Docker服务(这是一项安全功能:访问Docker与 root 访问权限,因此您只希望在特定情况下公开此访问权限)。

如果要从容器中访问主机的Docker服务,需要将Docker套接字映射到容器中。一般来说,这意味着运行以下操作:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

比较:

$ docker run --rm -it docker.io/python:3.10 bash
$ pip install docker
[...]
$ python
root@2dfed359374e:/# python
Python 3.10.3 (main, Mar 18 2022, 16:01:59) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import docker
>>> c = docker.from_env()
Traceback (most recent call last):
[...]
FileNotFoundError: [Errno 2] No such file or directory

有了这个:

$ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock docker.io/python:3.10 bash
root@ebe430bc9463:/# pip install docker
[...]
root@ebe430bc9463:/# python
Python 3.10.3 (main, Mar 18 2022, 16:01:59) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import docker
>>> c = docker.from_env()
>>> c.containers.list()
[<Container: ebe430bc94>, <Container: 91f24628fd>]