概要

Docker 是一个开源的应用容器引擎(平台),主要用于开发、交付和运行应用程序。

核心思想是将软件及其所有依赖项打包到一个标准化的单元中,从而实现“一次构建,到处运行”的目标。

本文将对 Docker核心概念、Ubuntu中安装、实际使用三方面进行介绍。力求一条龙服务,实现全链条解决方案。

Docker具体介绍,可访问以下网址:Docker中文网

在这里插入图片描述

一、核心概念

要理解 Docker,只需掌握以下三个核心概念:

  1. 镜像(Image):一个只读、多层的应用模板,包含了运行应用所需的全部代码、运行时、系统工具和库等。
  2. 容器(Container):镜像的运行实例。基于同一个镜像可以启动任意多个相互隔离的容器实例。
  3. 仓库(Repository):集中存放和分发镜像的地方(如官方的 Docker Hub),类似于应用的“应用商店”。

二、安装

针对Docker的安装,不同的操作系统,其安装方式也不尽相同。

之前,我在CentOs中安装docker后,有写过一篇文章。如果操作系统是CentOs,那么可以参考以下文章:服务器 | Docker应用开发与部署的实践以及阿里云镜像加速配置

本次安装的操作系统为:Ubuntu 24.04。

1、一键替换为国内软件镜像源

# 1. 先备份原有的源配置文件(以防万一)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 2. 将官方源替换为阿里云镜像源
# 注意:如果你是 Ubuntu 24.04,这里的 noble 正好对应;如果是其他版本,可能需要调整代号
sudo sed -i 's|http://.*archive.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list

sudo sed -i 's|http://.*security.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list

2、安装必要依赖

# 1、更新本地软件包列表索引
sudo apt update

# 2、SSL/TLS 证书验证功能、命令行下载工具、GNU 隐私保护工具
sudo apt install -y ca-certificates curl gnupg

3、添加 Docker 官方 GPG 密钥

# 1、创建用于存放第三方 APT 仓库 GPG 密钥的安全目录。
# install 比单纯的 mkdir 更强大的文件/目录创建工具
sudo install -m 0755 -d /etc/apt/keyrings

# 2、从阿里云镜像站下载 Docker 官方的 ASCII 格式公钥,并将其转换为二进制格式后保存到本地
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 3、修改刚生成的密钥文件权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg

4、设置 Docker APT 仓库

# 创建一个源列表文件,并写入阿里云的 Docker CE 仓库地址
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5、安装 Docker Engine

# 1、更新本地软件包列表索引
sudo apt update

# 2、Docker 社区版引擎、命令行工具、容器运行时、构建工具插件、多容器编排插件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 3、查看docker版本
docker --version

6、配置docker镜像仓库

# 1、配置镜像源
sudo mkdir -p /etc/docker && sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1panel.live",
    "https://docker.awsl9527.cn"
  ]
}
EOF
# 2、重新加载 systemd 管理器配置
sudo systemctl daemon-reload

# 3、重启docker
sudo systemctl restart docker

至此,Docker软件便安装且配置完成了!完结,撒花、撒花、撒花!

不对,还差一些,Docker实践的部分还没有。所以,接下来就是docker实践部分了。

问题

1、APT 包管理器被另一个进程锁定

概述:

  • 在执行以下命令安装docker Engine时,报错。
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

错误示例:

在这里插入图片描述
解决方案:

  • 通常会在几分钟内自动完成。可以稍等片刻后,重新执行安装命令。

三、Docker容器实践

针对Docker容器实践案例,有很多。诸如:Mysql、Redis等存储方面,SpringBoot等Web应用。

当然,前端项目部署也在其中,其在使用频率方面尤为突出。因此,本文的案例就选用前端项目部署的软件:Nginx。(最重要的是,简单方便,容易出效果。)

1、准备目录

为了保证以后服务器的可维护性,强烈要求按照以下目录格式配置:

# 1、前端项目目录
sudo mkdir -p /root/apps/frontend

# 2、nginx主目录、配置目录
sudo mkdir -p /root/nginx/nginx

