zoukankan      html  css  js  c++  java
  • Docker

    这阵子开始捣鼓 Docker,遇到过不少问题,下面记录下问题以及解决方案

    一、Docker 报 Failed to start Docker Application Container Engine 错误。

    问题说明:Docker安装完成后启动,报 Failed to start Docker Application Container Engine 错误,安装教程参考文章末尾的 “附录” 

    解决方案1:

      检查下如下目录是否存在docker.sock文件,/var/run/docker.sock,若存在的话则删除重新启动 docker

    解决方案2:

      检查 /etc/docker/daemon.json 这个文件是否存在,若存在的话检查文件的 JSON 代码格式,格式不正确的话无法正常启动 docker;若不存在则创建 /etc/docker/daemon.json 并输入以下内容(或者用花括号 "{}" 代替)

    {
        "storage-driver": "devicemapper"
    }

    解决方案3:

      检查方案2所述的文件中是否包含有中文的符号,有的话换成英文符号并重启 docker

    解决方案4:

      上面几个尝试之后都无法解决问题,只能卸载重装喽

      4.1:卸载 docker

    $ yum remove docker-*

      删除 /lib 和 /run 文件夹下的docker文件夹;再删除所有docker的包,在删除的过程中,建议重启服务器(或者杀掉所有docker进程),期间可能还有docker进程在占用文件夹的情况,导致服务删除失败的问题。(这个非必要操作)

      4.2:更新 Linux 内核(笔者就是这个原因导致启动不了),这个可能需要消耗不少时间,耐心等待吧

    $ yum update

      4.3:参考附录的内容重新安装 docker

      4.4:启动 docker 后,输入指令检查 docker 运行状态

    $ systemctl status docker #查看docker运行状态
    $ docker info #查看容器信息

      运行中的 docker 如下图所示:

    二、登录私有镜像的时候提示权限不足

      解决方案:由于笔者使用其他账号组进行操作,前后检查了登录的账号密码,确保没问题后检查下权限,由于笔者这个用户没有权限执行 docker.sock 文件,把当前的用户添加到对应的用户组即可

    $ gpasswd -a XXX XXX

    三、Jenkins 执行 docker build 打包镜像的时候报错

      分析:这个或许有多个原因,可能是执行 build 的命令出错了,也可能是上下文关系没对应好,也可能是 Dockerfile 文件编写有问题

      解决方案1:检查 build 命令语法有没有错误

      解决方案2:检查 build 命令后面对应的目录结构是否正确

      解决方案3:检查 build 打包项目的 Dockerfile 文件是否存在一些语法错误

    附录:

    Docker 安装简易教程:(以 centos 安装 docker ce 社区版本为例)

    //先安装一些依赖的驱动和配置yum
    $ yum install -y yum-utils 
      device-mapper-persistent-data 
      lvm2
      
    $ yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo
    
    //安装docker
    $ yum install docker-ce docker-ce-cli containerd.io
    
    //启动docker
    $ systemctl start docker
    
    //测试下是否安装成功, 这里运行一个hello-world镜像,正常的话会输出 Hello from Docker!
    $ docker run hello-world

    docker 常用命令:

    $ systemctl status docker #检查docker的状态
    $ systemctl start docker #启动docker
    $ systemctl stop docker #关闭docker
    $ systemctl restart docker #重启docker
    $ docker run --rm -it XXXX bash #启动一个XXXX容器,并以bash方式运行,XXXX是镜像ID(通过docker image ls查看)
    $ docker image ls #列出当前所有的镜像
    $ docker image prune #清除没用的镜像,按y确认删除
  • 相关阅读:
    装饰器
    函数对象与闭包
    名称空间与作用域
    函数的参数
    函数的基本使用
    ${}与#{}的区别
    thymeleaf之日期格式化
    template might not exist or might not be accessible by any of the configured Template Resolvers
    springboot使用@Scheduled之cron表达式详解
    自定义springboot项目启动图案
  • 原文地址:https://www.cnblogs.com/lyc94620/p/10763789.html
Copyright © 2011-2022 走看看