当前位置: 首页 > news >正文

Docker 入门与实战指南

Docker 入门与实战指南

一、Docker 简介

Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖打包成一个可移植的容器。容器可以在任何安装了 Docker 的环境中运行,确保应用的一致性和可移植性。

1.1 为什么使用 Docker?

  • 环境一致性:在不同环境中(开发、测试、生产)保持一致的运行环境。
  • 快速部署:容器启动速度快,适合微服务架构。
  • 资源隔离:容器之间相互隔离,避免资源冲突。
  • 可扩展性:轻松扩展应用实例,适应高并发场景。

二、Docker 基础

2.1 容器、镜像与仓库

  • 容器:运行中的镜像实例,可以理解为一个轻量级的虚拟机。
  • 镜像:容器的模板,包含应用程序及其依赖。
  • 仓库:存储和管理镜像的地方,可以是公共仓库(如 Docker Hub)或私有仓库(如 Nexus、Harbor)。

2.2 容器的作用与资源隔离

  • 资源隔离:容器之间相互隔离,避免资源冲突。
  • 环境一致性:确保应用在不同环境中的一致性。

三、Docker 安装

3.1 在 Ubuntu 上安装 Docker

# 更新包索引
sudo apt-get update# 安装依赖包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 添加 Docker 的 APT 仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 更新包索引
sudo apt-get update# 安装 Docker CE
sudo apt-get install docker-ce# 验证 Docker 是否安装成功
sudo docker run hello-world

3.2 在 Windows 和 macOS 上安装 Docker

  • 下载并安装 Docker Desktop。

3.3 在 CentOS 7 64 上安装 Docker

  • 参考博主的另外一篇文章 CentOS 7 64 安装 Docker。

四、Docker 基本命令

4.1 常用命令

# 查看所有运行中的容器
docker ps# 查看所有容器(包括停止的)
docker ps -a# 查看所有镜像
docker images# 拉取镜像
docker pull <镜像名称># 运行容器
docker run -d -p 8080:80 --name my_container nginx# 进入容器
docker exec -it <容器名称或ID> /bin/bash# 停止容器
docker stop <容器名称或ID># 删除容器
docker rm <容器名称或ID># 删除镜像
docker rmi <镜像ID>

4.2 查看容器日志与进入容器内部

# 查看容器日志
docker logs <容器名称或ID># 进入容器内部
docker exec -it <容器名称或ID> /bin/bash

五、Docker 网络

5.1 Docker 网络类型

  • Bridge:默认网络,容器之间可以通过桥接网络通信。
  • Host:容器使用主机的网络栈。
  • None:容器没有网络连接。

5.2 自定义网络

# 创建自定义网络
docker network create my_network# 查看网络
docker network ls# 查看网络详细信息
docker network inspect my_network

5.3 桥接模式的容器互联

# 运行容器并连接到自定义网络
docker run -d --name container1 --network my_network nginx# 运行另一个容器并连接到同一个网络
docker run -d --name container2 --network my_network nginx

六、Docker 数据管理

6.1 数据卷

数据卷允许容器与主机之间共享数据,并且数据在容器停止后仍然保留。

# 创建数据卷
docker volume create my_volume# 使用数据卷
docker run -d -v my_volume:/data nginx

6.2 数据卷挂载

# 挂载主机目录到容器
docker run -d -v /host/path:/container/path nginx

七、Dockerfile

7.1 基本概念

Dockerfile 是一个文本文件,包含一系列指令,用于构建 Docker 镜像。

7.2 常用指令

  • FROM:指定基础镜像。
  • RUN:执行命令。
  • COPY:复制文件。
  • EXPOSE:暴露端口。
  • CMD:容器启动时执行的命令。

7.3 示例:构建 SpringBoot 项目镜像

FROM openjdk:8-jdk-alpine
COPY target/myapp.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
# 构建镜像
docker build -t myapp .# 运行容器
docker run -d -p 8080:8080 --name myapp_container myapp

八、Docker Compose

8.1 基本概念

Docker Compose 是一个工具,用于定义和运行多容器的 Docker 应用程序。通过一个 YAML 文件,可以定义多个服务、网络和卷。

8.2 安装 Docker Compose

# 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose# 验证安装
docker-compose --version

8.3 使用 Docker Compose

  1. 创建 docker-compose.yml 文件:
version: '3'services:web:image: nginx:latestports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmldb:image: postgres:latestenvironment:POSTGRES_PASSWORD: example
  1. 启动服务:
docker-compose up -d
  1. 停止服务:
docker-compose down

九、Docker 私有仓库

9.1 基本概念

Docker 私有仓库用于存储和管理镜像,可以是公司内部的镜像仓库。

9.2 Nexus 镜像仓库搭建与配置

  1. 安装 Nexus:
# 下载 Nexus
wget https:// sonatype.com/download/nexus# 安装 Nexus
sudo apt-get install nexus# 启动 Nexus
sudo systemctl start nexus
  1. 配置 Nexus:
  • 访问 Nexus 管理界面:http://localhost:8081
  • 创建 Docker 私有仓库
  1. 使用 Nexus:
# 登录 Nexus
docker login nexus.example.com# 推送镜像
docker push nexus.example.com/myapp# 拉取镜像
docker pull nexus.example.com/myapp

十、Portainer 可视化界面

10.1 基本概念

Portainer 是一个开源的 Docker 管理工具,提供直观的 Web 界面,方便管理和监控 Docker 容器和集群。

10.2 安装 Portainer

# 下载 Portainer
docker volume create portainer_datadocker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

10.3 使用 Portainer

  1. 访问 Portainer 管理界面:http://localhost:9000
  2. 登录并连接到 Docker 环境
  3. 管理容器、镜像、网络和卷

十一、项目实战

11.1 微服务部署

  1. 微服务架构带来的问题

    • 服务之间的依赖管理
    • 服务的部署和扩展
  2. 微服务项目部署流程注意事项

    • 服务之间的网络通信
    • 数据卷的使用
    • 配置管理
  3. Docker 构建项目结构规划解析

    • 每个服务作为一个独立的容器
    • 使用 Docker Compose 进行服务编排
  4. 基于 Docker Compose 实现微服务部署

    • 创建 docker-compose.yml 文件
    • 启动服务
    • 管理服务

11.2 SpringBoot 项目构建与推送

  1. 构建镜像

    docker build -t myapp .
    
  2. 推送镜像

    docker push myapp
    
  3. 部署容器

    docker run -d -p 8080:8080 --name myapp_container myapp
    

11.3 Alibaba Cloud Toolkit 插件安装与使用

  1. 安装 Alibaba Cloud Toolkit 插件

    • 打开 IntelliJ IDEA
    • 进入插件市场,搜索并安装 Alibaba Cloud Toolkit
  2. 结合 Cloud Toolkit 实现项目部署

    • 配置 Docker 环境
    • 部署项目到 Docker 容器

十二、总结

Docker 是一个强大的工具,可以简化应用的部署和管理。通过本文的学习,你应该能够:

  • 安装和配置 Docker
  • 使用基本的 Docker 命令
  • 使用 Docker Compose 管理多容器应用
  • 理解 Docker 的网络和数据管理
  • 构建和推送镜像
  • 使用 Portainer 进行可视化管理

http://www.mrgr.cn/news/94093.html

相关文章:

  • 【eNSP实战】交换机配置端口隔离
  • P8683 [蓝桥杯 2019 省 B] 后缀表达式
  • 【ISP】对于ISP的关键算法补充
  • Ubuntu 24.04.2 允许 root 登录桌面、 ssh 远程、允许 Ubuntu 客户机与主机拖拽传递文件
  • Redis-缓存穿透击穿雪崩
  • 基于Harbor构建docker私有仓库
  • 静态路由实验
  • 【性能测试入门_01性能测试jmeter基础实操场景详解】
  • 使用 React 和 Ant Design 处理 Excel 和 CSV 文件
  • Linux内核实时机制19 - RT调度器2 - 更新时间 update_curr_rt
  • MySQL中有哪些索引
  • 学习C2CRS Ⅱ (Contrastive Learning Pretraining)
  • MoonSharp 文档三
  • LINUX网络基础 [九] - IP协议
  • LINUX 磁盘和文件系统管理 (二)
  • 【redis】string应用场景:缓存功能和计数功能
  • Vue 侧边栏导航栏 el-menu单个item和多个item
  • 编译skia
  • linux | Vim 命令快捷操作
  • 【漫话机器学习系列】132.概率质量函数(Probability Mass Function, PMF)