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

复制代码
如果有需要修改或者补充的地方,可以随时告诉我。
相关推荐
仙柒4156 小时前
Docker存储原理
运维·docker·容器
Sam_Deep_Thinking6 小时前
连锁门店的外卖订单平台对接
java·微服务·架构·系统架构
快乐的哈士奇9 小时前
LangFuse 自托管实战:选型理由、Docker 部署与常用配置全解析
运维·人工智能·docker·容器
weixin_4492900110 小时前
Docker + MySQL 在 Windows 11 上的本地安装部署文档
mysql·docker·容器
Ysn071910 小时前
中文乱码:在 Docker 容器中设置中文语言环境
运维·python·docker·容器
米高梅狮子11 小时前
01.CentOS-Stream-8-packstack安装OpenStack
linux·云原生·容器·kubernetes·centos·自动化·openstack
zxd02031111 小时前
EFK(Elasticsearch + Fluentd + Kibana) 日志收集系统
运维·docker·jenkins
终端行者11 小时前
Jenkins Pipeline 企业级用法 参数化构建+Ansible发布---上
docker·ansible·jenkins·cicd
@PHARAOH12 小时前
HOW - 构建一个轻量前后端一体服务
前端·微服务·服务端
亚空间仓鼠13 小时前
Docker容器化高可用架构部署方案(十三)
docker·容器·架构