Docker

作者: 与搬砖有关的日子 | 来源:发表于2019-07-18 19:54 被阅读0次

    1、常用命令

    • 进入容器:docker exec –it 0e2801cbb8bf /bin/bash
    • 启动容器:docker restart containerName
    • 退出容器:exit
    • 启动镜像:docker run -p port(机器端口):port(docker内部端口) imageId /bin/bash
    • 删除:
      • 停止所有的container,这样才能够删除其中的images:
        docker stop $(docker ps -a -q)
      • 删除所有container:
        docker rm $(docker ps -a -q)
      • 删除images:
        docker rmi <image id>
      • 删除untagged images,也就是那些id为<None>的image:
        docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
      • 删除全部image:
        docker rmi $(docker images -q)
    • 获取镜像:
      docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
    • 列出镜像:
      docker image ls
    • 删除虚悬镜像:
      docker image prune
    • 登陆指定服务器:
      docker login [server]
    • 构建镜像:
      docker build -t name:tag -f Dockerfile .

    2、Dockerfile常用命令

    我们把每一层修改、安装、构建、操作的命令写入一个脚本,用这个脚本来构建、定制镜像,这个脚本就是Dockerfile。

    • docker build . 执行dockerfile文件生成镜像文件
    • FROM 指定基础镜像
    • RUN 执行命令,Dockerfile中的每一个指令都会建立一层,所以执行RUN命令时最好用&&来优化
    • COPY复制文件,指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置。
    • ADD 更高级的复制文件,所有的文件复制均使用 COPY 指令,仅在需要自动解压缩的场合使用 ADD
    • CMD 容器启动命令,指令就是用于指定默认的容器主进程的启动命令的,Docker 不是虚拟机,容器中的应用都应该以前台执行,而不是像虚拟机、物理机里面那样,用 systemd 去启动后台服务,容器内没有后台服务的概念。对于容器而言,其启动程序就是容器应用进程,容器就是为了主进程而存在的,主进程退出,容器就失去了存在的意义,从而退出,其它辅助进程不是它需要关心的东西。
    • ENTRYPOINT入口点,和 CMD 一样,都是在指定容器启动程序及参数。应用运行前的准备工作,ENTRYPOINT ["docker-entrypoint.sh"]
    • VOLUME定义匿名卷,VOLUME /data,这里的 /data 目录就会在运行时自动挂载为匿名卷,任何向 /data 中写入的信息都不会记录进容器存储层,从而保证了容器存储层的无状态化。

    3、对比传统虚拟机总结

    image.png

    4、Docker架构

    • Docker镜像
      镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
    • Docker容器
      容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
    • Docker仓库
      仓库是集中存放镜像文件的场所,类似于git,包含多个镜像;分为公开仓库和私有仓库,最大的公开仓库是Docker Hub,国内仓库有Docker Pool等。
    • Docker使用C/S架构模式 image.png

      一般运行流程为:用户在Docker Client端通过命令行发送请求到Docker Daemon,Docker Daemon中的Server收到请求后,Engine会创建一个工作任务job,通过调用Driver模块的各个驱动分别执行不同的任务,比如需要镜像就调用graphdriver从镜像仓库下载镜像,创建容器时也需要调用其它两个驱动来配置网络和创建并维护容器。最后生成运行中的容器或者上传镜像到镜像仓库等。

    相关文章

      网友评论

          本文标题:Docker

          本文链接:https://www.haomeiwen.com/subject/gbyrlctx.html