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

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

1.4 Docker 使用

镜像相关命令:
  1. 搜索镜像
bash 复制代码
docker search java
  1. 下载镜像
bash 复制代码
docker pull java:8
docker pull nginx
  1. 列出镜像
bash 复制代码
docker images
  1. 删除镜像
bash 复制代码
docker rmi java
docker rmi $(docker images -q)  # 删除所有
容器相关命令:
  1. 新建并启动容器
bash 复制代码
docker run -d -p 91:80 nginx
  1. 列出容器
bash 复制代码
docker ps
docker ps -a  # 包括已停止的
  1. 停止容器
bash 复制代码
docker stop <容器ID>
  1. 强制停止容器
bash 复制代码
docker kill <容器ID>
  1. 启动已停止的容器
bash 复制代码
docker start <容器ID>
  1. 查看容器信息
bash 复制代码
docker inspect <容器ID>
  1. 查看日志
bash 复制代码
docker logs <容器ID>
  1. 进入容器
bash 复制代码
docker exec -it <容器ID> /bin/bash
  1. 容器内安装工具
bash 复制代码
apt-get update
apt-get install vim iputils-ping net-tools
  1. 删除容器
bash 复制代码
docker rm <容器ID>
docker rm -f $(docker ps -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 内容:

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

构建镜像:

bash 复制代码
docker build -t tulingmall-member:0.0.5 .

运行容器:

bash 复制代码
docker run -d -p 8877:8877 \
  -e SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=192.168.65.174:8848 \
  -e JAVA_OPTS='-Xmx1g -Xms1g -XX:MaxMetaspaceSize=512m' \
  --cap-add=SYS_PTRACE \
  tulingmall-member:0.0.5

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

  1. 登录阿里云 Docker Registry
bash 复制代码
docker login --username=fox666 registry.cn-hangzhou.aliyuncs.com
  1. 标记镜像
bash 复制代码
docker tag tulingmall-member:0.0.5 registry.cn-hangzhou.aliyuncs.com/fox666/tulingmall-member:0.0.5
  1. 推送镜像
bash 复制代码
docker push registry.cn-hangzhou.aliyuncs.com/fox666/tulingmall-member:0.0.5

4. 搭建私有 Docker 镜像仓库

4.1 使用 Docker Compose 部署私有仓库

docker-compose.yml

yaml 复制代码
version: '3'
services:
  registry:
    container_name: docker-registry
    image: registry:2
    ports:
      - 5000:5000
    volumes:
      - /data/docker-registry:/var/lib/registry

启动:

bash 复制代码
docker compose up -d

4.2 配置 Docker Daemon 支持私有仓库

编辑 /etc/docker/daemon.json

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

重启 Docker:

bash 复制代码
systemctl daemon-reload && systemctl restart docker

4.3 推送镜像到私有仓库

  1. 构建并标记镜像
bash 复制代码
docker build -t 192.168.65.78:5000/tulingmall-member:latest .
  1. 登录私有仓库
bash 复制代码
docker login 192.168.65.78:5000
  1. 推送镜像
bash 复制代码
docker push 192.168.65.78:5000/tulingmall-member:latest
  1. 验证
bash 复制代码
curl -X GET http://192.168.65.78:5000/v2/_catalog

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

复制代码
如果有需要修改或者补充的地方,可以随时告诉我。
相关推荐
张忠琳7 小时前
【NVIDIA】 NVIDIA Container Toolkit v1.19.1 — OCI 模块超深度分析之三
云原生·容器·架构·kubernetes·nvidia
Elastic 中国社区官方博客9 小时前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana
REST_302711 小时前
告别Excel孤岛:一款任务链路可视化工具带来的真实改变
大数据·微服务·云计算·编辑器·excel·动态规划
风曦Kisaki11 小时前
#企业级docker私有仓库构建:harbor仓库与阿里云镜像仓库
阿里云·docker·容器
期待着201312 小时前
docker 安装 ,在centos7.9
运维·docker·容器
beibeix201512 小时前
CppMicroServices 核心概念:动态服务注册与模块化系统
微服务·mitk
微三云 - 廖会灵 (私域系统开发)12 小时前
电商系统从单体到微服务拆分实践:拆什么、怎么拆、拆完后怎么办
微服务·云原生·架构
骑上单车去旅行14 小时前
Docker Compose 命令完全指南:从构建到运维
docker·容器·eureka
前端Baymax15 小时前
K8s PodCrashLoopBackOff假阳性排查
云原生·容器·kubernetes
spider_xcxc15 小时前
K8s 部署学习笔记
docker·容器·kubernetes·云计算·k8s