• Docker01-介绍、安装与使用


    前言

    一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协助我们需要关心的问题很多,这也是很多软件公司不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。

    Docker之所以发展如此迅速,针对运维它给出了一个标准化的解决方案。所以,现在Docker成为了开发和运维必备的技能之一,极大便利的帮助解决了应用的环境和版本迭代问题。

    本系列文章让你轻松进入docker的世界!


     

    一、Docker定义

    docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

     

    二、Docker优点

    1、更快速的交付和部署

    传统:一堆帮助文档、安装程序;

    Docker:打包镜像,测试发布,一键运行;

    2、更便捷的升级和扩缩容

    传统:安装环境、配置参数、应用打包部署,重新来一遍;

    Docker:我们部署应用就和积木一样!项目打包为一个镜像,扩展 服务器B,直接在服务器B上运行 镜像即可,无须搭建环境,打包部署,完成扩容!

    3、更简单的系统运维

    传统:开发、测试、UAT、生产各个环境存在一致性差异,经常会导致意想不到的问题,这些都是无意义的问题;

    Docker:各个开发环境高度一致化,避免环境带来的问题干扰;

    4、更高效的计算资源利用

    传统:存在部分应用,部署后,导致不能部署第二个相同应用;

    Docker:是内核级别的虚拟化,可以在一个物理机上运行很多的容器示例,服务器被压榨到极致;

    三、Docker组成

    Docker是一个client-server结构的系统,docker-server启动完毕后,会启动一个守护进程,通过socket来接收docker-client的命令,从而在server上执行命令所要执行的操作。

    • 镜像(Image)

    Docker镜像就好比一个模板,可以通过这个模板来创建容器服务,tomcat镜像===> run ===> tomcat01容器(提供服务),通过这个镜像可以创建多个容器(最终服务或项目运行就是在容器内);

    • 容器(Container)

    Docker利用容器技术,独立运行一个或者一个组的应用,通过镜像来创建的;

    目前就可以把容器理解为一个简易的linux系统 + 应用 + 环境;

    • 仓库(Repository)

    仓库就是存放镜像的地方,库分为共有仓库和私有仓库;

    Docker Hub(默认是国外的),阿里云...等都有容器服务器(配置镜像加速);

    三、Docker安装

    服务器常用CentOS,这里以CentOS 7系统上安装Docker为示例。

    建议服务器在安装后,切换yum源,采用国内163或者阿里的yum源,安装应用会快很多。

    1、检查系统内核

    最新docker安装要求centos的内核版本在3.10以上

    [root@localhost ~]# uname -r
    3.10.0-1160.6.1.el7.x86_64

     

    2、使用yum安装docker

    • yum更新(可略过,内核版本不够时需要)
    yum -y update
    • docker安装
    yum -y install docker
    • docker启动
    systemctl start docker.service

     

    可能报错:Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

    解决方法:执行 vi /etc/sysconfig/selinux , 把 selinux 属性值改为disabled。然后重启系统,docker就可以启动啦

    • 开机自启动
    systemctl enable docker.service
    • 配置docker镜像加速
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

     

    镜像加速的地址请设置成阿里的地址("https://xxx.mirror.aliyuncs.com"是随手写的地址),请自己登录阿里云获取自己分配的加速地址,这样docker下载应用会快很多。

    阿里云镜像加速地址获取:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

    最后使用 docker info查看配置是否生效;(信息最后又显示镜像地址的属性,看是否已经修改为自己的阿里云镜像加速地址);

    docker info

    四、Docker使用

    docker的使用基本都是docker提供的命令为主。

    Usage:
    docker [OPTIONS] COMMAND [arg...]
           docker daemon [ --help | ... ]
           docker [ --help | -v | --version ]
    A
    self-sufficient runtime for containers.
    
    Options:
      --config=~/.docker              Location of client config files  #客户端配置文件的位置
      -D, --debug=false               Enable debug mode  #启用Debug调试模式
      -H, --host=[]                   Daemon socket(s) to connect to  #守护进程的套接字(Socket)连接
      -h, --help=false                Print usage  #打印使用
      -l, --log-level=info            Set the logging level  #设置日志级别
      --tls=false                     Use TLS; implied by--tlsverify  #
      --tlscacert=~/.docker/ca.pem    Trust certs signed only by this CA  #信任证书签名CA
      --tlscert=~/.docker/cert.pem    Path to TLS certificate file  #TLS证书文件路径
      --tlskey=~/.docker/key.pem      Path to TLS key file  #TLS密钥文件路径
      --tlsverify=false               Use TLS and verify the remote  #使用TLS验证远程
      -v, --version=false             Print version information and quit  #打印版本信息并退出
    
    Commands:
        attach    Attach to a running container  #当前shell下attach连接指定运行镜像
        build     Build an image from a Dockerfile  #通过Dockerfile定制镜像
        commit    Create a new image from a container's changes  #提交当前容器为新的镜像
        cp    Copy files/folders from a container to a HOSTDIR or to STDOUT  #从容器中拷贝指定文件或者目录到宿主机中
        create    Create a new container  #创建一个新的容器,同run 但不启动容器
        diff    Inspect changes on a container's filesystem  #查看docker容器变化
        events    Get real time events from the server#从docker服务获取容器实时事件
        exec    Run a command in a running container#在已存在的容器上运行命令
        export    Export a container's filesystem as a tar archive  #导出容器的内容流作为一个tar归档文件(对应import)
        history    Show the history of an image  #展示一个镜像形成历史
        images    List images  #列出系统当前镜像
        import    Import the contents from a tarball to create a filesystem image  #从tar包中的内容创建一个新的文件系统映像(对应export)
        info    Display system-wide information  #显示系统相关信息
        inspect    Return low-level information on a container or image  #查看容器详细信息
        kill    Kill a running container  #kill指定docker容器
        load    Load an image from a tar archive or STDIN  #从一个tar包中加载一个镜像(对应save)
        login    Register or log in to a Docker registry#注册或者登录一个docker源服务器
        logout    Log out from a Docker registry  #从当前Docker registry退出
        logs    Fetch the logs of a container  #输出当前容器日志信息
        pause    Pause all processes within a container#暂停容器
        port    List port mappings or a specific mapping for the CONTAINER  #查看映射端口对应的容器内部源端口
        ps    List containers  #列出容器列表
        pull    Pull an image or a repository from a registry  #从docker镜像源服务器拉取指定镜像或者库镜像
        push    Push an image or a repository to a registry  #推送指定镜像或者库镜像至docker源服务器
        rename    Rename a container  #重命名容器
        restart    Restart a running container  #重启运行的容器
        rm    Remove one or more containers  #移除一个或者多个容器
        rmi    Remove one or more images  #移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除)
        run    Run a command in a new container  #创建一个新的容器并运行一个命令
        save    Save an image(s) to a tar archive#保存一个镜像为一个tar包(对应load)
        search    Search the Docker Hub for images  #在dockerhub中搜索镜像
        start    Start one or more stopped containers#启动容器
        stats    Display a live stream of container(s) resource usage statistics  #统计容器使用资源
        stop    Stop a running container  #停止容器
        tag         Tag an image into a repository  #给源中镜像打标签
        top       Display the running processes of a container #查看容器中运行的进程信息
        unpause    Unpause all processes within a container  #取消暂停容器
        version    Show the Docker version information #查看容器版本号
        wait         Block until a container stops, then print its exit code  #截取容器停止时的退出状态值

    下面是常用命令的分类和说明:

    1、信息命令

    命令说明
    docker version 查看docker版本信息
    docker info 查看docker系统信息(镜像,容器,扩卷,宿主机信息,镜像地址等)
    docker 命令 --help docker命令的解析说明
    docker status 容器id 容器的进程信息

    注意:docker的指令如果不会或者忘记了,都可以通过 docker help 命令来查看帮助文档。(十分重要)

    使用示例:docker ps --help

    [root@MiWiFi-R4-srv v2]# docker ps --help 
     
    Usage:  docker ps [OPTIONS]
     
    List containers
     
    Options:
      -a, --all             Show all containers (default shows just running)
      -f, --filter filter   Filter output based on conditions provided
          --format string   Pretty-print containers using a Go template
      -n, --last int        Show n last created containers (includes all states) (default -1)
      -l, --latest          Show the latest created container (includes all states)
          --no-trunc        Don't truncate output
      -q, --quiet           Only display container IDs
      -s, --size            Display total file sizes

    2、镜像命令

    命令说明
    docker search 关键字 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG
    docker pull 镜像名:tag :tag是可选的,tag表示标签,多为软件的版本,默认是latest
    docker images 查看本地所有镜像
    docker rmi 镜像id 删除指定的本地镜像
    docker tag 为镜像打标签

    docker hub地址:https://hub.docker.com/

    3、容器命令

    命令说明
    docker run args 镜像名称 根据镜像启动容器
    docker ps 查看运行中的容器
    docker stop 容器id 停止运行中的容器
    docker ps ‐a 查看所有的容器
    docker start 容器id 启动容器
    docker rm 容器id 删除一个容器
    docker logs 容器id 查看容器的日志(-f:不断显示)
    docker exec -it 容器id /bin/bash 进入容器交互式界面
    docker commit 容器id 镜像名称 提交容器为新的镜像

    4、网络命令

    命令说明
    docker network ls 查看所有的网络列表
    docker network inspect 网络id 查看具体的网络信息
    docker network connect 容器id 网络 把容器加入到指定网络
    docker network create ... 创建docker网络

    五、执行流程

    执行图1:


    执行图2:

  • 相关阅读:
    ios app ipv6 审核总结
    组织、结构与部分、整体
    组织
    Makefile 使用总结
    Make 命令教程
    Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件
    如何从一个服务器拷文件到另一个服务器
    vi的常用命令
    linux下yum命令出现Loaded plugins: fastestmirror
    YUM常用命令介绍
  • 原文地址:https://www.cnblogs.com/gangbalei/p/14968648.html
Copyright © 2020-2023  润新知