docker in python安装&使用过程中问题记录
1.Docker-client for python
查找各种资料以及开源代码,很多使用时的写法如下
from docker import Client client=Client(base_url='unix://var/run/docker.sock’)
但始终会报错找不到Client这个文件,&自己zai 相应的Docker目录下找的时候也没有找到Client.py这个文件
摸索好一阵子,终于找到了一个靠谱的文档:https://my.oschina.net/xxbAndy/blog/872487
原因是:`docker.Client`被替换成`docker.APIClient`,所以现在的正确用法是:
from docker import APIClient client = APIClient(base_url="unix://var/run/docker.sock")
2.Python pip升级后报错 sys.stderr.write(f"ERROR: {exc}")
这个问题是由于pip21.0已经停止对Python2.7的支持,因此如果需要继续使用python2.7,就不能升级到最新的pip版本
解决办法来源:https://www.cjavapy.com/article/1605/
pip install --upgrade "pip < 21.0" 或者 curl https://bootstrap.pypa.io/2.7/get-pip.py --output get-pip.py
如果已经升级到了21.0,那么使用pip降级的时候就会直接报错,这时需要先把原来的pip卸载掉。
sudo apt-get remove --purge python-pip sudo apt-get autoremove sudo rm -f /usr/local/bin/pip sudo easy_install pip==20.3.4 pip --version
但是这样安装两次,可能会混乱,导致使用pip安装包时,提示“/usr/bin/pip: No such file or directory”
// 查看pip安装在了哪里 ly@ubuntu:~$ whereis pip pip: /usr/local/bin/pip /usr/local/bin/pip2.7 // 建立软链接 ly@ubuntu:~$ sudo ln /usr/local/bin/pip /usr/bin/pip
3.拉取Docker镜像时,报错error pulling image configuration: Get https://registry-1.docker.io/v2/library/redis/blobs/sha256:7e
因为国内网络问题,无法连接到docker hub,解决办法是,修改国内的镜像地址
# 打开文件 vim /etc/docker/daemon.json # 修改为 { "registry-mirrors":["https://y0qd3iq.mirror.aliyuncs.com"] } # 重启Docker服务 systemctl restart docker
4.Docker的python库API安装
// 安装pip # apt-get install python-pip python-dev build-essential # pip install --upgrade pip // 安装docker模块 // 使用pip则对应的是python2,pip3对应python3 # pip install docker-py
使用pip安装模块时,报错ReadTimeoutError: HTTPSConnectionPool
切换成为国内源
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple module_name 或 # pip install -i https://pypi.douban.com/simple module_name
或者直接将pip源配置为阿里云的镜像源或者豆瓣源
pip的配置文件为~/.pip/pip.conf,默认不存在,手动创建
# vim ~/.pip/pip.conf // 文件中的具体内容 [global] trusted-host = mirrors.aliyun.com index-url = http://mirrors.aliyun.com/pypi/simple
如果切换镜像源后安装软件包时报错Cannot fetch index base URL
通过代理进行安装
# pip --proxy=http://username:passwd@proxy_host install module_name