• docker-compose 安装以及遇到的错误解决


    今天在编译一个docker项目到时候,遇到了很多问题。记录一下

    架构:Python+Django+bootstrap+SaltStack+Zabbix+MySQL

    1 bash: docker-compose: command not found...

    [root@localhost mysite]# docker-compose build
    bash: docker-compose: command not found...
    [root@localhost mysite]# pip -V
    bash: pip: command not found...
    [root@localhost opt]# pip -V
    pip 20.1.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
    [root@localhost opt]# pip install docker-compose
    ERROR: jsonschema 3.2.0 has requirement six>=1.11.0, but you'll have six 1.9.0 which is incompatible.
    [root@localhost mysite]# pip install six --user -U
    ImportError: No module named configparser

    很多关于configparser,说是python 3.x修改了名字

    [root@localhost mysite]# pip uninstall docker-compose
    [root@localhost mysite]# pip install docker-compose
    [root@localhost mysite]# docker-compose --version
    [root@localhost mysite]# find / -name docker-compose
    /usr/bin/docker-compose
    [root@localhost mysite]# docker-compose --version
    Traceback (most recent call last):
      File "/usr/bin/docker-compose", line 5, in <module>
        from compose.cli.main import main
      File "/usr/lib/python2.7/site-packages/compose/cli/main.py", line 24, in <module>
        from ..config import ConfigurationError
      File "/usr/lib/python2.7/site-packages/compose/config/__init__.py", line 6, in <module>
        from .config import ConfigurationError
      File "/usr/lib/python2.7/site-packages/compose/config/config.py", line 51, in <module>
        from .validation import match_named_volumes
      File "/usr/lib/python2.7/site-packages/compose/config/validation.py", line 12, in <module>
        from jsonschema import Draft4Validator
      File "/usr/lib/python2.7/site-packages/jsonschema/__init__.py", line 33, in <module>
        import importlib_metadata as metadata
      File "/usr/lib/python2.7/site-packages/importlib_metadata/__init__.py", line 16, in <module>
        from ._compat import (
      File "/usr/lib/python2.7/site-packages/importlib_metadata/_compat.py", line 20, in <module>
        from backports.configparser import ConfigParser
    ImportError: No module named configparser
    [root@localhost mysite]# find / -name docker-compose
    /usr/bin/docker-compose
    [root@localhost mysite]# find / -name ConfigParser
    [root@localhost mysite]# find / -name configparser
    [root@localhost mysite]# python -V
    Python 2.7.5
    [root@localhost mysite]# python -c 'import six; print(six.__version__)'
    1.15.0
    [root@localhost mysite]# python -c 'import six.moves; print(dir(six.moves))'
    --pip install --user pytz requests tqdm tzlocal python-dateutil
    --pip install configparser

    还是不行,于是把python2换成python3.6试试

    [root@localhost Python-3.6.0]# ./configure --enable-shared --prefix=/usr/local/python36/
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    checking for python3.6... no
    checking for python3... no
    checking for python... python
    checking for --enable-universalsdk... no
    checking for --with-universal-archs... no
    checking MACHDEP... linux
    checking for --without-gcc... no
    checking for --with-icc... no
    checking for gcc... no
    checking for cc... no
    checking for cl.exe... no
    configure: error: in `/opt/Python-3.6.0':
    configure: error: no acceptable C compiler found in $PATH
    See `config.log' for more details
    [root@localhost Python-3.6.0]# yum install gcc -y
    [root@localhost Python-3.6.0]# make && make install
    zipimport.ZipImportError: can't decompress data; zlib not available
    make: *** [install] Error 1
    [root@localhost Python-3.6.0]# yum -y install zlib*
    再次运行make && make install 即可
    [root@localhost ~]# which python
    /usr/bin/python
    [root@localhost ~]# ll /usr/bin/python*
    lrwxrwxrwx. 1 root root    7 Jul 16 22:00 /usr/bin/python -> python2
    lrwxrwxrwx. 1 root root    9 Jul 16 22:00 /usr/bin/python2 -> python2.7
    -rwxr-xr-x. 1 root root 7136 Aug  3  2017 /usr/bin/python2.7
    [root@localhost ~]# rm /usr/bin/python
    [root@localhost ~]# ln -s /usr/local/python36/bin/python3.6 /usr/bin/python
    [root@localhost ~]# python -V
    python: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
    [root@localhost ~]# ll /usr/local/python36/lib/libpython3.6m.so.1.0 
    -r-xr-xr-x. 1 root root 12331440 Jul 17 03:19 /usr/local/python36/lib/libpython3.6m.so.1.0
    [root@localhost ~]# cp /usr/local/python36/lib/libpython3.6m.so.1.0 /usr/lib64/
    [root@localhost ~]# python -V
    Python 3.6.0
    [root@localhost opt]# pip --version
    Traceback (most recent call last):
      File "/usr/bin/pip", line 5, in <module>
        from pip._internal.cli.main import main
    ModuleNotFoundError: No module named 'pip._internal'
    [root@localhost opt]# pip install -U pip //sudo easy_install --upgrade pip
    Traceback (most recent call last):
      File "/usr/bin/pip", line 5, in <module>
        from pip._internal.cli.main import main
    ModuleNotFoundError: No module named 'pip._internal'
    [root@localhost opt]# which pip
    /usr/bin/pip
    [root@localhost opt]# vim /usr/bin/yum
    将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可
    [root@localhost opt]# yum install  python3-pip
    Downloading packages:
      File "/usr/libexec/urlgrabber-ext-down", line 28
        except OSError, e:
    [root@localhost opt]# vim /usr/libexec/urlgrabber-ext-down
    将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可    
    [root@localhost opt]# ll /usr/bin/pip*
    -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip
    -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip2
    -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip2.7
    [root@localhost opt]# yum install  python3-pip -y
    [root@localhost opt]# ll /usr/bin/pip*
    -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip
    -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip2
    -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip2.7
    -rwxr-xr-x. 1 root root 407 Mar 17 19:38 /usr/bin/pip3
    lrwxrwxrwx. 1 root root   9 Jul 17 03:35 /usr/bin/pip-3 -> ./pip-3.6
    lrwxrwxrwx. 1 root root   8 Jul 17 03:35 /usr/bin/pip-3.6 -> ./pip3.6
    -rwxr-xr-x. 1 root root 407 Mar 17 19:38 /usr/bin/pip3.6
    [root@localhost opt]# pip3 -V
    pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

    安装docker-compose

    方法1(在线安装,网络问题)
    # yum -y install libcurl libcurl-devel
    # curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    # chmod +x /usr/local/bin/docker-compose
    # docker-compose --version
    
    方法2 
    安装python-pip
    yum -y install epel-release
    yum -y install python-pip
    安装docker-compose
    pip install docker-compose
    pip install -U docker-compose==1.23.2
    
    方法3 离线安装
    https://github.com/docker/compose/releases/tag/1.23.2
    下载安装包docker-compose-Linux-x86_64
    [root@localhost opt]# mv docker-compose-Linux-x86_64  /usr/local/bin/docker-compose
    mv: overwrite ‘/usr/local/bin/docker-compose’? y
    [root@localhost opt]# chmod +x /usr/local/bin/docker-compose
    [root@localhost opt]# docker-compose --version
    Traceback (most recent call last):
      File "/usr/bin/docker-compose", line 5, in <module>
        from compose.cli.main import main
    ModuleNotFoundError: No module named 'compose'

    问题依旧:

    以使用国内的pip源进行加速
    [root@localhost opt]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -U docker-compose
    [root@localhost opt]# docker-compose --version
    docker-compose version 1.26.2, build unknown
    [root@localhost mysite]# docker-compose build
    pip._vendor.requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn', port=443): Read timed out.
    You are using pip version 9.0.1, however version 20.1.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    ERROR: Service 'web' failed to build: The command '/bin/sh -c pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt' returned a non-zero code: 2
    修改文件/mysite/Dockerfile
    把pip修改为pip3
    pip._vendor.requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn', port=443): Read timed out.
    ERROR: Service 'web' failed to build: The command '/bin/sh -c pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt' returned a non-zero code: 2
    [root@localhost mysite]# pip3 --default-timeout=100 install -U pip
    [root@localhost mysite]# docker-compose build ##执行成功
    [root@localhost mysite]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mysite_web          latest              8f76bc36af1b        7 minutes ago       867 MB
    docker.io/mysql     latest              6e447ce4863d        3 days ago          544 MB
    docker.io/python    3.6.0               a1782fa44ef7        3 years ago         687 MB
    docker.io/django    1.9.5               c5b6e7c5c44c        4 years ago         433 MB
    [root@localhost mysite]# docker-compose run web django-admin.py startproject webserver ./DjangoWeb
    Creating mysite_db_1 ... done
        with open(new_path, 'wb') as new_file:
    PermissionError: [Errno 13] Permission denied: '/code/DjangoWeb/manage.py' ###The problem was with SELinux enabled on centos 7.
    
    [root@localhost DjangoWeb]# vim /etc/selinux/config
    [root@localhost DjangoWeb]# getenforce
    Enforcing
    [root@localhost DjangoWeb]# setenforce 0
    [root@localhost DjangoWeb]# getenforce
    Permissive
    [root@localhost DjangoWeb]# docker-compose run web django-admin.py startproject webserver ./DjangoWeb
    Starting mysite_db_1 ... done
    [root@localhost DjangoWeb]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS                 NAMES
    402e7e3c3a51        mysite_web          "django-admin.py s..."   About a minute ago   Exited (0) About a minute ago                         mysite_web_run_1155b6d3892c
    429d164feb1f        mysite_web          "django-admin.py s..."   5 minutes ago        Exited (1) 5 minutes ago                              mysite_web_run_b00ff320f226
    0f7ed906ee56        mysite_web          "django-admin.py s..."   6 minutes ago        Exited (1) 6 minutes ago                              mysite_web_run_4d1a59a80e82
    afed01a08c0a        mysite_web          "django-admin.py s..."   15 minutes ago       Exited (1) 15 minutes ago                             mysite_web_run_6ac17fcdc847
    436c584720a5        mysql               "docker-entrypoint..."   15 minutes ago       Up About a minute               3306/tcp, 33060/tcp   mysite_db_1
    7dd3c70e6dad        21dceb2c4044        "/bin/sh -c 'pip3 ..."   33 minutes ago       Exited (2) 31 minutes ago                             trusting_goldberg
    a228801885f4        21dceb2c4044        "/bin/sh -c 'pip i..."   37 minutes ago       Exited (2) 36 minutes ago                             keen_mcnulty
  • 相关阅读:
    Win10+Ubuntu18.04 UEFI启动模式SSD+HDD
    Chap1:全景图[Computer Science Illuminated]
    [IDE] ECLIPSE取消自动更新
    [Unit Test] Unit Test Brief Introduction
    [ English ] 俚语 “Ping me=打我电话”
    Some Useful Resources for the Future Usage
    python错误记录
    django-用户认证模型
    Djiango-富文本编辑器
    Djiango-建立模型抽象基类
  • 原文地址:https://www.cnblogs.com/yhq1314/p/13331345.html
Copyright © 2020-2023  润新知