Docker入门总结-韶华当歌





Docker入门总结

发布时间:2020/06/26 作者:linmoumou 浏览(370) 评论(20) 分类【总结】 文章来源:博主原创

     

    零、简介

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

    Docker是一组平台即服务](PaaS)产品,它使用 OS-level virtualization(OS级虚拟化)来以称为容器的程序包交付软件。容器彼此隔离,并将它们自己的软件,库和配置文件捆绑在一起;他们可以通过定义明确的渠道相互交流。所有容器都由单个操作系统内核运行,因此使用的资源少于虚拟机。

    一、Docker安装(cent os7 下)

    换yum源,把原来的换成阿里云的yum源

    1. 把原来的yum源备份

    2.换

    3.更新缓存

    4.配置防火墙及 SELinux

    配置防火墙及 SELinux,示例代码如下:

    4.开启路由转发

     

     

    开始安装docker

    1.安装所需的软件包

    2.使用添加阿里云的docker仓库

    3.更新并安装Docker-CE

    4.启动docker

     

    5.设置docker 开机自启动

    二、运行docker

    使用 Docker 时需要首先下载一个官方镜像,例如 mysqlwordpress。然而由于网络原因,下载一个 Docker 官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务 ACR 提供了官方的镜像站点,从而加速官方镜像的下载。

     

    使用镜像加速器

    在不同的操作系统下,配置加速器的方式略有不同,下文将介绍主要操作系统的配置方法。

    关于加速器的地址,登录阿里云容器镜像服务控制台后左侧的加速器帮助页面就会显示为您独立分配的加速地址

    当Docker版本较新时

    当您下载安装的 Docker Version 不低于 1.10 时,建议直接通过 daemon config 进行配置。使用配置文件 /etc/docker/daemon.json(没有时新建该文件)

    之后重启 Docker Daemon 即可。

    以上为阿里云官方镜像加速文档的一部分

    这边是我自己配置好的

    Docker,总结

    三、Docker常用命令

    帮助命令

     

    镜像命令

    1. docker images 查看本机有的镜像

      Docker,总结

      1. -a:列出本地所有的镜像(含中间印象层)
      2. -q:只显示镜像id
      3. --digests:显示镜像对的摘要信息
      4. --no-trunc:显示完整的镜像信息
    2. docker search 镜像名

      1. --no-trunc:显示完整镜像描述
      2. -s:列出收藏数不小于指定值的镜像
      3. --automated:只列出automated build类型的耳朵镜像
    3. docker pull 镜像名

      1. docker pull 镜像名[:TAG](不带默认文最新)
    4. docker rmi 镜像名/id

      1. -f 强制删除
      2. 可以多个一起删除空格隔开
      3. docker rmi -f $(docker imagess -qa)删除全部

    容器命令

    1. docker pull centos安装一个centos镜像 Docker,总结

    2. 新建并启动容器

      1. docker run 1 [OPTIONS] IMAGE [COMMAND] [ARG...]

        1. OPTIONS说明(常用) :有些是一个减号,有些是两个减号

        2. --name="容器新名字":为容器指定一个名称;

        3. -d:后台运行容器,并返回容器ID,也即启动守护式容器;:

          1. 查看的时候容器已经退出
          2. 因为docker前台没有使用后台就会立刻自杀,因为他觉得没事可做了
        4. -i: 以交互模式运行容器,通常与-t同时使用;

        5. -t: 为容器重新分配一个伪输入终端,通常与-i同时使用;

        6. -P:随机端口映射;

          1. ip:hostPort:containerPort
          2. ip:.containerPort
          3. hostPort:containerPort
          4. containerPort
        7. Docker,总结

           

       

    3. 列出当前所有正在运行的容器docker ps [OPTIONS]

      1. Docker,总结
      2. -a :列出当前所有正在运行的容器+历史上运行过的
      3. -l:显示最近创建的容器。
      4. -n 3: 显示最近3个创建的容器。
      5. -q :静默模式,只显示容器编号。
      6. --no-trunc :不截断输出。
    4. 退出容器

      1. exit 退出停止
      2. ctrl+P+Q 容器不停止
    5. 启动容器

      1. docker start 容器id或名字
    6. 重启容器

      1. docker restart 容器id或名字
    7. 停止容器

      1. docker stop 容器id或名字
    8. 强制停止容器

      1. docker kill 容器id或名字
    9. 删除已停止的容器

      1. docker rm 容器id或名字

      2. -f 强制删除

      3. 删除多个

        1. docker rm -f $(docker ps -a -q)

        2. docker ps -a -q | xargs docker rm

        3. Docker,总结

           

    10. 查看容器日志

      1. ddocker logs -f -t -tail 容器id
    11. -t 是加入时间戳

    12. -f 跟随最新的日志打印

    13. -tail 数字 显示最后多少条

    14. docker run -d centos /bin/sh -c "while true; do echo hell lrt; sleep 2;done"

    15. 查看容器内运行的进程

      1. docker top 容器id
    16. 查看容器内部细节

      1. docker inspect 容器id
    17. 进入正在运行的容器并以命令行交互

      1. docker exec -it 容器id 命令 /bin/bash

      2. 重新进入docker attach 容器id

      3. 区别

        1. exec在主机上执行命令
        2. attach进去容器再执行命令

       

    18. 从容器拷贝文件到主机

      1. docker cp 6e3a38a329cb:/tmp/123 /root

    四、Docker镜像

     

    1、是什么

    UnionFS(联合文件系统)

    UnionFS(联合文件系统):Union文件系统(UnionFS)是一-种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同--个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

    特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录.

    Docker镜像加载原理

    docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。

    bootfs(boot file system)主要包含bootloader和kernel, bpotloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是-一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权己由bootfs转交给内核,此时系统也会卸载bootfs。

    rootfs (root file system),在bootfs之 上。包含的就是典型Linux系统中的/dev, /proc, /bin, /etc等标准目录和文件。rootfs就是 各种不同的操作系统发行版,比如Ubuntu, Centos 等等。

    对于一个精简的OS, rotfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供rootfs就行了。由此可见对于不同的linux发行版,bootfs基本是一-致的,roofs会有差别,因此不同的发行版可以公用bootfs。

     

    镜像分层-共享资源

    每一个镜像每一层都可以被共享

    2、特点

    Docker镜像都是只读的容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

    3、Docker镜像commit操作补充

    dockercommit提交容器副本使之成为-一个新的镜像

    dockercommit-m=“提交的描述信息”-a="作者”容器ID要创建的目标镜像名:[标签名]

    案 例演示

    1.从Hub.上下载tomcat镜像到本地并成功运行

    docker run -it -p 8888:8080 tomcat //指定端口映射

    docker run -it -P tomcat //随机端口映射

    2.上一步修复后生成应该新的tomcat容器的文档

    docker commit -a="lrt" -m="tomcatok" 5379bd2da94a atguigu/tomcatok:8.5

    3.也即当前的tomcat运行实例是一个可以正常访问的容器,以它为模板commit一 个正常tomcat新镜像atguigu/tomcatok:8.5

    4.启动我们的新镜像并和原来的对比,应该可以正常访问应该不能

    5.-d 参数 补充 docker run -d -p 6666:8080 tomcat 后台运行,不会在前台打印日志

     

    五、Docker容器数据卷

    是什么

    一句话:有点类似我们Redis里面的rdb和aof文件

    能干嘛

    容器的持久化

    容器间继承+共享数据

    特点:

    1:数据卷可在容器之间共享或重用数据

    2:卷中的更改可以直接生效

    3:数据卷中的更改不会包含在镜像的更新中

    4:数据卷的生命周期一直持续到没有容器使用它为止

    数据卷

    容器内添加

    直接命令添加

    命令: docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

    docker inspect 0506b316ba0c

    命令(带权限) docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

    DockerFile添加

    Javer Hello,java ===> Hello.class

    Docker images ===> DoockerFile

    Docker,总结

    数据卷容器

    命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器

    实现数据的活动依赖

    docker run -it --name dc03 --volumes-from dc01 lrt/centos

    结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

     

    六、dockerfile解析

    是什么

    Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

    构建三步骤

    编写Dockerfile文件. docker build docker run

    文件格式

    Docker,总结

    dockerfile构建过程解析

    Dockerfile内容基础知识

    1:每条保留字指令都必须为大写字母且后面要跟随至少-一个参数 2:指令按照从上到下,顺序执行 3: #表示注释 4: 每条指令都会创建一个新的镜像层,并对镜像进行提交

    Docker执行Dockerfile的大致流程

    (1)docker从基础镜像运行一个容器

    (2)执行一条指令并对容器作出修改

    (3)执行类似docker commit的操作提交一个新的镜像层

    (4)docker再基于刚提交的镜像运行一个新容器

    (5)执行dockerfile中的下一条指令直到所有指令都执行完成

    小结

    * Dockerfile是软件的原材料

    * Docker镜像是软件的交付品

    * Docker容器则可以认为是软件的运行态。

    Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

    Docker,总结

     

    DockerFile体系结构(保留字指令)

     

     

    Docker,总结

    Docker,总结

    案例

    Base镜像(scratch)

    Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的

    自定义镜像

    CMD/ENTRYPOINT 镜像案例

     

     

    Docker,总结

关键字词:Docker,总结

返回顶部小火箭


常用网站

我的主页

浙ICP备20007936号 · @版权所有 lin 联系我