当前位置: 首页 > news >正文

Docker 详解与部署微服务实战

Docker 详解与部署微服务实战

主讲老师:Fox
有道笔记地址链接:https://note.youdao.com/s/8eWHV1Jr


1. Docker详解

1.1 Docker简介

Docker 是一个开源的容器化平台,可以帮助开发者将应用程序和其依赖的环境打包成一个可移植、可部署的容器。

容器化是一种虚拟化技术,通过操作系统层面的隔离实现应用程序的独立运行。

与传统虚拟机相比的优势:
  • 轻量级:容器与宿主机共享内核,启动快,资源占用少。
  • 可移植性:可在任何支持容器运行时的系统中运行。
  • 快速部署:简化打包、分发和部署流程。
  • 弹性扩展:可快速创建、启动和停止容器。
  • 环境隔离:容器之间相互隔离,安全稳定。
Docker 与传统虚拟机的区别:
  • 虚拟机:模拟完整硬件和操作系统,系统级隔离。
  • Docker:进程级隔离,共享宿主机内核。

1.2 Docker 架构

Client
├── Docker_build
├── docker pull
└── docker run

DOCKER_HOST
├── Docker daemon
├── Containers
└── Images

Registry (如 Docker Hub)

  • Docker Daemon:运行在宿主机的后台进程。
  • Client:用户界面,接受命令并与 Daemon 通信。
  • Images:只读模板,用于创建容器。
  • Container:镜像的运行实例。
  • Registry:镜像存储与分发服务(公有/私有)。

1.3 Docker 安装(以 CentOS 为例)

系统要求:

内核版本高于 3.10

uname-r
安装步骤:
  1. 更新 yum 包:
yum update -y
  1. 卸载旧版本:
sudoyum remove -y docker*
  1. 安装依赖:
yuminstall-y yum-utils
  1. 设置阿里云镜像源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast
  1. 查看可安装版本:
yum list docker-ce --showduplicates|sort-r
  1. 安装指定版本:
yuminstall-y docker-ce-3:24.0.2-1.el7.x86_64
  1. 启动并设置开机自启:
systemctl startdocker&&systemctlenabledocker
  1. 验证安装:
dockerversion
配置镜像加速器(阿里云):
  1. 创建或编辑配置文件:
sudotee/etc/docker/daemon.json<<-'EOF' { "registry-mirrors": ["https://jbw52uwf.mirror.aliyuncs.com"] } EOF
  1. 重启 Docker:
sudosystemctl daemon-reloadsudosystemctl restartdocker

1.4 Docker 使用

镜像相关命令:
  1. 搜索镜像
dockersearch java
  1. 下载镜像
dockerpull java:8dockerpull nginx
  1. 列出镜像
dockerimages
  1. 删除镜像
dockerrmi javadockerrmi$(dockerimages -q)# 删除所有
容器相关命令:
  1. 新建并启动容器
dockerrun -d -p91:80 nginx
  1. 列出容器
dockerpsdockerps-a# 包括已停止的
  1. 停止容器
dockerstop<容器ID>
  1. 强制停止容器
dockerkill<容器ID>
  1. 启动已停止的容器
dockerstart<容器ID>
  1. 查看容器信息
dockerinspect<容器ID>
  1. 查看日志
dockerlogs<容器ID>
  1. 进入容器
dockerexec-it<容器ID>/bin/bash
  1. 容器内安装工具
apt-getupdateapt-getinstallvimiputils-ping net-tools
  1. 删除容器
dockerrm<容器ID>dockerrm-f$(dockerps-a -q)# 强制删除所有

2. 使用 Dockerfile 构建 Docker 镜像

2.1 Dockerfile 常用指令

指令用途说明
FROM基础镜像
RUN构建阶段执行命令
ADD添加文件(支持URL和压缩包)
COPY拷贝文件
CMD容器启动后执行的命令
EXPOSE声明服务端口
WORKDIR设置工作目录
ENV设置环境变量
ENTRYPOINT容器入口命令
USER设置运行用户
VOLUME声明持久化目录

2.2 构建微服务镜像示例(Spring Boot Jar)

Dockerfile 内容:

FROM java:8 ADD tulingmall-member-0.0.5.jar /tulingmall-member-0.0.5.jar EXPOSE 8877 ENTRYPOINT java ${JAVA_OPTS} -jar /tulingmall-member-0.0.5.jar

构建镜像:

