Docker 虚拟化技术

Ⅰ、Docker 概念

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

Ⅰ-Ⅰ、Docker 关键字

C\S 架构 一次编译到处运行 Go 语言 镜像分层构建

Ⅰ-Ⅱ、Docker 镜像

镜像存储位置:/var/lib/docker/overlay2
镜像挂载方式:overlay2(当前最新版本18.09.6),之前还有版本采用aufs
镜像是分层构建的,每一层是上面一层的基础:构建镜像的时候我们要保证每一层都只包含我们的应用需要的东西,不要有包含不需要的文件

Ⅰ-Ⅲ、 Docker 容器

承载进程的拥有独立的文件系统,独立网络等资源的独立命名空间

容器和虚拟机的区别:

传统虚拟机是虚拟出一套硬件后在其上运行一整套操作系统,再在该操作系统上运行应用进程;而容器的进程是直接运行于宿主的内核,容器没有自己的内核,也没有进行硬件虚拟。

Ⅰ-Ⅳ、Docker 仓库

一个集中存储和分发镜像的服务,你可以建立自己的私有仓库,也可以使用共有仓库,比如 Docker Hub。

Ⅱ、优势

  1. 高效的利用系统资源:由于容器直接运行于宿主内核,不需要虚拟硬件,运行操作系统等开销。
  2. 快速的启动时间:可以做到秒级甚至是毫秒级启动
  3. 一致的运行环境,轻松迁移:docker镜像提供了除内核外完整的运行时环境
  4. 持续交付和部署:dockerfile使镜像构建透明化
  5. 维护和扩展:Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。

Ⅲ、Docker 安装(阿里云ECS)

# 1. 更新软件源
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# 2. 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 3. 验证 key fingerprint(符合该序列:【9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88】):
sudo apt-key fingerprint 0EBFCD88
# 4.  写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 5.  更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

Ⅳ、Docker基础操作

Ⅳ-Ⅰ、镜像

  1. 从远程仓库拉取镜像
    docker pull ubuntu:16.04
  2. 查看镜像
    docker images
  3. 删除镜像
    docker image rm [] docker rmi []

Ⅳ-Ⅱ、容器

  1. 以交互的方式启动容器
    docker run -ti -p 8080:8080 --name first bash

    -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端,-p容器端口映射到宿主机端口

  2. 以交互的方式进入容器
    docker exec -it [容器ID] bash
  3. 查看容器
    docker container ls docker ps
  4. 查看容器详情
    docker inspect [ID]
  5. 提交容器为一个新镜像
    docker commit [容器名] [镜像名]:[版本号]
  6. 删除容器
    docker rm [容器名]

Ⅴ、Docker数据管理

Ⅴ-Ⅰ、 数据卷

  1. 挂载容器内数据卷:docker run -ti --name volume1 -v /test_dir ubuntu:16.04 bash
  2. 挂载宿主机内目录为数据卷:docker run -ti --name volume2 -v /temp:/test:ro ubuntu:16.04 bash

删除容器时要删除掉相应的数据卷,不然会比较麻烦:docker rm test -v test_dir

Ⅴ-Ⅱ、 数据容器卷

Ⅵ、Dockerfile镜像定制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值