logo资料库

Docker+K8S 集群环境搭建及分布式应用部署.pdf

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
Docker+K8S 集群环境搭建及分布式 应⽤用部署 Docker 基本操作 Docker 简介 在学习 Docker 之前,我们先来⼤大致了了解下什什么是 Docker。 Docker 是⼀一个开源的容器器引擎,我们可以将任何应⽤用移植到 Docker 容器器 中,然后发布任何 Linux 服务器器上,也可以实现虚拟化。 通俗点讲,就是在容器器技术出现以前,我们要发布应⽤用到多台物理理主机 上,需要在每台物理理主机部署相同的环境,才能发布应⽤用;⽽而利利⽤用容器器技 术,我们只需要将环境和应⽤用放到容器器中,就可以很⽅方便便的发布到任意物 理理主机上。 由于 Docker 底层是基于 LXC(即 linux container)实现的虚拟化技术, 因此,Docker 只能运⾏行行在 Linux 内核操作系统之上,之所以提供了了 macos 的⽀支持,那是因为它利利⽤用了了 virtualbox 实现的。 所以,本⽂文需要的环境为 CentOS 虚拟机,读者需要事先安装该虚拟机 (CentOS 下载地址:https://www.centos.org/download/,需下载 DVD 版本)。 如果安装好虚拟机后,⽹网络没有通,可以按照以下⽅方式配置: 1.将⽹网卡设置为桥接模式(Bridged Adapter)并重启虚拟机。 2.登录虚拟机。 3.执⾏行行命令:vi /etc/sysconfig/network,添加内容: NETWORKING=yes。 4.执⾏行行命令:vi /etc/sysconfig/network-scripts//ifcfg-enp0s3,其中 enp0s3为⽹网卡名字,读者的电脑可能不不⼀一致,将ONBOOT设置为 yes。 5.重启⽹网卡:service network restart。
6.执⾏行行命令:ifconfig查看ip,若提示ifconfig命令没有找到,则需要安 装该命令,执⾏行行:yum install net-tools -y安装。 7.再次执⾏行行 ifconfig 即可看到内⽹网 ip,并执⾏行行:ping www.baidu.com, 可以判断是否有⽹网络。 Docker 安装 Docker 的安装⾮非常简单,只需要运⾏行行命令: yum install docker -y 即可。 安装完成后,运⾏行行如下命令启动 docker 并设置开机启动: chkconfig docker on service docker start 可以执⾏行行命令: docker run hello-world 来验证安装是否正确。 如安装正确,您将看下类似以下的接⼝口。 Unable to find image 'hello-world:latest' locally Trying to pull repository docker.io/library/hello-world ... latest: Pulling from docker.io/library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc Status: Downloaded newer image for docker.io/hello-world:latest WARNING: IPv4 forwarding is disabled. Networking will not work. Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/ Docker 基本命令 Docker 是运⾏行行在 Linux 内核操作系统,所以我们操作 Docker ⼀一般都是通 过命令来实现的,本节将学习 Docker 的基本命令。 Docker 有三⼤大核⼼心:镜像、容器器和核⼼心,我们学习 Docker 命令主要就是 学习它的三⼤大核⼼心。 Docker 镜像 前⾯面讲 Docker 概念就提到了了我们可以将环境容器器打包到 Docker 容器器中 执⾏行行,⽽而在容器器中执⾏行行的载体即是镜像。 1.拉取镜像 通过命令 docker pull 就可以从 Docker 仓库中拉取镜像,如果不不配置镜像 加速器器的话,Docker 的默认仓库为 Docker Hub。 例例如我们拉取 java 镜像: docker pull java 执⾏行行该命令后,docker 会默认从 Docker Hub 下载最新的 java 镜像。由 于⽹网络原因,可能需要等⼀一段时间。当出现如下信息后,说明镜像拉取完
成。 Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d Status: Downloaded newer image for docker.io/java:latest 我们还可以指定镜像版本,如: docker pull java:7 这样 docker 就会下载版本为 7 的 java 镜像。 2.查看镜像 查看镜像⾮非常简单,执⾏行行以下命令即可: docker images 我们将看到镜像列列表,如: 3.搜索镜像 通过命令 docker search 可以搜索指定镜像,如: docker search java
我们将看到 Docker Hub 包含的所有名为 java 的镜像列列表: (双指放⼤大查 看⼤大图) 4.删除镜像 我们可以通过镜像名或镜像 ID 删除镜像,基本命令为 docker rmi。 例例如删除 java:7 的镜像: docker rmi docker.io/java:7 或者 docker rmi 5dc48a6b75af 其中 5dc48a6b75af 为要删除的镜像 ID,镜像 ID 通过 docker images 获 取。 5.创建镜像 实际⽣生产中,我们要将环境应⽤用部署到 Docker 容器器中,这就需要创建其 镜像。镜像的创建主要有三种⽅方式:基于容器器、基于本地模板导⼊入和基于 Dockerfile ⽂文件。 本节主要讲解基于 Dockerfile 创建镜像,因为实际⽣生产中,我们⼤大多数是
通过 Dockerfile 来构建我们的应⽤用镜像。 我们以 nginx 为例例,从 Docker Hub 拉取 nignx 镜像并改变⾸首⻚页内容。 1.编写⽂文件命名为:Dockerfile,输⼊入如下内容: FROM nginx RUN echo '

Nginx Hello World!

' > /usr/share/nginx/html/index.html 2.在 Dockerfile ⽂文件所在⽬目录执⾏行行以下命令: docker build -t nginx . 等待⼀一段时间后,看到以下内容: Successfully built a3c8cee6140b 说明镜像创建成功,通过 docker images 可以查看到刚才创建的镜像: Docker 容器器 Docker 的另⼀一⼤大核⼼心便便是容器器,前⾯面我们讲过,我们创建或拉取的镜像 需要放到容器器⾥里里⾯面才能运⾏行行,那么怎么将镜像运⾏行行到容器器⾥里里呢? 启动容器器很简单,通过 docker run 命令即可,例例如我们运⾏行行上⼀一节构建 的 nginx 镜像: docker run -d -p 91:80 nginx 其中: d 表示后台运⾏行行。
p 指定容器器运⾏行行端⼝口,第⼀一个端⼝口为物理理主机的端⼝口,第⼆二个端⼝口为 容器器的端⼝口。因为外部访问只能访问物理理主机的端⼝口,所以我们需要 指定它。 启动完成后,可以通过浏览器器访问地址:http://192.168.31.15[91,即可看 到如下界⾯面: 我们可以通过 docker ps 命令查看启动的容器器: 有些容器器没有启动,可以通过 docker ps -a 查看所有容器器。 删除容器器 删除容器器很简单,通过命令 docker rm 即可:
docker rm 43cde802f925 其中,43cde802f925 为容器器 ID。 启动中的容器器是⽆无法删除的,如果提示删除失败,需要先通过命 令停⽌止容器器:docker stop 容器器 ID,相反,启动容器器为 docker start 容器器 ID。 进⼊入容器器 容器器创建后,如何进⼊入容器器呢?可以通过 docker exec 命令,如: docker exec -it 43cde802f925 /bin/bash 其中,43cde802f925 为容器器 ID。 Docker 仓库 K8S 集群环境搭建 本节开始,我们就将进⼊入⼀一个⾮非常神奇的世界,利利⽤用K8S快速搭建分布式 集群环境,并实现分布式系统的部署。 K8S 简介 K8S 全称 Kubernetes,是⾕谷歌开源的⼀一套⽤用于搭建分布式集群应⽤用环境 的平台,它基于 Docker,和 Docker 配合可以很⽅方便便的部署分布式应⽤用。 环境准备 由于我们是在个⼈人电脑上安装 Linux 虚拟机,资源有限,所以以⼀一台虚拟 机模拟集群环境,实际中的集群环境搭建和单机模拟是⼀一样的操作。 下⾯面就是本⽂文虚拟机的环境配置: IP[192.168.31.15 操作系统:CentOS7.4 内存:2 GB 。 集群搭建
分享到:
收藏