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

posted @ 2020-11-04 10:27  不能说的秘密  阅读(91)  评论(0编辑  收藏  举报