dockerbuild -t tulingmall-member:0.0.5.

运行容器:

dockerrun -d -p8877:8877\-eSPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=192.168.65.174:8848\-eJAVA_OPTS='-Xmx1g -Xms1g -XX:MaxMetaspaceSize=512m'\--cap-add=SYS_PTRACE\tulingmall-member:0.0.5

3. 将微服务镜像发布到阿里云镜像仓库

  1. 登录阿里云 Docker Registry
dockerlogin --username=fox666 registry.cn-hangzhou.aliyuncs.com
  1. 标记镜像
dockertag tulingmall-member:0.0.5 registry.cn-hangzhou.aliyuncs.com/fox666/tulingmall-member:0.0.5
  1. 推送镜像
dockerpush registry.cn-hangzhou.aliyuncs.com/fox666/tulingmall-member:0.0.5

4. 搭建私有 Docker 镜像仓库

4.1 使用 Docker Compose 部署私有仓库

docker-compose.yml

version:'3'services:registry:container_name:docker-registryimage:registry:2ports:-5000:5000volumes:-/data/docker-registry:/var/lib/registry

启动:

dockercompose up -d

4.2 配置 Docker Daemon 支持私有仓库

编辑/etc/docker/daemon.json

{"registry-mirrors":["https://jbw52uwf.mirror.aliyuncs.com"],"insecure-registries":["192.168.65.78:5000"]}

重启 Docker:

systemctl daemon-reload&&systemctl restartdocker

4.3 推送镜像到私有仓库

  1. 构建并标记镜像
dockerbuild -t192.168.65.78:5000/tulingmall-member:latest.
  1. 登录私有仓库
dockerlogin192.168.65.78:5000
  1. 推送镜像
dockerpush192.168.65.78:5000/tulingmall-member:latest
  1. 验证
curl-X GET http://192.168.65.78:5000/v2/_catalog

文档整理自《Docker详解与部署微服务实战.pdf》,内容涵盖Docker基础、镜像构建、容器管理、私有仓库搭建等实战内容。

如果有需要修改或者补充的地方,可以随时告诉我。
http://www.jsqmd.com/news/235151/

相关文章:

  • 1.6 ScriptableObject
  • 到处都说Claude Code和Skills,免费免注册用户使用了一下
  • 智慧边检空间智能平台建设方案——基于空间视频感知与统一空间智能底座的新一代边检监管体系
  • [微机原理与系统设计-从入门到入土] 输入输出IO
  • Flutter for OpenHarmony 实战:TextButton 文本按钮详解
  • Langfuse:开源LLM工程平台全解析
  • 基于深度学习的火焰烟雾识别系统
  • 【epub2pdf 转换器】OSError: cannot load library ‘libgobject-2.0-0‘: dlopen
  • RAG核心技术解析:检索方式与文档切片逻辑
  • RAG核心技术解析:检索方式与文档切片逻辑
  • [微机原理与系统设计-从入门到入土] 总线Bus
  • Flutter for OpenHarmony 实战:OutlinedButton 边框按钮详解
  • Flutter for OpenHarmony 实战:OutlinedButton 边框按钮详解
  • AI元人文:人机共生实验室战略提案
  • 基于yolov10的吸烟检测系统
  • 基于yolov10的吸烟检测系统
  • 2026年最新论文降ai全攻略,教你如何快速实现aigc免费降重并降低ai率。
  • RAG优化:rerank+小模型整理提升精度
  • [微机原理与系统设计-从入门到入土] 存储器Memory
  • Flutter for OpenHarmony 实战:IconButton 图标按钮详解
  • 大数据领域的政务应用
  • 飞腾系列——FT-M6678模板匹配算法的实现与优化
  • Flutter for OpenHarmony 实战:RangeSlider 范围控件详解
  • springboot个人博客系统(11677)
  • 在典型的RAG(检索增强生成)系统中,对知识库片段进行编码的**通常不是完整的LLM,而是专门用于生成文本向量表示的“文本嵌入模型” 但是也是transform 结构,仅仅是层级比较少,6-12;说
  • 如何构建生物制药企业一体化管理体系,赋能全产业链协同?
  • Flutter for OpenHarmony 实战:ElevatedButton 悬浮按钮详解
  • 学长亲荐8个AI论文平台,自考毕业论文轻松搞定!
  • Flutter for OpenHarmony 实战:RangeSlider 范围滑块详解
  • Termius用法科普