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

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:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: postgres:latest
    environment:
      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_data

docker 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.kler.cn/a/583218.html

相关文章:

  • PostgreSQL与Oracle数据库相比有什么优势
  • sql靶场--布尔盲注(第八关)保姆级教程
  • Flash Attention 算法简介
  • openai-cua-sample-app - 使用计算机的 Agent示例应用
  • 【C语言系列】字符函数和字符串函数
  • golang算法二分查找
  • Qt开源控件库(qt-material-widgets)的编译及使用
  • 【原创】springboot+vue音乐教育培训管理系统设计与实现
  • 2.angular指令
  • AI驱动的数字供应链安全情报预警服务:云脉XSBOM
  • Token登录授权、续期和主动终止的方案(Redis+Token(非jwtToken))
  • 点云深度学习系列:PVRCNN——point-voxel融合的分割模型
  • 攻防世界web:NewsCenter(含sqlmap基本参数讲解)
  • 引入其他 YML 配置源 —— Spring Boot 中的 `import` 功能
  • Axios简单说明,快速上手
  • 3.12-2 html
  • 电商数据分析 电商平台销售数据分析 电商平台数据库设计 揭秘电商怎么做数据分析
  • hadoop框架与核心组件刨析(五)ZOOKEEPER及选举深度刨析
  • llamaindex实现企业级RAG应用(一)
  • stm32-RTC时实时钟