全网最详细Docker的基础知识(从入门到实例)

一、Docker简介

解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

在这里插入图片描述

1.1 Docker包含两方面技术:

  • 1.镜像技术,打破“代码即应用”的概念,透过镜像将运作应用程式所需要的系统环境,自底向上打包应用,达到应用程式跨平台间的无缝运作。即一次封装,到处运行。
  • 2.容器虚拟化技术,基于容器的虚拟化,仅包含业务运行所需的runtime环境。

1.2 Docker的优势(DevOps):

  • 1.更快速的应用交付和部署
  • 2.更快捷的升级和扩缩容
  • 3.更简单的系统运维
  • 4.更高效的计算资源利用

二、Docker三要素:仓库、镜像、容器

从远程仓库pull的镜像,就是一个只读的模版,用来创建Docker容器,并且一个镜像可以创建很多容器。

在这里插入图片描述

在这里插入图片描述

  • 1.容器,Docker利用容器独立运行一个或一组应用,容器是用镜像创建的运行实例(runtime环境)。它可以被启动、开始、停止、删除,每个容器都是相互隔离的、保证安全的平台。可以把容器看作是一个简易版的Linux环境和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
  • 2.仓库,集中存放镜像文件的场所。
  • 3.镜像,Docker本身是一个容器运行载体或称之为管理引擎(daemon)。我们将应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。一个容器运行一种服务,当我们需要的时候,就可以通过Docker客户端创建一个对应的容器。

如何配置阿里云镜像加速器?

三、docker底层原理

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接收命令并管理运行在主机上的容器。

3.1 docker为什么比VM快?(docker与虚拟化技术的特点)
  • 1.docker有着比虚拟机更少的抽象层。运行在docker容器上的程序直接使用实际物理机的硬件资源,不需要实现硬件资源虚拟化。
  • 2.docker通过Docker Engine利用的是宿主机的内核,而不需要Guest OS。

在这里插入图片描述

四、Docker常用命令

4.1 帮助命令:docker (-help、version、info)
4.2 镜像命令:
  • 1.docker images,查看本地镜像。包含多个options:
    • -a,列出本地所有的镜像(镜像分层,含中间映像层)。
    • -q,只显示镜像id(-qa组合options)。
    • –digests,现实摘要信息。
    • – no-trunc,显示完整的镜像信息(–digests --no-trunc组合options)。
  • 2.docker search 镜像名,options:
    • –no-trunc,显示完整的镜像描述。
    • -s,列出收藏数不小于指定值的镜像。
    • –automated,只列出automated build类型的镜像。
  • 3.docker pull 镜像名(镜像名可以:版本号,不指定版本号默认latest)
  • 4.docker rmi 镜像名id,删除镜像。options:
    • -f,删除单个镜像id。
    • 空格分割,删除多个镜像。
    • 3.-f $(docker images -q),删除全部镜像。
  • 5.docker commit
  • 6.docker push
4.3 容器命令:
  • 1.docker run 镜像id,新建并启动容器。options:
    • –name,为容器指定名字。
    • -d,后台运行容器,并返回容器id,即启动守护式容器。
    • -i,以交互模式运行容器,通常与-t同时使用。
    • -t,为容器重新分配一个伪输入终端。
    • -P,随机端口映射。
    • -p,指定端口映射,有以下四种格式:
      • ip:hostPort:containerPort
      • ip::containerPort
      • hostPort:containerPort
      • containerPort
  • 2.docker ps,列出当前所有正在运行的容器。options:
    • -a,列出所有正在运行的容器+历史上运行过的。
    • -l,显示最近创建的容器。
    • -n,显示最近n个创建的容器。
    • -q,静默模式,只显示容器编号(-lq可组合使用)。
    • –no-trunc,不截断输出。
  • 3.退出容器有两种方式:
    • exit,容器停止退出。
    • ctrl+P+Q,容器不停止退出。
  • 4.docker start 容器id或容器名,启动容器。
  • 5.docker restart 容器id,重启容器。
  • 6.docker stop 容器id或容器名,停止容器。
  • 7.docker kill 容器id或容器名,强制停止容器。
  • 8.docker rm 容器id,删除已经停止的容器。options:
    • -f $(docker ps -a -q),删除全部。
    • 直接全部删除,docker ps -a -q | xargs docker rm

五、容器重要命令

  • 1.启动守护式容器,docker run -d 容器名
  • 2.查看容器日志,docker logs -f -t --tail 容器id:
    • -t,加入时间数
    • -f,跟随最新的日志打印
    • –tail,数字显示最后多少条
  • 3.查看容器内运行的进程,docker top 容器id
  • 4.查看容器内部细节以json格式,docker inspect 容器id
  • 5.进入正在运行的容器并以命令行交互
    • 1.docker exec -it 容器id /bin/bash,在容器中打开新的终端,并且可以启动新的进程;并且在宿主机外可以执行docker容器运行的命令,docker exec -t 容器id ls /tmp,直接返回结果到宿主机。
    • 2.重新进入,docker attach 容器id,直接进入容器命令的终端,不会启动新的进程。
  • 6.从容器内拷贝文件到主机上,docker cp 容器id:容器内路径 目的主机路径。(可对容器内数据进行持久化)。
  • 7.提交容器副本使之成为一个新的镜像,docker commit -m=“提交的描述信息” -a=“作者” 容器id 要创建的目标镜像名:[标签名]
启动就退出问题?
  • 1.Docker容器后台运行就必须有一个前台进程。

  • 2.容器运行的命令如果不是那些一直挂起的命令(top、tail等),就会自动退出。

  • 3.这个是docker的机制问题,容器为后台进程模式运行,就导致docker前台没有运行的应用,容器就会立即停止。

  • 4.最佳的解决方案,将要运行的程序以前台进程的形式运行。

  • 5.后台运行某一个程序,容器就会一直运行,例如:

    docker run -d centos /bin/sh -c 'while trues; do echo hello-world; sleep 2; done' #可用查看容器日志命令,后台一直在打印‘hello-world’
    

六、Docker镜像

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码的胖虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值