Docker容器

您所在的位置:网站首页 docker容器 Docker容器

Docker容器

#Docker容器| 来源: 网络整理| 查看: 265

Docker容器介绍 1.1 docker是什么

Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托管在 GitHub 上, 基于Go语言并遵从Apache2.0协议开源。 Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率。

namespace命名空间 Mount Namespace - 用于隔离文件系统的挂载点 UTS Namespace - 用于隔离 HostName 和 DomianName IPC Namespace - 用于隔离进程间通信 PID Namespace - 用于隔离进程 cgroups资源限制

控制组(cgroups)是 Linux 内核的一个特性,主要用来对共享资源进行隔离、限制、审计等。只有

能控制分配到容器的资源,才能避免当多个容器同时运行时的对系统资源的竞争。

控制组技术最早是由 Google 的程序员在 2006 年提出,Linux 内核自 2.6.24 开始支持。

控制组可以提供对容器的内存、CPU、磁盘 IO 等资源的限制和审计管理。

1.2 容器与虚拟机对比

img

img

1.3 docker的三个重要概念

Image(镜像): 那么镜像到底是什么呢?Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 Container(容器) 容器(Container)的定义和镜像(Image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。 Repository(仓库) 镜像仓库是 Docker 用来集中存放镜像文件的地方,类似于我们之前常用的代码仓库。 通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。 我们可以通过:的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 Latest 作为默认标签。

img

1.4 docker的组成部分

docker是传统的CS架构分为docker client和docker server Docker 客户端是 Docker 用户与 Docker 交互的主要方式。当您使用 Docker 命令行运行命令时,Docker 客户端将这些命令发送给服务器端,服务端将执行这些命令。 Docker 命令使用 Docker API 。Docker 客户端可以与多个服务端进行通信。

img

组件:镜像,容器,仓库,网路,存储

镜像:把系统文件打包

虚拟化的几种架构图

Docker安装部署 2.1 国内源安装docker-ce

这里我们使用清华源: https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/ 操作步骤:

yum remove docker docker-common docker-selinux docker-engine yum install -y yum-utils device-mapper-persistent-data lvm2 wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#' /etc/yum.repos.d/docker-ce.repo #更新yum缓存 yum makecache fast yum install docker-ce -y docker version systemctl start docker 上传安装包, yum localinstall '*.rpm' 2.2 国内远镜像加速配置 官网地址 https://www.daocloud.io/mirror 加速命令 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io 需要重启docker 阿里镜像加速地址 https://cr.console.aliyun.com/cn-hangzhou/instances/repositories 加速命令 mkdir -p /etc/docker tee /etc/docker/daemon.json /usr/share/nginx/html/index.html docker exec -it 31c1de138dda /bin/bash echo "web02" > /usr/share/nginx/html/index.html

访问测试:

[root@docker01 ~]# curl 10.0.1.11:8080 web02 [root@docker01 ~]# curl 10.0.1.13:8080 web01

Docker数据卷管理 5.1 持久化数据卷

-v 宿主机目录:容器内目录 下面我们来创建一个html5小游戏

5.1.1 创建游戏代码目录 mkdir /data/xiaoniao -p cd /data/ unzip xiaoniaofeifei.zip -d xiaoniao / 5.1.2 创建容器并映射数据卷 docker run -d -p 80:80 -v /data/xiaoniao:/usr/share/nginx/html nginx:latest docker ps 5.1.3 访问游戏页面

10.0.1.11

5.2 持久化数据卷容器 --volumes-from (跟某一个已经存在的容器挂载相同的卷)

查看当前容器有哪些卷

docker volume ls

下面我们利用容器卷创建一个小游戏

5.2.1 创建一个容器卷 docker run -d -p 8080:80 --volume xiaoniao:/usr/share/nginx/html nginx:latest docker volume ls 5.2.2 查看卷的目录 docker volume inspect xiaoniao 5.2.3 复制代码目录到容器卷目录 \cp -a /data/xiaoniao/* /var/lib/docker/volumes/xiaoniao/_data/ 5.2.4 使用容器卷创建新容器 docker run -d -p 8090:80 --volume xiaoniao:/usr/share/nginx/html nginx:latest 5.3 项目实战-访问不同端口展示不同页面 前提:基于自定义镜像c7_nginx:v1 基于Centos7创建自定义nginx镜像 1.拉取一个基础镜像 docker run --name myc7 -it centos:7 /bin/bash 2.安装nginx cat > /etc/yum.repos.d/nginx.repo


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3