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


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

更多推荐