Docker入门

Docker学习笔记

为什么需要用Docker容器?

  • 环境配置的难题:
    • 程序换一台机器需要配置各种环境, 主要包括操作系统、 各种库和组件、 各种依赖和环境变量。
  • 虚拟机有几个缺点:
    • 相对于一个小程序,光是启动虚拟机所占资源比较多。
    • 虚拟机冗余步骤多,虚拟机是完整的操作系统,一些系统级别的操作步骤往往无法跳过
    • 虚拟机启动慢,光是开机就要等很久。
  • Linux容器(Linux Containers, 缩写LXC): Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。
    • 相当于是对进程套了一个保护层,对容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现了与底层系统的隔离。
    • 具有启动快、 资源占用少、 体积小的特点,但是接口可能不是特别方便。
  • Docker是对Linux容器的一种封装, 提供简单易用的容器使用接口。
    • Docker是最流行的Linux容器解决方案。
    • Docker将应用程序与该程序的依赖,打包在一个文件里。运行这个文件就会生成一个虚拟容器。
    • 程序在容器里运行就好像在真实的物理机上运行一样,有了Docker就不用操心环境问题。
    • Docker的接口相当简单, 用户可以方便地创建和使用容器, 把自己的应用放入容器。
    • 容器还可以进行版本管理、 复制、 分享、 修改,就像管理普通的代码一样。

Docker的用途

  • 提供一次性的环境, 比如本地测试他人的软件、 持续集成的时候提供单元测试和建构的环境。
  • 提供弹性的云服务, 因为Docker容器可以随开随关, 很适合动态扩容和缩容。
  • 组建微服务架构, 通过多个容器, 一台机器可以跑多个服务, 因此本机就可以模拟出微服务架构。

Docker运行的命令

  • 查看docker安装的版本, docker version 或者 docker info。
  • 将用户加入Docker用户组: sudo usermod -aG docker $USER
  • Docker是服务器---客户端架构,命令行运行docker的时候,需要本机有Docker的服务。
    • 通过 sudo service docker start 或者 sudo systemctl start docker启动。

image 文件

  • Docker把应用程序及其依赖,打包在image文件里,只能通过image文件才能生成Docker容器。
    • image文件可以看作是容器的模板,Docker根据image文件生成容器的实例。
    • 同一个image文件里,可以生成多个同时运行的容器实例。
    • image是二进制文件,一个image文件往往通过继承另一个image文件,加上一些个性化设置而生成。
    • docker image ls列出本机所有image文件。
    • docker image rm [imageName]删除image文件。
  • image文件是通用的, 一台机器的image文件拷贝到另一台机器,照样可以使用。
  • 我们应该尽量使用别人制作好的image文件,而不是自己制作。即便要定制也应该基于别人的image文件进行加工,而不是从零开始制作。
  • Docker的官方仓库Docker Hub是最重要、最常用的image仓库,出售自己制作的image文件也是可以的。

实例: Hello World

  • Docker是一个容器工具,提供虚拟环境,站在Docker的角度上, 软件就是容器的组合: 业务逻辑容器、数据库容器、存储容器、队列容器····Docker使得软件可以拆分成若干个标准化容器,像搭积木一样组合起来。
  • 微服务(microservices)的思想: 软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层。
  • image文件生成的容器实例,本身也是一个文件, 称为容器文件,一旦容器生成,就会同时存在两个文件: image文件和容器文件。
  • 关闭容器并不会删除容器文件,只是容器停止运行而已。
    • docker container ls
    • docker container ls --all

Dockerfile文件

  • 学会使用image文件以后,还需要了解如何生成image文件,一般用Dockerfile文件生成image文件;Dockerfile文件是一个文本文件,用来配置image。 Docker根据该文件生成二进制的image文件。
原文地址:https://www.cnblogs.com/longjiang-uestc/p/9957354.html