云计算简介

云计算最早起源于亚马逊公司,后来 NASA(美国国家航空航天局)模仿亚马逊云做了一个开源的 OpenStack 云计算平台,之后又将这个项目交给了 Apache 基金会管理。如今 OpenStack 已成为云计算的代名词之一。

云计算的种类分为三种:

IaaS

全名为:Infrastructure as a Service,基础设施即服务。是硬件的云,类似于 CPU、内存、硬盘等硬件的资源池。主要技术架构是开源的 OpenStack,同时也存在亚马逊云、谷歌云、阿里云等非开源的云。

PaaS

全名为:Platform as a Service,基础即服务。是服务的云,类似于 Tomcat、Nginx 等服务的资源池。主要技术架构是开源的 OpenShift 和 kubernetes 等。

SaaS

全名为:Software as a Service,软件即服务。是软件的云,相关的软件已经完全开发完成并进行云部署,例如微软的 OneDrive。

[步骤] Docker 本地镜像的导出和导入

注意:

在导入和导出本地 Docker 镜像之前,要先安装 Docker

正文:

步骤一:导出 Docker 本地镜像

# docker save centos:latest > centos.tar

(补充:将 latest 版本的 centos Docker 镜像导出为 centos.tar)

步骤二:导入 Docker 本地镜像

# docker load

(补充:导入 centos.tar)

[步骤] Docker 私有镜像仓库的搭建

注意:

在搭建私有 Docker 镜像仓库之前,要先安装 Docker

正文:

内容目录:

内容一:搭建私有 Dokcer 镜像仓库
1.1 下载 registry 镜像
1.2 加载并启动 registry 镜像
1.3 确认 Docker 镜像仓库搭建成功

内容二:私有 Dokcer 镜像库的使用方法
2.1 将现有的 Docker 镜像上传到私有 Docker 镜像库
2.1.1 给现有的 Docker 镜像在私有 Docker 镜像库中打上一个新的标签
2.1.2 将现有的 Docker 镜像上传到私有 Docker 镜像库
2.2 查看私有的 Docker 镜像库
2.2.1 查看私有的 Docker 镜像库中有那些镜像
2.2.2 查看私有的 Docker 镜像库中某个镜像有哪些版本
2.3 从私有的 Docker 镜像库中下载镜像

具体的内容:

内容一:搭建私有 Dokcer 镜像仓库
1.1 下载 registry 镜像

# docker pull registry

1.2 加载并启动 registry 镜像

# docker run -d -p 5000:5000 registry
43c6b8c581e9039c8b7df12bb11a89dbdc9ff0b7e00fd6d345068aa9b5af7d9f

(补充:这里以使用宿主机的 5000 端口为例)

1.3 确认 Docker 镜像仓库搭建成功

# curl 127.0.0.1:5000/v2/
{}

(补充:这里查看 127.0.0.1:5000/v2/ 为例,出现大括号 “{}” 则表示搭建成功)

内容二:私有 Dokcer 镜像库的使用方法
2.1 将现有的 Docker 镜像上传到私有 Docker 镜像库
2.1.1 给现有的 Docker 镜像在私有 Docker 镜像库中打上一个新的标签

# docker tag centos:latest 127.0.0.1:5000/v2/centos:latest

(补充:这里以将现有的 centos:latest 镜像打成 127.0.0.1:5000/v2/centos:latest 标签为例)

2.1.2 将现有的 Docker 镜像上传到私有 Docker 镜像库

# docker push 127.0.0.1:5000/centos:latest
The push refers to repository [127.0.0.1:5000/centos]
291f6e44771a: Pushed 
latest: digest: sha256:fc4a234b91cc4b542bac8a6ad23b2ddcee60ae68fc4dbd4a52efb5f1b0baad71 size: 529

(补充:这里以上传 127.0.0.1:5000/v2/centos:latest 为例)

2.2 查看私有的 Docker 镜像库
2.2.1 查看私有的 Docker 镜像库中有那些镜像

# curl  http://127.0.0.1:5000/v2/_catalog
{"repositories":["centos"]}

(补充:这里查看 127.0.0.1:5000/v2/ 为例)

2.2.2 查看私有的 Docker 镜像库中某个镜像有哪些版本

# curl  http://127.0.0.1:5000/v2/centos/tags/list
{"name":"centos","tags":["latest"]}

