Docker入门知识

Docker入门知识

  • 一、Docker基础概念
    • 1. 使用容器的原因
    • 2. Docker是什么
    • 3. Docker的应用场景.
    • 4. Docker的基本组成
    • 5. 容器Container和虚拟机VM的区别
    • 5. ubuntu安装Docker
  • 二、Docker的镜像管理
    • 1. 镜像的定义
    • 2. 镜像的与容器的联系![镜像的与容器的联系](https://img-blog.csdnimg.cn/0f266ca382d847acbe87e3fd4d8535a2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pCB5rWF5Li2VmFsbA==,size_20,color_FFFFFF,t_70,g_se,x_16)
    • 3. Docker常用镜像命令
    • 4. 镜像存储核心技术:联合文件系统 UnionFs
    • 5. 镜像存储核心技术:写时复制 COW
  • 三、Docker容器管理
    • 1. 创建容器常用选项
    • 2. 容器资源限制

一、Docker基础概念

1. 使用容器的原因

  1. 上线流程繁琐,环节过多。

  2. 资源利用率低,服务器利用率低,浪费核资源。

  3. 扩容/缩容不及时,业务高峰期扩容流程繁琐。

  4. 服务器环境臃肿,维护、迁移困难。

  5. 环境不一致。

     ps:
     1. 服务器的使用率一般要高于实际业务占用率的30%。
     2. 服务器需要一个弹性伸缩空间。
    

2. Docker是什么

  1. Docker是当前使用最广泛的开源容器引擎,是一种操作系统级的虚拟化技术,依赖于Linux内核的特性,资源隔离(Nmaespace)和资源限制(Cgroups)。

  2. 是一个简单的应用程序打包工具。

  3. 可以使多个环境保持一致性。

  4. 使开发人员和运维人员各司其职。

     ps:
     1. 开发人员,开发项目、打包项目环境、代码成镜像、部署到容器平台。
     2. 运维人员,高效管理容器群。
    

3. Docker的应用场景.

  1. 应用程序打包和发布
  2. 应用程序的隔离
  3. 持续继承(Docker和K8s实现DevOps)
  4. 部署微服务
  5. 快速搭建测试环境
  6. 提供PaaS产品(平台即服务)

4. Docker的基本组成

Docker有三部分组成:客户端、守护进程、镜像仓库
Docker入门知识_第1张图片

5. 容器Container和虚拟机VM的区别

Docker入门知识_第2张图片
虚拟机里面运行的应用程序,每一个都依赖于一个单独建立的子操作系统,具有良好的操作化界面,提供一个完全隔离的环境,提升服务器资源利用率。
容器并不单独建立子操作系统,无操作化界面,仅提供一个基本的独立环境,实现容器隔离、资源限制。主要解决应用层面问题,应用快速部署、高效管理

分类 容器 虚拟机
启动速度 秒级 分钟级
运行性能 接近原生 5%左右损失
磁盘占用 MB GB
数量 成百上千 一般几十台
隔离性 进程级 系统级(更彻底)
操作系统 主要支持Linux 几乎所有类型的操作系统
封装程度 只打包 项目代码和依赖关系,共享 完整的操作系统

5. ubuntu安装Docker

安装依赖包: yum install -y yum-utils
安装DockerCE: yum install -y docker-ce
启动Docker服务: systemctl start docker
重启Docker服务: systemctl restart docker
查看安装的Docker信息: docker info
开机自动启动Docker: systemctl enable docker

二、Docker的镜像管理

1. 镜像的定义

镜像是一个分层存储的文件,是一个软件的环境;一个镜像可以创建N个容器;是一种标准化的交付物;是一个不包含Linux内核而又精简的操作系统。

样例: docker run -d -p 8080:80 nginx:1.17

  1. “nginx”即指定的镜像,如果没有输入版本Tag则默认latest版本
  2. 拉取镜像时,会分层下载
  3. 完成后可以使用docker ps查看下载并运行的容器。docker ps -l命令可以查看最新的运行的容器。
    docker ps
  4. 完成后可以使用docker images查看下载的镜像。
  5. 访问 http://localhost:8080查看安装的nginx
  6. 使用docker logs 71f4031aea56 查看日志信息(71f4031aea56为ps里面的容器ID)

Docker官方自带的仓库http://hub.docker.com

2. 镜像的与容器的联系Docker入门知识_第3张图片

镜像是一个只读模板容器,容器是通过下载镜像创建运行的实例

拉取镜像: docker pull nginx
查看本地镜像仓库: docker images
Docker入门知识_第4张图片
以testNginx为容器名调用本地Nginx镜像运行容器: docker run -d --name testNginx nginx
查看运行的实例列表: docker ps
查看运行的实例
查看某一实例的详细信息: docker ps docker inspect 71f4031aea56

3. Docker常用镜像命令

管理镜像常用命令: docker image --help
管理容器常用命令: docker container --help
镜像打包命令: docker build -t name:tag . .代表当前目录,该字段是DockerFile的路径

指令 描述 样例
ls 列出镜像 docker image ls
build 构建来自DockerFile或者远程的镜像 docker build github.com/creack/docker-firefox
history 查看历史镜像 docker history nginx
inspect 显示一个或者多个镜像详细信息 docker inspect nginx
pull 从镜像仓库拉取镜像 docker pull nginx:1.17
push 推送一个镜像到镜像仓库 (先登录镜像仓库) docker pull nginx:v1
rm 移除一个或多个镜像 -f 强制删除 docker image rm -f nginx:1.17
prune 移除没有被标记或者没有被任何容器引用的镜像 docker image prune
tag 创建一个引用源镜像标记目的镜像 docker tag nginx nginx:v1
export 导出容器文件系统tar归档文件创建镜像 docker container export nginx > nginx.tar
import 导入容器文件系统tar归档文件创建镜像 docker import nginx.tar
save 保存一个或者多个镜像到一个tar归档文件 docker save nginx > nginx.tar
load 加载来自tar归档或标准输入的镜像 docker load < nginx.tar

4. 镜像存储核心技术:联合文件系统 UnionFs

镜像能够高效存储的原因是,联合文件系统(Union file system),将镜像多层文件联合挂载到文件系统Docker入门知识_第5张图片
联合文件系统给容器层提供一个沙盒的环境,容器层的独立的运行的同时,不会占用更多的磁盘空间,Docker入门知识_第6张图片

5. 镜像存储核心技术:写时复制 COW

镜像是只读的,共享给多个容器。如果容器里修改文件,镜像会如何进行修改呢。
写时复制(Copy-on-write)机制会在修改文件操作时,先从镜像里把要写的文件复制到自己的文件系统中进行修改。
Docker入门知识_第7张图片
第一层: 联合文件系统挂载层,也叫统一视图层
第二层: 联合文件系统容器层
第三层: 联合文件系统镜像层,其中的init层会挂宿主机hostname(主机名)、hosts(添加hosts)、resolv.config(设置DNS)三个文件。

读取和修改文件时,首先在容器层进行搜索,如果没有就会向镜像层进行搜索,所以读写速度是影响其性能的关键。可以通过使用固态、使用卷作为频繁读写文件的工作目录,绕过存储驱动,减少抽象的开销。

三、Docker容器管理

1. 创建容器常用选项

选项 描述 样例
-i,-interactive 交互式 docker run -i centos
-t,-tty 分配一个为终端 docker run -t centos
-d, -detach 运行容器到后台 docker run -d nginx
-e, -env 设置环境变量 docker run -d -e ABC=123 -e CED=456 nginx
-p, -publish list 发布容器端口到主机 docker run -p 8888:80 nginx
–name 设置容器名 docker run --name myNginx nginx
-h,-hostname 设置容器主机名 docker run -h host nginx
-ip 指定容器IP,只能用于自定义网络 ``
-network 连接容器到一个网络 ``
-mount mount 将文件系统附加到容器 ``
-v,-volume list 绑定挂载一个卷 ``
–restart 容器退出时重启策略,默认no,可选值有 docker run --restart=always nginx

值得一提的是,可以使用docker run -idt centos同时使用几个常用选项.
进入容器内部 docker container exec -it 容器号 bash

2. 容器资源限制

默认创建的容器会使用宿主机所有资源

选项 描述
-m, -memory 容器可以使用的最大内存量
-memory -swap 容器允许交换到磁盘的内存量
-memory-swappiness=<0-100> 容器使用SWAP分区交换的百分比
-oom-kill-dosan;e 禁用OOM Killer
–cpus 容器可以使用的cpu数量
-cpuset-cpus 限制容器使用特定的CPU核心
-cpu-shares cpu共享(相对权重)

例如:``

你可能感兴趣的:(学习笔记,docker,运维,容器)