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基础、镜像构建、容器管理、私有仓库搭建等实战内容。

复制代码
如果有需要修改或者补充的地方,可以随时告诉我。
相关推荐
Y3815326626 小时前
Docker Compose 服务依赖与健康检查:healthcheck 让容器按正确顺序启动
运维·docker·容器
2601_965235487 小时前
快速了解docker
docker·容器·dubbo
李昊哲小课8 小时前
Deepin 25 上安装 Docker CE 实战记录
运维·docker·容器·deepin
重生之我来学Python10 小时前
Docker套装的简介、安装、超级详细教程
linux·docker·容器·eureka·github
LRL_13 小时前
深入浅出 Kubernetes 控制器:Deployment 与 StatefulSet 核心区别全景图
云原生·容器·kubernetes
夏天拐跑了西瓜13 小时前
Spring Cloud 微服务实战(八):Hystrix熔断降级——从服务雪崩到断路器模式
spring cloud·hystrix·微服务
起名真的太难了14 小时前
Docker 项目部署
docker·容器·eureka
狼与自由14 小时前
docker 安装milvus
docker·milvus
摇滚侠14 小时前
《SpringBoot 3:入门与应用实战》第 14 章 打包与部署 制作 Docker 镜像 阅读笔记 43
spring boot·笔记·docker
MrSYJ14 小时前
Network Namespace 到底是个啥,别人再问你告诉他
docker·云原生·kubernetes