当前位置: 首页 > 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: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 进行可视化管理

相关文章:

  • 视频推拉流:EasyDSS平台直播通道重连转推失败原因排查与解决
  • Python 逆向工程:2025 年能破解什么?
  • 云上特权凭证攻防启示录:从根账号AK泄露到安全体系升级的深度实践
  • 扫雷小游戏
  • 汇川EASY系列之以太网通讯(套接字socket做主站)
  • 蓝桥杯javaB组备战第二天 题目 区间次方和 编号3382
  • Linux中grep指令
  • yum修改阿里云
  • 致远互联FE协作办公平台 存在SQL注入漏洞(DVB-2025-8942)
  • WHAT - 前端性能监控和错误追踪(Sentry 篇)
  • 爬取动态数据,爬取持久化数据
  • docker-compose Install m3e(fastgpt扩展) GPU模式
  • 官宣 | Fluss 0.6 发布公告
  • Vue 实现AI对话和AI绘图(AIGC)人工智能
  • redux_旧版本
  • Matlab 多项式拟合点法线(二维)
  • 【每日学点HarmonyOS Next知识】防止重复点击、对话框收拾拦截、自定义键盘焦点、页面层级、自定义对话框创建
  • mysql-8.0.41-winx64 手动安装详细教程(2025版)
  • 【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Tomcat 的工作原理:从启动到请求处理的流程
  • c#面试题12
  • 搭建网站 在线浏览功能/怎么成为百度推广代理商
  • 温州网站建设小公司/网站广告投放收费标准
  • 第三方平台网站的建设规划/app优化排名
  • 中企动力做的网站怎么样/昆明seo
  • 医学ppt模板下载免费/优化网站制作方法大全
  • 手机端网站的建设/百度广告竞价