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

复制代码
如果有需要修改或者补充的地方,可以随时告诉我。
相关推荐
mr_orange_klj2 小时前
关于k8s pod状态的AI问答(chatGPT)
云原生·容器·kubernetes
刘一说2 小时前
Spring Cloud微服务中的API网关:从Zuul到Spring Cloud Gateway的全面进化
spring·spring cloud·微服务
runfarther2 小时前
CentOS7.5下安装Docker和Docker-Compose,并支持host-gateway特性
docker·docker compose
oMcLin2 小时前
如何在 RHEL 8.4 上实现高效的 Docker 容器网络配置,优化跨容器的通信速度与可靠性?
docker·容器
人工智能训练3 小时前
UE5中如何解决角色网格体“掉下去”的问题
运维·服务器·windows·容器·ue5
DigitalOcean13 小时前
DigitalOcean容器注册表推出多注册表支持功能
容器
Mr_sun.15 小时前
微服务框架课程
微服务·云原生·架构
江湖有缘15 小时前
Jump个人仪表盘Docker化部署教程:从0到 搭建专属导航页
运维·docker·容器
Lam㊣15 小时前
Centos 7 系统docker:更换镜像源
linux·docker·centos