2、准备index.html静态文件

Nginx主要用于反向代理,因此,需要准备被用户访问的静态页面。

重要:静态文件需要放在 /root/apps/frontend/test_app 目录中。

以下是具体代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>页面标题</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      body {
        min-height: 100vh;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
      }

      .container {
        text-align: center;
        padding: 40px 20px;
        background: rgba(255, 255, 255, 0.95);
        border-radius: 24px;
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
        max-width: 600px;
        width: 90%;
        animation: fadeInUp 0.6s ease-out;
      }

      @keyframes fadeInUp {
        from {
          opacity: 0;
          transform: translateY(30px);
        }
        to {
          opacity: 1;
          transform: translateY(0);
        }
      }

      h1 {
        font-size: 2rem;
        color: #333;
        margin-bottom: 24px;
        font-weight: 600;
        letter-spacing: 1px;
      }

      .image-container {
        margin-top: 20px;
        border-radius: 24px;
        overflow: hidden;
        box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
        transition: transform 0.3s ease, box-shadow 0.3s ease;
      }

      .image-container:hover {
        transform: translateY(-8px);
        box-shadow: 0 20px 50px rgba(0, 0, 0, 0.2);
      }

      img {
        display: block;
        max-width: 100%;
        height: auto;
        border-radius: 24px;
      }

      @media (max-width: 600px) {
        h1 {
          font-size: 1.5rem;
        }

        .container {
          padding: 30px 15px;
          margin: 20px;
        }
      }
    </style>
  </head>

  <body>
    <div class="container">
      <h1>恭喜你,访问成功!</h1>
      <div class="image-container">
        <img src="./20200215213910_pluso.gif" alt="成功动画" />
      </div>
    </div>
  </body>
</html>
  • 内部使用了一张Tom的动图,可以替换成其他图片。当然,原图我也放在了文章中,可自取。
  • 需要注意的是图片和index.html需要位于同级目录。

在这里插入图片描述

在这里插入图片描述

3、准备docker-compose.yaml

进入 /root/nginx 目录,创建docker-compose.yaml文件,用于编排部署nginx容器。

services:
  nginxc:
    container_name: nginxc
    restart: unless-stopped
    image: nginx:alpine       # 使用轻量级的官方 Alpine 版本
    network_mode: "host"      # 保持使用宿主机网络(注意:此模式下 ports 映射无效且多余)
    volumes:
      - ./nginx:/etc/nginx/conf.d       # 挂载你的 Nginx 站点配置文件
      - /root/apps/frontend:/apps       # 挂载前端静态文件目录

4、nginx配置文件

进入 /root/nginx/nginx 目录,创建配置文件 app_name.conf。建议每个应用使用一个单独的配置文件。

# 1、进入`/root/nginx/nginx` 
cd /root/nginx/nginx

# 2、创建app_name.conf文件
vim  app_name.conf
server {
    listen 80;
    server_name 192.168.150.116; # 这里原本需要放置域名,简单起见放了虚拟机的ip地址
    
    location / {
        alias  /apps/test_app/; # nginx容器中的静态文件位置
        index index.html;
    }
}

效果

在这里插入图片描述

四、应用场景

Docker 已经成为现代云原生应用的核心基础设施,特别适合以下场景:

  • Web 应用与微服务架构:将每个微服务独立容器化,实现服务的隔离、独立部署和管理。
  • CI/CD 流水线:提供干净、隔离且可重复的环境来运行自动化测试和部署。
  • 快速搭建开发环境:新成员加入团队时,无需花费数天配置环境,一条命令即可启动包含 MySQL、Redis 等全套依赖的开发环境。
  • 云迁移与混合云部署:凭借极高的可移植性,简化跨不同云环境和数据中心的应用迁移过程。(高级)

总结

本文主要介绍Docker核心概念、Ubuntu中安装Docker、容器的实际使用三方面。

各位再见!这里是 鳄鱼杆的空间,钓……鳄鱼的杆儿!

期待下次再会!

愿你的每一次垂钓之旅都能满载而归。

在这里插入图片描述

更多推荐