Docker与K8s:企业级容器云实战指南
前言
随着云计算技术的快速发展,传统的软件部署模式逐渐暴露出环境依赖复杂、部署效率低、扩展能力差等问题。为了解决这些问题,容器技术应运而生,其中Docker已经成为目前最主流的容器化平台,而Kubernetes(K8s)则成为容器编排领域的事实标准。
本次实验围绕Docker容器云技术展开,学习Docker基础知识、镜像管理、容器部署、私有仓库搭建、Dockerfile与Docker Compose的使用,以及Kubernetes容器编排技术的基本应用。
一、容器云基础
1.1 什么是Docker?
Docker是一种开源的容器化平台,用于开发、部署和运行应用程序。
Docker通过容器(Container)技术实现应用与运行环境的隔离,使应用能够在任何环境中快速部署和运行。
Docker与虚拟机对比
| 对比项 | Docker容器 | 虚拟机 |
|---|---|---|
| 启动速度 | 秒级 | 分钟级 |
| 资源占用 | 较少 | 较高 |
| 操作系统 | 共享宿主机内核 | 独立操作系统 |
| 部署效率 | 高 | 较低 |
| 可移植性 | 强 | 一般 |
Docker架构
Docker主要由以下部分组成:
Docker Client
|
v
Docker Daemon
|
------------------
| | |
Image Container Registry
组成说明:
- Client:客户端命令工具
- Daemon:Docker后台服务
- Image:镜像
- Container:容器
- Registry:镜像仓库
1.2 容器云部署第一阶段——基本配置
查看系统信息
uname -a
cat /etc/os-release
更新系统
yum update -y
安装Docker依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker源
yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装Docker
yum install docker-ce docker-ce-cli containerd.io -y
启动Docker
systemctl start docker
systemctl enable docker
验证安装
docker version
docker info
二、容器云应用
2.1 使用docker pull下载镜像
Docker镜像是容器运行的基础,相当于操作系统中的安装包。
下载镜像命令:
docker pull 镜像名称
查看镜像
docker images
2.1.1 docker pull举例
拉取CentOS镜像
docker pull centos
拉取Nginx镜像
docker pull nginx
拉取MySQL镜像
docker pull mysql:8.0
拉取Ubuntu镜像
docker pull ubuntu
查看结果:
docker images
输出示例:
REPOSITORY TAG
nginx latest
mysql 8.0
ubuntu latest
centos latest
2.2 容器云部署第二阶段——服务安装及命令测试
创建Nginx容器
docker run -d \
--name nginx-web \
-p 80:80 \
nginx
参数说明:
| 参数 | 作用 |
|---|---|
| -d | 后台运行 |
| –name | 容器名称 |
| -p | 端口映射 |
查看运行容器
docker ps
查看所有容器
docker ps -a
停止容器
docker stop nginx-web
启动容器
docker start nginx-web
删除容器
docker rm nginx-web
2.3 容器云部署第三阶段——私有仓库搭建及测试
在企业环境中,镜像通常存放在内部仓库,而不是直接访问Docker Hub。
下载Registry镜像
docker pull registry
创建私有仓库
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
registry
查看仓库:
curl http://IP:5000/v2/_catalog
上传镜像测试
重新打标签:
docker tag nginx localhost:5000/nginx
推送镜像:
docker push localhost:5000/nginx
验证:
curl http://localhost:5000/v2/_catalog
结果:
{
"repositories":[
"nginx"
]
}
说明私有仓库搭建成功。
三、容器化部署
3.1 Dockerfile详解
Dockerfile是自动构建镜像的脚本文件。
常见指令
FROM nginx
LABEL author="student"
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
指令解析
FROM
指定基础镜像
FROM centos:7
COPY
复制文件
COPY app.jar /app/
RUN
执行命令
RUN yum install -y net-tools
CMD
容器启动命令
CMD ["bash"]
3.2 Docker Compose概述
Docker Compose用于管理多个容器。
传统部署:
docker run ...
docker run ...
docker run ...
Compose部署:
docker-compose up -d
统一管理多个服务。
3.3 容器云部署第四阶段——Dockerfile与Docker Compose的使用
编写Dockerfile
创建网页:
<h1>Hello Docker</h1>
创建Dockerfile:
FROM nginx
COPY index.html /usr/share/nginx/html/
构建镜像:
docker build -t myweb:v1 .
运行容器:
docker run -d -p 8080:80 myweb:v1
浏览器访问:
http://服务器IP:8080
Docker Compose部署
创建:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: 123456
启动:
docker-compose up -d
查看:
docker-compose ps
关闭:
docker-compose down
3.4 Harbor企业级镜像仓库部署
Harbor是VMware开源的企业级Docker镜像仓库。
Harbor特点
- 权限管理
- 镜像复制
- Web管理界面
- 镜像扫描
- 用户认证
Harbor部署流程
下载安装包:
wget harbor-offline-installer.tgz
解压:
tar zxvf harbor-offline-installer.tgz
修改配置:
cp harbor.yml.tmpl harbor.yml
编辑:
hostname: harbor.local
安装:
./install.sh
启动:
docker-compose up -d
访问:
http://Harbor服务器IP
登录:
用户名:admin
密码:Harbor12345
四、容器化运维
4.1 修改容器仓库国内源方法
由于Docker Hub访问速度较慢,可以配置国内镜像源。
编辑:
vim /etc/docker/daemon.json
配置:
{
"registry-mirrors":[
"https://docker.m.daocloud.io"
]
}
重启:
systemctl daemon-reload
systemctl restart docker
验证:
docker info
查看是否出现:
Registry Mirrors
五、Kubernetes容器编排管理技术
5.1 什么是Kubernetes
Kubernetes简称K8s,是Google开源的容器编排平台。
主要功能:
- 自动部署
- 自动扩容
- 自动恢复
- 负载均衡
- 服务发现
Kubernetes架构
Master Node
├── API Server
├── Scheduler
├── Controller Manager
└── etcd
Worker Node
├── kubelet
├── kube-proxy
└── Pod
5.2 MicroK8s部署指导(阿里云)
MicroK8s是轻量级Kubernetes发行版。
安装Snap
yum install snapd -y
启动:
systemctl enable --now snapd.socket
安装MicroK8s
snap install microk8s --classic
查看状态:
microk8s status
查看节点
microk8s kubectl get nodes
结果:
NAME STATUS
master Ready
查看Pod
microk8s kubectl get pods -A
5.3 K8s的YAML文件解读
Kubernetes资源通常通过YAML文件定义。
示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
YAML关键字段解析
apiVersion
资源版本
apiVersion: apps/v1
kind
资源类型
kind: Deployment
metadata
资源信息
metadata:
name: nginx
spec
资源配置
spec:
replicas: 3
创建资源:
kubectl apply -f nginx.yaml
查看:
kubectl get deployment
六、实验总结
通过本次企业网络管理课程的学习与实践,我系统掌握了Docker容器技术的基本原理及应用方法,完成了Docker环境搭建、镜像管理、容器部署、私有仓库搭建、Dockerfile镜像构建以及Docker Compose多容器管理等实验内容。同时,对企业级镜像仓库Harbor的部署流程有了较为深入的认识。
在Kubernetes部分,我学习了MicroK8s的部署方法以及YAML资源文件的编写规范,初步理解了容器编排技术在云计算环境中的重要作用。
通过实验,我深刻体会到容器技术在企业运维中的优势:
- 提高部署效率;
- 保证运行环境一致性;
- 降低资源消耗;
- 提升系统可扩展性;
- 便于自动化运维管理。
未来随着云原生技术的发展,Docker、Harbor、Kubernetes等技术将成为网络运维工程师和云计算工程师的重要技能。本次实验不仅提升了我的实践能力,也为后续学习云原生架构、DevOps和自动化运维奠定了良好的基础。
更多推荐
所有评论(0)