2017-11-16 3 views
0

에서 작동 :도커 이미지에 CentOS에 실패하지만 다음 Dockerfile을 사용하고 맥 OS

FROM centos 
RUN yum -y -q install epel-release && yum -y -q update && yum clean all \ 
&& yum -y -q install python-pip 
COPY requirements.txt /tmp/ 
RUN pip install -q pyvmomi==6.5.0.2017.5.post1 

이 고정 표시기 17.09.0-ce를 사용하여 맥 OS에서 잘 작동합니까 있지만 고정 표시기 17.11.0-ce-rc3과에 CentOS를 사용하지 않는 이유를 확실하지. pip 설치에 오류가 있습니다.이 예제에서는 pyvmomi을 사용하지만 다른 패키지와 비슷한 오류가 있습니다.

Step 3/3 : RUN pip install pyvmomi==6.5.0.2017.5.post1 
---> Running in 49d94b300e7f 
Collecting pyvmomi==6.5.0.2017.5.post1 
    Downloading pyvmomi-6.5.0.2017.5-1.tar.gz (252kB) 
Collecting requests>=2.3.0 (from pyvmomi==6.5.0.2017.5.post1) 
    Downloading requests-2.18.4-py2.py3-none-any.whl (88kB) 
Collecting six>=1.7.3 (from pyvmomi==6.5.0.2017.5.post1) 
    Downloading six-1.11.0-py2.py3-none-any.whl 
Collecting certifi>=2017.4.17 (from requests>=2.3.0->pyvmomi==6.5.0.2017.5.post1) 
    Downloading certifi-2017.11.5-py2.py3-none-any.whl (330kB) 
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.3.0->pyvmomi==6.5.0.2017.5.post1) 
    Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB) 
Collecting idna<2.7,>=2.5 (from requests>=2.3.0->pyvmomi==6.5.0.2017.5.post1) 
    Downloading idna-2.6-py2.py3-none-any.whl (56kB) 
Collecting urllib3<1.23,>=1.21.1 (from requests>=2.3.0->pyvmomi==6.5.0.2017.5.post1) 
    Downloading urllib3-1.22-py2.py3-none-any.whl (132kB) 
Installing collected packages: certifi, chardet, idna, urllib3, requests, six, pyvmomi 
    Found existing installation: chardet 2.2.1 
    Uninstalling chardet-2.2.1: 
Exception: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main 
    status = self.run(options, args) 
    File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 326, in run 
    strip_file_prefix=options.strip_file_prefix, 
    File "/usr/lib/python2.7/site-packages/pip/req/req_set.py", line 736, in install 
    requirement.uninstall(auto_confirm=True) 
    File "/usr/lib/python2.7/site-packages/pip/req/req_install.py", line 742, in uninstall 
    paths_to_remove.remove(auto_confirm) 
    File "/usr/lib/python2.7/site-packages/pip/req/req_uninstall.py", line 115, in remove 
    renames(path, new_path) 
    File "/usr/lib/python2.7/site-packages/pip/utils/__init__.py", line 267, in renames 
    shutil.move(old, new) 
    File "/usr/lib64/python2.7/shutil.py", line 299, in move 
    rmtree(src) 
    File "/usr/lib64/python2.7/shutil.py", line 256, in rmtree 
    onerror(os.rmdir, path, sys.exc_info()) 
    File "/usr/lib64/python2.7/shutil.py", line 254, in rmtree 
    os.rmdir(path) 
OSError: [Errno 39] Directory not empty: '/usr/lib/python2.7/site-packages/chardet' 

동일한 이미지가 다른 운영 체제에서 빌드되지 않는 이유는 무엇입니까? 또한 우분투를 도커 이미지로 사용해 보았고 둘 다 완벽하게 작동합니다. 감사합니다. .

+2

에 사용 같은'centos' 이미지? 'docker 이미지 사용 | grep centos'를 사용하여 동일한 해시를 가지고 있는지 확인합니다. – kichik

+0

파이썬 기본 이미지 만 사용해 본 적이 있습니까? –

+1

항상 기본 이미지에 태그를 사용하십시오. 기본 이미지는 "최신"이 아닌 것이 좋습니다. – jordanm

답변

0

이 오류는 가 epel package listepel-release에 의해 설치된 chardet 패키지와 pyvmomi의 특정 버전에서 필요로하는 하나 사이에 충돌이 발생합니다.

epel-release 상류 패키지 verions 인해 변화에 yum -q install python2-pyvmomi

이 오류의 비 결정적 모습이 될 것입니다 즉,이 충돌을 방지하기 위해 OS 패키지 버전을 사용하고 그 모두를 사용하고 pip install