2016-02-12 34 views
0

我有以下Dockerfile(它有點剝離下來,在此顯示的核心要素)使用pytz如泊塢與高山Linux的非根原因「IO錯誤:[錯誤13]許可被拒絕」

FROM alpine:latest 

RUN adduser -D some_user_name &&\ 
    apk add --update alpine-sdk &&\ 
    apk add --update python-dev &&\ 
    apk add --update py-dateutil &&\ 
    apk add --update py-tz 

USER some_user_name 

CMD ["/bin/sh"] 

我然後運行這個圖像通過以下方式

docker run -d\ 
      -w /home/some_user_name/python/\ 
      -v ~/dockerfiles/mount_this/python:/home/some_user_name/python\ 
      --hostname docker-test --name dock-test\ 
      alpine/01\ 
      python executor.py settings:docker-lean 

立即容器出口,docker logs顯示以下錯誤

File "/home/some_user_name/python/executor_handler.py", line 23, in <module> 
    import pytz 
    File "/usr/lib/python2.7/site-packages/pytz/__init__.py", line 29, in <module> 
    from pkg_resources import resource_stream 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3141, in <module> 
    @_call_aside 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3127, in _call_aside 
    f(*args, **kwargs) 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3154, in _initialize_master_working_set 
    working_set = WorkingSet._build_master() 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 631, in _build_master 
    ws = cls() 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 624, in __init__ 
    self.add_entry(entry) 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 680, in add_entry 
    for dist in find_distributions(entry, True): 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2122, in find_on_path 
    path_item, entry, metadata, precedence=DEVELOP_DIST 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2521, in from_location 
    py_version=py_version, platform=platform, **kw 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2838, in _reload_version 
    md_version = _version_from_file(self._get_metadata(self.PKG_INFO)) 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2486, in _version_from_file 
    line = next(iter(version_lines), '') 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2654, in _get_metadata 
    for line in self.get_metadata_lines(name): 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1623, in get_metadata_lines 
    return yield_lines(self.get_metadata(name)) 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1615, in get_metadata 
    return self._get(self._fn(self.egg_info, name)) 
    File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1726, in _get 
    with open(path, 'rb') as stream: 
IOError: [Errno 13] Permission denied: '/usr/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg-info/PKG-INFO' 

當我通過將-u root選項添加到docker run命令來運行映像爲root時,則python腳本成功執行,但我真的不想以root身份運行該容器。

我能做些什麼來解決這個問題?

回答

0

好吧,我加

RUN python -c "import pytz;" &&\ 
    chmod 644 /usr/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg-info/PKG-INFO 

到Dockerfile以便它弄成這個樣子:

FROM alpine:latest 

RUN adduser -D some_user_name &&\ 
    apk add --update alpine-sdk &&\ 
    apk add --update python-dev &&\ 
    apk add --update py-dateutil &&\ 
    apk add --update py-tz 

RUN python -c "import pytz;" &&\ 
    chmod 644 /usr/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg-info/PKG-INFO 

USER some_user_name 

CMD ["/bin/sh"] 

雖然這解決了這個問題,這可能是一些需要得到固定在pytz

相關問題