zoukankan      html  css  js  c++  java
  • Docker

    #############################################################
    #                                #
    #        Docker核心技术总结 之 主要操作命令            #
    #                                #
    #############################################################
    
    1、Docker的理念
     官方宣称:“一次安装,到处运行”。也就是说,在Docker容器(集装箱)上只需要一次性配置好环境,换到别的机子上就可以一键部署好,大大简化了操作,保证了开发环境和生产环境的一致性。
    
    2、虚拟机与Docker
     虚拟机:模拟了整个操作系统,包括硬件配置和软件驱动等等。笨重,耗资源。
     Docker:软件容器封装技术,只保留核心文件系统,可以简单理解为极简Linux系统。轻量,快捷。
    
    3、安装(一般为Linux环境)
     条件:64位系统,内核版本2.6.32及以上。
     查看内核版本:uname -r
    
     查看官方文档
     CentOS:https://docs.docker.com/engine/install/centos/
     Debian:https://docs.docker.com/engine/install/debian/
    
    4、Docker三要素
     镜像:一个只读的模板,类似于语言中的Class类。镜像一般是分层的,基于前一层但又相互独立。
     容器:用镜像创建的应用实例,类似于语言中的实例对象。它可以被启动、停止、删除。每个容器都可看成极简Linux系统,且相互隔离。
     仓库:存储镜像文件的场所。
    
    5、国内镜像加速
     1)先注册账号或者使用淘宝账号,登录搜索“镜像”关键字,点击第一个【容器镜像服务】,再点【管理控制台】,进入后左侧选择镜像加速器,复制加速地址。
     
     2)可以通过修改daemon配置文件 /etc/docker/daemon.json 来使用加速器,加入以下内容:
        {"registry-mirrors": ["https://你的阿里云加速地址"]}        # 如https://rv0ermrw.mirror.aliyuncs.com
     
     3)重启Docker,$sudo service docker restart
     
     4)查看是否使用了镜像加速,ps -ef|grep docker
     
    6、Docker帮助命令
     docker version:查看版本
     docker info:显示Docker系统信息,包括镜像和容器数
     docker --help:查看命令帮助
     
    7、镜像命令
     1)docker images [options]:列出本地镜像
            options:
            -a:所有镜像文件(包含中间层镜像)
            -q:只显示镜像ID
     
     2)docker search imgname:搜索Docker Hub上的镜像文件
     
     3)docker pull imgname [:tag]:下载镜像文件
            tag:镜像版本号,默认最新latest
     
     4)docker rmi [options] imgID|imgname:删除镜像            # 操作镜像时,推荐用镜像ID
            options:
            -f:强制删除
        docker rmi -f $(docker images -aq):删除所有镜像
        
    8、容器命令
     1)docker run [options] imgID|imgname:tag [command]:运行容器
            options:
            -i:以交互式模式运行容器,通常与-t同时使用,即-it
            -t:为容器分配伪终端,通常与-i同时使用,即-it
            -p:指定端口映射,hostPort:containerPort
            -d:后台运行容器(注意:若后面没接命令语句,则会自动退出容器)
            --name:容器命名
     
     2)docker ps [options]:列出正在运行的容器
            options:
            -a:列出所有容器,包括历史运行的
            -q:只显示容器ID
            -l:显示最近创建的容器
     
     3)exit:退出容器,并停止运行
        Ctrl + P + Q:退出容器,并后台运行
        
        docker attach contID|contname:重进容器
        docker exec -it contID|contname [command]:不进入容器情况下执行一些命令
        
     4)docker stop contID|contname:停止容器        # 操作容器时,推荐用容器ID
        docker kill contID|contname:强制停止容器    
        docker start contID|contname:启动容器
        docker restart contID|contname:重启容器
        
     5)docker rm [options] contID|contname:删除容器
            options:
            -f:强制删除
        
        docker rm -f $(docker ps -aq):删除所有容器
        
     6)docker logs [options] contID|contname:查看容器日志
            options:
            -t:显示时间
            -f:一直刷新显示
            --tail n:显示尾部n行日志
            
        docker top contID|contname:查看容器进程信息
        
        docker inspect contID|contname:查看容器内部细节(如数据卷信息等)
        
     7)docker cp contID|contname:容器内部路径 目标主机路径:将Docker文件拷贝到主机上
     
     8)docker commit -a="作者" -m="提交信息" 容器ID 新镜像名[:版本]:提交容器副本,成为一个新的镜像文件
     
    9、数据卷
     容器产生的数据进行持久化。主机与容器、容器与容器之间实现数据共享,双向数据同步。可形象比喻成U盘。
     生命周期:直到容器删除。
     
     docker run -it -v 宿主机绝对路径:容器绝对路径[:options] imgID|imgname:运行容器,并添加数据卷
            options:
            :rw:可读可写(默认)
            :ro:只读
     
     docker run -it --volumes-from contID|contname imgID|imgname:运行容器,并从另一个容器上关联数据卷
    
    10、DockerFile
     docker build -f /mydockerfile -t myimgname:tag . :构建镜像文件。注意最后有个“.”,表示在mydockerfile同目录下
     
     编写DockerFile指令(大写):
      FROM:基础镜像,当前镜像是基于哪个镜像的。基础镜像scratch
      MAINTAINER:作者姓名和邮箱
      RUN:镜像构建时会执行的命令。注意,每个RUN命令都会生成一层镜像,最好用"&"来连接多个RUN
      EXPOSE:对外暴露的端口
      WORKDIR:运行容器后进入的工作目录
      ENV:设置环境变量。可用$引用这个变量
      COPY:纯拷贝到镜像
      ADD:拷贝,会自动解压
      VOLUME:添加数据卷
      CMD:容器启动时会执行的命令。会被docker run后面的command覆盖
      ENTRYPOINT:容器启动时会执行的命令。会被docker run后面的command追加
      ONBUILD:当本镜像被继承时,会触发的操作
     
     例:
     --------------------------------------------------------------------------
     FROM centos
     MAINTAINER wangchunwang
     
     ENV path /usr/local
     WORKDIR $path
     
     RUN yum update                  # 换行符,&命令连接符
     & yum install vim             # 安装vim
     & yum install net-tools        # 安装ifconfig
     
     EXPOSE 80
     
     ENTRYPOINT echo $path
     ENTRYPOINT echo OK,成功
     
     ENTRYPOINT /bin/bash            # 如果前面用了ENTRYPOINT,这里就不能用CMD,否则容器不会启动!?
     --------------------------------------------------------------------------
     
    11、镜像导入导出
     导出:docker save imgID|imgname:tag > imgfile.tar 
     导入:docker load < imgfile.tar
     
    12、容器导入导出
     导出:docker export contID|contname > contfile.tar
     导入:docker import contfile.tar imgname:tag

    转载from: https://www.cnblogs.com/wcwnina/p/13045810.html

    不论你在什么时候开始,重要的是开始之后就不要停止。 不论你在什么时候结束,重要的是结束之后就不要悔恨。
  • 相关阅读:
    地址打开eclipse汉化全程
    可行性nullpoj 2723 Get Luffy Out 2sat
    服务器端提交Git版本控制tag标签的使用(二)
    原因总结六级之阅读理解
    子类父类浅谈filter里面为什么要强制转换成httpServletRequest类型
    排序中文POJ 1696/hrbustoj 1318 几何 蛋疼的蚂蚁
    选择复选框js限制checkbox勾选的个数以及php获取多个checkbbox的方法
    环境节点[置顶] 如何终止特定 RAC 实例上的 session
    整数实例hdu2041(超级楼梯)
    属性框架Fixjs——显示基类DisplayObject
  • 原文地址:https://www.cnblogs.com/yunhgu/p/13924575.html
Copyright © 2011-2022 走看看