(补充:这里以查看 http://127.0.0.1:5000/v2 上 centos 镜像的版本为例)

2.3 从私有的 Docker 镜像库中下载镜像

# docker pull 127.0.0.1:5000/v2/centos:latest
latest: Pulling from v2/centos
Digest: sha256:fc4a234b91cc4b542bac8a6ad23b2ddcee60ae68fc4dbd4a52efb5f1b0baad71
Status: Image is up to date for 127.0.0.1:5000/v2/centos:latest
127.0.0.1:5000/v2/centos:latest

(补充:这里以下载 127.0.0.1:5000/v2/centos:latest 为例)

[步骤] Docker 自定义镜像的创建

注意:

在创建 Docker 自定义镜像之前,要先安装 Docker

正文:

步骤目录:

步骤一:基于现有的镜像进行手动配置后再创建

1.1 加载并启动 Docker 镜像
1.2 对镜像里的系统进行操作并退出
1.3 查看刚刚创建的容器
1.4 将刚刚创建的容器转换成新镜像
1.5 测试刚刚创建的新镜像是否可用

步骤二:基于现有的镜像使用配置文件修改后在创建
2.1 创建使用镜像配置文件的目录
2.2 创建镜像配置文件
2.4 编辑镜像配置文件
2.5 使用刚刚创建的镜像配置文件创建新的镜像
2.6 测试刚刚创建的新镜像是否可用

具体的操作步骤:
步骤一:基于现有的镜像进行手动配置后再创建
1.1 加载并启动 Docker 镜像

# docker run -it centos


补充:
1) 这里以加载并启动 centos 镜像为例
2) -t 代表要开启一个伪终端
3) -i 代表要保持打开并且可以进行标准输入

1.2 对镜像里的系统进行操作并退出

(步骤略)

1.3 查看刚刚创建的容器

# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
d5cd7496a72c        centos              "/bin/bash"              37 seconds ago      Exited (0) 14 seconds ago                       ecstatic_bassi

(补充:这里查看到的容器 ID 是 d5cd7496a72c)

1.4 将刚刚创建的容器转换成新镜像

# docker commit d5cd7496a72c newos:v1 

(补充:这里以通过 d5cd7496a72c 生成 v1 版本的 newos 为例)

1.5 测试刚刚创建的新镜像是否可用

# docker run -it newos

(补充:这里以运行 newos 镜像为例)

步骤二:基于现有的镜像使用配置文件修改后在创建
2.1 创建使用镜像配置文件的目录

# mkdir -p ~/newhttpd

(补充:这里以创建 newhttpd 目录为例)

2.3 将 yum 的从库文件放到镜像配置文件的目录

# cp /etc/yum.repos.d/local.repo ~/newhttpd

(补充:这里以将在次环境里可用的 yum 配置文件 /etc/yum.repos.d/local.repo 拷贝到 ~/newhttpd/ 为例)

2.3 创建镜像配置文件

# touch ~/newhttpd/Dockerfile

(补充:这里以创建 ~/newhttpd/Dockerfile 文件为例)

2.4 编辑镜像配置文件

# vim ~/newhttpd/Dockerfile

创建以下内容:

FROM centos:latest
RUN yum -y install httpd
ENV EnvironmentFile=/etc/sysconfig/httpd
WORKDIR /var/www/html/
RUN echo "test" > /var/www/html/index.html
EXPOSE 80
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]


补充:
1) FROM 要从哪一个镜像克隆而来,这里以从 centos:latest 克隆为例
2) MAINTAINER 要说明的信息
3) ENV 要设置的环境变量,这里以使用以下文件作为配置文件为例:

/etc/sysconfig/httpd

4) WORKDIR 要设置的工作目录,这里以使用以下目录作为工作目录为例:
/var/www/html/
5) RUN 在生成镜像时要执行的命令,可以有多条,这里以执行以下命令为例:

echo "test" > /var/www/html/index.html

6) CMD 容器启动时要执行的命令,只能有一条,这里以执行以下命令为例:

"/usr/sbin/httpd", "-DFOREGROUND"

7) ADD 要复制的文件
8) EXPOSE 要开放的端口,这里以使用 80 端口为例

2.5 使用刚刚创建的镜像配置文件创建新的镜像

# docker build -t newos:httpd ~/newhttpd

(补充:这里以通过 ~/newhttpd 里的配置信息生成为名 newos 版本为 httpd 的容器为例)

2.6 测试刚刚创建的新镜像是否可用

# docker run -d newos:http

(补充:这里以测试名为 newos 版本为 httpd 的容器为例)

[步骤] Docker 虚拟网桥的创建

注意:

在创建 Docker 虚拟网桥之前,要先安装 Docker

正文:

步骤一:创建 Docker 的虚拟网桥

# docker network create --subnet=172.16.0.0/24 dockernetwork

(补充:这里以创建网段为 172.16.0.0/24 名为 dockernetwork 为例)

步骤二:查看创建的虚拟网桥

# docker network list

步骤三:使用创建的虚拟网桥加载并启动 Docker 镜像

# docker run --network=dockernetwork -id nginx

(补充:这里以使用 dockernetwork 开启 nginx 镜像为例)

步骤四:创建端口映射

# docker run -p 8080:80 -id nginx

(补充:这里以将宿主机的 8080 端口映射到 nginx 容器的 80 端口为例)

步骤五:查看端口映射是否实现

# curl 127.0.0.1:8080

(补充:这里查看宿主机的 8080 端口为例)