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. 卸载旧版本:
sudo yum remove -y docker*
  1. 安装依赖:
yum install -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. 安装指定版本:
yum install -y docker-ce-3:24.0.2-1.el7.x86_64
  1. 启动并设置开机自启:
systemctl start docker && systemctl enable docker
  1. 验证安装:
docker version
配置镜像加速器(阿里云):
  1. 创建或编辑配置文件:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://jbw52uwf.mirror.aliyuncs.com"]
}
EOF
  1. 重启 Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker

1.4 Docker 使用

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

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

构建镜像:

docker build -t tulingmall-member:0.0.5 .

运行容器:

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
docker login --username=fox666 registry.cn-hangzhou.aliyuncs.com
  1. 标记镜像
docker tag tulingmall-member:0.0.5 registry.cn-hangzhou.aliyuncs.com/fox666/tulingmall-member:0.0.5
  1. 推送镜像
docker push 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-registry
    image: registry:2
    ports:
      - 5000:5000
    volumes:
      - /data/docker-registry:/var/lib/registry

启动:

docker compose 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 restart docker

4.3 推送镜像到私有仓库

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

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


如果有需要修改或者补充的地方,可以随时告诉我。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