• docker 容器 aptget: not found ,Permission denied


    问题产生原因分析

    1. 系统不支持

    The apt-get command only works on Debian, Ubuntu, and its derivatives. If you are trying to install rpm-based operating systems such as Fedora, RHEL and CentOS, the command will not work. As a result, you will receive the error.

    apt-get 仅支持

    • Debian
    • Ubuntu
    • Mint
    • Kali

    2. 系统支持但是apt-get 未安装

    • 下载 apt.deb 安装包
      wget http://security.ubuntu.com/ubuntu/pool/main/a/apt/apt_2.5.0_amd64.deb
    • 如果该版本未找到,可以到网址查看可下载版本
      http://security.ubuntu.com/ubuntu/pool/main/a/apt/
    • 安装 apt.deb
      sudo dpkg -i apt_1.4_amd64.deb

    3. 查看系统名称

    cat /etc/*-release
    我的容器查看

    4. alpine 系统

    4.1 简介

    Small. Simple. Secure.Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.
    Alpine Linux 是一个社区开发的面向安全应用的轻量级Linux发行版。 Alpine 的意思是“高山的”,它采用了musl libc和busybox以减小系统的体积和运行时资源消耗,同时还提供了自己的包管理工具apk。

    4.2 适用环境
    由于其小巧、安全、简单以及功能完备的特点,被广泛应用于众多Docker容器中。我司目前使用的基础镜像均是基于该系统,dockerhub上有提供各种语言的基础镜像.如:node:8-alpine、python:3.6-alpine,同时也可以基于alpine镜像制作符合自己需求的基础镜像。

    4.3 apk包管理
    apk --help可以查看完整的包管理命令

     apk-tools 2.10.4, compiled for x86_64.
    
    Installing and removing packages:
      add       Add PACKAGEs to 'world' and install (or upgrade) them, while ensuring that all dependencies are met
      del       Remove PACKAGEs from 'world' and uninstall them
    
    System maintenance:
      fix       Repair package or upgrade it without modifying main dependencies
      update    Update repository indexes from all remote repositories
      upgrade   Upgrade currently installed packages to match repositories
      cache     Download missing PACKAGEs to cache and/or delete unneeded files from cache
    
    Querying information about packages:
      info      Give detailed information about PACKAGEs or repositories
      list      List packages by PATTERN and other criteria
      dot       Generate graphviz graphs
      policy    Show repository policy for packages
    
    Repository maintenance:
      index     Create repository index file from FILEs
      fetch     Download PACKAGEs from global repositories to a local directory
      verify    Verify package integrity and signature
      manifest  Show checksums of package contents
    
    Use apk <command> --help for command-specific help.
    Use apk --help --verbose for a full command listing.
    

    4.3.1 Alpine apk 安装

    • (Docker)Alpine apk设置国内源

    sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

    • 4.3.2 安装

    apk add packagename

    **4.3.3 Permission denied 问题: **

    /opt/www $ apk add vim ERROR: Unable to lock database: Permission denied ERROR: Failed to open apk database: Permission denied
    4.4 登录docker的用户权限不足,退出docker 容器,重新进入容器加参数 -u root 登录

    sudo docker exec -u root -it flask_glt sh

    5 结语

    Alpine以其小巧、简单在docker容器中得到了广泛的应用。但是Alpine Linux使用了musl,可能和其他Linux发行版使用的glibc实现会有些不同。这里主要介绍了它的基础用法,但是足以满足日常运维需要。毕竟在kubernetes集群中操作容器内环境较直接在虚拟机或者物理机上操作更为复杂,由于缩减的容器的大小,导致和CentOS或Ubuntu相比缺少许多功能。而缺少的这些功能又不想在基础镜像中安装导致容器变大,这个时候就可以在容器运行后,根据实际需要安装即可。

  • 相关阅读:
    LeetCode 965. Univalued Binary Tree
    LeetCode 961. N-Repeated Element in Size 2N Array
    LeetCode 832. Flipping an Image
    语法设计——基于LL(1)文法的预测分析表法
    简单的词法设计——DFA模拟程序
    LeetCode 905. Sort Array By Parity
    LeetCode 804. Unique Morse Code Words
    【原创】用事实说话,Firefox 的性能是 Chrome 的 2 倍,Edge 的 4 倍,IE11 的 6 倍!
    【新特性速递】新增单标签页模式,界面更加清爽!
    【新特性速递】重构表格列锁定代码,只有一个横向滚动条,更加现代化!
  • 原文地址:https://www.cnblogs.com/maxiaohei/p/16371668.html
Copyright © 2020-2023  润新知