Docker入门知识

一、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的基本组成

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

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

分类容器虚拟机
启动速度秒级分钟级
运行性能接近原生5%左右损失
磁盘占用MBGB
数量成百上千一般几十台
隔离性进程级系统级(更彻底)
操作系统主要支持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 pull nginx
查看本地镜像仓库: docker images
查看本地镜像仓库
以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),将镜像多层文件联合挂载到文件系统联合文件系统
联合文件系统给容器层提供一个沙盒的环境,容器层的独立的运行的同时,不会占用更多的磁盘空间,联合文件系统

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

镜像是只读的,共享给多个容器。如果容器里修改文件,镜像会如何进行修改呢。
写时复制(Copy-on-write)机制会在修改文件操作时,先从镜像里把要写的文件复制到自己的文件系统中进行修改。
写时复制
第一层: 联合文件系统挂载层,也叫统一视图层
第二层: 联合文件系统容器层
第三层: 联合文件系统镜像层,其中的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-sharescpu共享(相对权重)

例如:``

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值