前言

随着云计算技术的快速发展,传统的软件部署模式逐渐暴露出环境依赖复杂、部署效率低、扩展能力差等问题。为了解决这些问题,容器技术应运而生,其中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资源文件的编写规范,初步理解了容器编排技术在云计算环境中的重要作用。

通过实验,我深刻体会到容器技术在企业运维中的优势:

  1. 提高部署效率;
  2. 保证运行环境一致性;
  3. 降低资源消耗;
  4. 提升系统可扩展性;
  5. 便于自动化运维管理。

未来随着云原生技术的发展,Docker、Harbor、Kubernetes等技术将成为网络运维工程师和云计算工程师的重要技能。本次实验不仅提升了我的实践能力,也为后续学习云原生架构、DevOps和自动化运维奠定了良好的基础。

更多推荐