0.docker的理解认识

Docker

Redis运行环境

环境:

云服务 centos7

Docker是什么

1)应用容器引擎

2)可以理解为一个小的虚拟机 ~ VMWare

3)可发布在任何流行的linux上

为什么使用docker

1)启动快 秒级别 因为直接运行在宿主内核

2)性能接近原生

3)一致性的环境 可以跨平台布置 因为使用同一个镜像

4)轻松的维护和扩展 因为使用分层存储以及镜像的技术

5)动态扩容和缩容,在意外的情况下,流量突然变大,利用docker可以快速增加机器

6)磁盘使用

Docker的3个基本概念

1)镜像

2)容器

3)仓库

1.镜像

一个静态的模板文件,可以基于它创建多个容器

可以使用dockfile指令构建镜像,dockfile是一个文本文件,每个指令可以构建一层内容

2.容器

 1)容器是基于模板构建出来的实例

 2)Docker利用容器来运行应用(mysql,apache,ngnix)

 3)每个容器之间都是相互隔离的,可以看成是简易的linux环境

3.仓库

集中存放多个镜像文件的场所

为什么系统镜像那么小呢?

      镜像运行在宿主内核kernel,底层是一致的,只是在这基础上继续做了一些优化。

      Linux系统是由宿主内核和用户空间组成的,所以docker可以同时支持多种linux镜像,模拟多种操作系统环境

镜像的文件如何存储的?

分层存储的。

可以通过docker history查看镜像的历史

启动镜像的时候,一个新的可写 容器层 会加在到镜像的顶部

容器层可以读写,容器所有的变更都是在这层

镜像层,只允许读

Container最上面是一个可写的容器层,以及若干只读的镜像层组成,Container的数据就存放在这些层中,这样的分层结构最大的特性是Copy-On- Write(写时复制):

新的数据会直接放在最上面的容器层

如果需要修改数据,会先把镜像层的数据复制到容器层,修改后的

数据保存在容器层,镜像层不变

总结:

分层实现资源共享,写时复制实现文件隔离

Docker镜像的迁移处理

(从本地 -> 服务器)

导出容器(本质:导出镜像文件)

Docker export 容器id > 文件名.tar

导入

Docker import redis.tar redis.v1

注意事项:

  1. 镜像删除的话,导入不进去的
  2. 导入镜像的时候,如果容器一运行就退出,并且没有报错

可能的原因是:docker容器必须有一个前台进程,如果没有,容器会被认为空闲的,会自动退出;

可以使用Top,tail脚本可以挂起到前台

导入方法

Export  &&  Import

Save    &&   Load

(保存)       (载入)

  1. 导入的对象不一样

镜像名(export)

容器名(save)

2)可以回滚到历史层,保存了操作的历史和层级

3) 导出文件大

目录结构:

Redis

   Master

      Conf

      Data

      log

   Slave

   Dockfile

Ngnix

Php

当容器读取文件的时候

从最上层镜像查找,往下找,找到文件后读取并放入内存

若容器中存在,直接使用

当容器需要添加文件时

直接在最上面的容器层添加文件

容器删除文件的时候

不会真删除,而是软删除 镜像层

Docker指令

构建镜像

编写完成dockefile后,使用docker build生成镜像

指定基础镜像

From 指定基础镜像

Run指令

Run 安装一个软件包

Run 一次构建一层

Run 不要太多,尽量合并,否则,会臃肿

从公共的仓库这主动去拉取

Docker pull redis

Docker镜像创建容器

Docker run -itd --name redis-master

查看镜像

Docker image

查看所有容器

Docker ps -a

删除容器

Docker rm 容器id

进入容器

Docker exec -it redis-master bash

复制文件

Add

更高级的复制文件,可以解压缩

Copy

声明端口,方便映射

Expose

查看网络

Docker networks

查看容器详细信息

Docker inspect 容器名

查看容器的日志

Docker logs 容器名

启动服务(创建镜像时执行)

run

启动服务(容器启动的时候执行)

CMD[‘’]

CMD[ ‘/user/local/ngnix/sbin/ngnix’,’-c’ ]

入口点

EntryPoint

指定工作目录(进入容器时默认打开的目录)

WorkDir

指定当前用户

User

设置环境变量

Env

构建参数

Arg

Arg php-version

匿名卷

volume

查看默认的网络

Docker network ls

在启动容器时使用 指定网络类型

--network bridge xxx

宿主机乃至外界的其他机器通信,通过端口映射

通过iptable的nat

容器就不会分配局域网的IP

--network = none

指定自定义网络

Docker network create --subnet = 192.0.0.1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值